c3270 can only respond to keys that generate input on a TTY device, and it can only respond differently to combinations of keys that generate different input on a TTY device.
Most dumb terminals -- and that includes the Linux console -- do not generate any TTY input at all when the Alt, Ctrl or Shift keys are pressed. They generate input only when another key is pressed in combination with one of those keys. In addition, there is nothing in the input that indicates that the Alt or Shift key was pressed in combination with a key. The presence of the Ctrl key can be inferred by the ASCII code that is generated (the Ctrl key subtracts 0x20 from the ASCII value of the key without Ctrl).
Furthermore, most terminals generate exactly the same TTY input for a given function key (F1..F12), whether or not Shift, Ctrl or Alt are pressed. This is complicated by the fact that the curses library, which is what c3270 uses to do its I/O, does not even provide a way to convey such an event to c3270 -- there is a "Function Key 1" event, but no "Shifted Function Key 1" event and no "Alt Function Key 1" event.
First, there is wc3270, the native Windows console version of c3270.
Second, x3270 and c3270 compile and run under Cygwin, the free Unix emulator for Windows. (In fact, they are standard packages with more recent versions of Cygwin). You can get Cygwin here.
If disk space is a concern, you can run c3270 with a minimal set of Cygwin DLLs and one text file -- there is no need to install all of Cygwin.
Note that there is not a native Win32 port of x3270, nor are there concrete plans for one.
The simplest probem to fix is that you haven't told your X server that there are new fonts it can use. This is corrected with:
xset fp rehashIf this doesn't help, it is possible that your X server font path doesn't include the directory that the 3270 fonts were installed in. Run the command "xset q". The output will include an entry like:
Font Path: /usr/lib/X11/fonts/misc/,/usr/lib/X11/fonts/Speedo/,/usr/lib/X11/fonts/75dpi/,/usr/lib/X11/fonts/100dpi/x3270's fonts are usually installed in /usr/local/fonts. If this (or some variation on it) does not appear in the "xset q" output, you can try:
xset fp+ /usr/local/fonts/ xset fp rehash
You can tell exactly which keymap and keymap modifiers x3270 is using with the "About x3270" option on the "Options" menu. There is an entry labeled "Keyboard map:" which lists the keymap(s) in effect. If yours is missing, there are a number of possible causes:
xrdb $HOME/.Xdefaults
x3270.keymap: sun-k5then use xrdb to read in the file, the symbol "sun" may be defined as "1" as the file is read. This turns the above into:
x3270.keymap: 1-k5causing much confusion.
The fix is to add the following line to the top of your .Xdefaults:
#undef sun
xmodmap -e 'add Mod2 = Alt_L'If this fixes the problem, you can add it to your .xinitrc file, so it takes effect every time your start X.
x3270 -tracex3270 will create a trace file in /tmp, which will contain a dump of all of the data that x3270 sent or received, along with its interpretation. x3270 will also pop up a window to view the file while it is being created; the title of that window is the full pathname of the trace file. If you are familiar with the 3270 Data Stream protocol, you may be able to figure out the problem yourself; otherwise, after suitable editing to remove passwords and proprietary information, you may send it in (see below).
One solution is to set your TERM variable to "xterm" after you log in, and to set the number of lines and columns to match the current x3270 model number (this is done through the "stty" command or with environment variables, depending on your system).
A second solution is to create termcap entries for the 3270 terminal types. Here are some sample entries:
I2|IBM-3278-2|x3270 Emulating 3278-2:li#24:tc=xterm: I3|IBM-3278-3|x3270 Emulating 3278-3:li#32:tc=xterm: I4|IBM-3278-4|x3270 Emulating 3278-4:li#43:tc=xterm: I5|IBM-3278-5|x3270 Emulating 3278-5:li#27:co#127:tc=xterm:
x3270 can be modified to work around this problem. An unfortunate side-effect is that it will no longer be able to display APL characters, or line-drawing characters with any of the 3270 fonts.
To rebuild x3270 to work around this bug, edit the Imakefile and add a line at the top:
EXTRA_DEFINES = -DBROKEN_MACH32Then rebuild the makefile, the module "screen.o", and x3270:
rm screen.o xmkmf make depend make
When you send a question about x3270, please include the following information. It makes it much easier to narrow down the problem.