Why can't I map the Shift key in c3270?

Question
Why can't I map the Shift key in c3270?

Answer
That is because c3270 runs on dumb terminals, not on graphics displays. Even when c3270 really is running on a graphics display, it is running on top of an emulator program such as Xterm that is acting like a dumb terminal.

A dumb terminal is a CRT-based, serial-line-connected character display device from the 1970s. They are derived from even older devices (Teletypes), which produced hard copy on a roll of paper.

Dumb terminals are very limited in what they generate when a key is pressed. Unlike a PC keyboard, dumb terminals do not send anything to the computer when a modifier key such as Ctrl or Shift is pressed. They only send something when Ctrl or Shift is pressed in combination with a data key. And they only send one piece of data for a key press, not separate events for pressing and releasing a key.

Furthermore, the Crtl and Shift keys do not apply to all data keys. Ctrl is used to generate ASCII codes 1 through 31, which it does by subtracting 64 from the ASCII code of the (upper-case) data key it is pressed with. So Ctrl-a generates 1 by subtracting 64 from the ASCII code for upper-case A (65). This continues through Ctrl-z, which generates 26 by subtracting 64 from the ASCII code for upper-case Z (90). The last valid Ctrl combination is Ctrl-_, which is 91 (ASCII for _), minus 64, which is 31. Pressing Ctrl with a key that is outside the range of ASCII 65 through 91 produces nothing.

Similarly, the Shift key is used only to select between upper- and lower-case letters and keys with multiple symbols on them. So Shift distinguishes between ; and : (which appear on the same key on US keyboards), but is does not affect the operation of the Space key, the Tab key, or any of the F keys (F1, F2, etc.).

So c3270 cannot have different actions for Tab and Shift-Tab because it literally cannot see the difference between them. They both look like the ASCII TAB character (9).

Hey, what about Alt?
c3270 does allow the Alt modifier to be used in keymaps. This is because many terminal emulators implement the Alt key by turning it into a two-character sequence: the ESC character (27) followed by the data key that was pressed. If your terminal emulator handles Alt this way, then c3270 can use Alt in its keymaps with it.