|
|
1.1 ! root 1: .RP ! 2: .TL ! 3: How to Set Up Termcap Entries for EM3277 Keyboard Mapping ! 4: .AU ! 5: Risa Galant ! 6: .AI ! 7: D. L. Buck and Associates, Inc. ! 8: .AB ! 9: .PP ! 10: The IBM 3277 terminal keyboard has many special-purpose keys unique ! 11: to it which are used by applications programs interfacing ! 12: with it. ! 13: To properly emulate the terminal, there must be a general way to ! 14: define and enter equivalents of those keys on non-IBM terminals. ! 15: This paper describes a method for doing this. ! 16: .FS ! 17: DLBA @(#)emhelp.txt 1.6 ! 18: .FE ! 19: .PP ! 20: The EM3277 package allows the system administrator or installer to ! 21: define a keyboard mapping arrangement for most ASCII asynchronous ! 22: terminals such that function keys available on that terminal may be ! 23: used to emulate other keys on the IBM terminal. ! 24: Definitions for those special keys must be placed in the ! 25: .I /etc/termcap ! 26: file, a special terminal capability database which is also used to define ! 27: the asynchronous terminal's control sequences for cursor positioning, ! 28: highlighting data, and other special features. ! 29: .AE ! 30: .LP ! 31: .I /etc/termcap ! 32: is a database which decribes terminals by describing their capabilities and ! 33: how operations are performed on them. ! 34: It is used by screen editor ! 35: .I vi ! 36: and utility library ! 37: .I curses ! 38: to determine what various character sequences sent from a ! 39: terminal mean. Used with the ! 40: .I curses ! 41: library, it allows applications programs to be terminal-independent ! 42: but still invoke screen-oriented actions such as cursor positioning, ! 43: screen erasing, and highlighting. ! 44: .LP ! 45: .I Em3277 ! 46: has a ! 47: .I help ! 48: function which examines ! 49: .I /etc/termcap ! 50: entries to display a map of the keys on a ! 51: terminal which correspond to 3270 function keys. ! 52: When the user answers the question: ! 53: .DS ! 54: Would you like help? (Y/N): ! 55: .DE ! 56: .LP ! 57: with a lower- or upper-case 'y', the following keyboard map is displayed if ! 58: the proper ! 59: .I /etc/termcap ! 60: entries have been made: ! 61: .LP ! 62: .TS ! 63: center,box; ! 64: c s s s ! 65: c s s s ! 66: c s s s ! 67: l l|l l. ! 68: Terminal: <termtype> ! 69: The keyboard map for your terminal is as follows: ! 70: ! 71: 3270 Name [termtype] Key 3270 Name [termtype] Key ! 72: _ ! 73: RESET [keyname] PF7 [keyname] ! 74: ENTER [keyname] PF8 [keyname] ! 75: CLEAR [keyname] PF9 [keyname] ! 76: BACKTAB [keyname] PF10 [keyname] ! 77: ERASE-EOF [keyname] PF11 [keyname] ! 78: ERASE-INP [keyname] PF12 [keyname] ! 79: INSERT [keyname] Shell cmd [special key],![cmd] ! 80: DELETE [keyname] FM [keyname] ! 81: PA1 [keyname] DUP [keyname] ! 82: PA2 [keyname] Stats [special key],s ! 83: PA3 [keyname] Exit [special key],q ! 84: PF1 [keyname] TAB [keyname] ! 85: PF2 [keyname] ! 86: PF3 [keyname] Resetkey [keyname] ! 87: PF4 [keyname] Help Key [keyname] ! 88: PF5 [keyname] Stat Key [keyname] ! 89: PF6 [keyname] Printkey [keyname] ! 90: .TE ! 91: .LP ! 92: The name of the terminal for which the map is made is substituted for ! 93: .I termtype. ! 94: The names of keys on that terminal which are used to perform the 3270 functions ! 95: listed are substituted for ! 96: .I keyname. ! 97: .LP ! 98: The system administrator or installer must make entries in ! 99: .I /etc/termcap ! 100: defining the character sequence generated by the key being ! 101: mapped to perform a particular 3270 function, ! 102: and the name of the key which generates that sequence. If a ! 103: particular 3270 function isn't being used (no entry has been made for it ! 104: in ! 105: .I /etc/termcap), ! 106: "No Assignment" is displayed for the keyname. ! 107: .LP ! 108: Sequence ! 109: entries in ! 110: .I /etc/termcap ! 111: are noted and saved in a table by ! 112: .I em3277's ! 113: set up routine. When the sequence arrives at the terminal (the user presses ! 114: the key which generates the sequence) ! 115: .I em3277 ! 116: looks it up in the table and matches it with the function to be performed. ! 117: Name entries in ! 118: .I /etc/termcap ! 119: are used by the ! 120: .I em_help ! 121: routine to display the name of the key which, when pressed, will cause ! 122: .I em3277 ! 123: to perform the function. ! 124: .LP ! 125: Sequence entries are made as follows: ! 126: .ID ! 127: S<i>=<sequence> ! 128: .DE ! 129: where ! 130: .I <i> ! 131: is a one-character index, 0-z, and ! 132: .I <sequence> ! 133: is the sequence of characters generated by the key. ! 134: .LP ! 135: Name entries are made as follows: ! 136: .ID ! 137: N<i>=<key name> ! 138: .DE ! 139: where ! 140: .I <i> ! 141: is a one-character index, 0-z, ! 142: and ! 143: .I ! 144: <key name> ! 145: .R ! 146: is the name of the key which generates the sequence. ! 147: .LP ! 148: .I em_help ! 149: constructs key name labels and, using ! 150: .I termcap ! 151: functions, retrieves them from the ! 152: .I termcap ! 153: database ! 154: .I (/etc/termcap). ! 155: .LP ! 156: 3270 function keys should be defined as follows: ! 157: .LP ! 158: .TS ! 159: center,box; ! 160: l|c|l|c|l|c|l|c. ! 161: Termcap Name Function Label Termcap Name Function Label ! 162: _ ! 163: S0 RESET N0 P5 PF5 Nf ! 164: S1 ENTER N1 P6 PF6 Ng ! 165: S2 CLEAR N2 P7 PF7 Nh ! 166: S3 BACKTAB N3 P8 PF8 Nj ! 167: S4 ERASE_EOF N4 P9 PF9 Nk ! 168: S5 ERASE_INP N5 Pa PF10 Nm ! 169: S6 INSERT N6 Pb PF11 Nn ! 170: S7 DELETE N7 Pc PF12 No ! 171: A1 PA1 N8 S0 Shell Command Np ! 172: A2 PA2 N9 S9 FM Nq ! 173: A3 PA3 Na S8 DUP Nr ! 174: P1 PF1 Nb S0 Statistics Ns ! 175: P2 PF2 Nc S0 Exit Nt ! 176: P3 PF3 Nd tc TAB Nu ! 177: P4 PF4 Ne SZ Resetkey NZ ! 178: SH Helpkey NH ST Statkey NT ! 179: SP Printkey NP ! 180: .TE ! 181: .LP ! 182: To illustrate, let's say that your terminal's keyboard has some function ! 183: keys, F1 through F10, which you'd like to use as 3270 function keys ! 184: PF1 through PF10. By looking in the manual for your terminal, or by ! 185: using the ! 186: .I od(1) ! 187: utility, you've determined that F1 generates the sequence ESC?a, F2 ! 188: generates ESC?b, F3 generates ESC?c, etc. So, using the above table, ! 189: you make entries in ! 190: .I /etc/termcap ! 191: for the key sequences as follows: ! 192: .IP ! 193: :P1=\\E?a:P2=\\E?b:P3=\\E?c:P4=\\E?d:.... ! 194: .LP ! 195: Still using the above table, you make the name entries as follows: ! 196: .IP ! 197: :Nb=F1:Nc=F2:Nd=F3:Ne=F4:.... ! 198: .LP ! 199: When you call on ! 200: .I em_help ! 201: to print a keyboard map, it'll tell you that PF1 is F1, PF2 is F2, etc. ! 202: .LP ! 203: To illustrate further, suppose that there are Zentec Zephyr ! 204: terminals at your installation, ! 205: and you have determined that you'll use function keys labeled F1 through F12 for ! 206: 3270 functions PF1 through PF12. ! 207: To use the keyboard map facility of the ! 208: .I em_help ! 209: module, you make entries in ! 210: .I /etc/termcap's ! 211: zephyr description as follows: ! 212: .LP ! 213: .DS ! 214: :Nb=F1:Nc=F2:Nd=F3:Ne=F4:Nf=F5:Ng=F6:Nh=F7:\\\\ ! 215: :Nj=F8:Nk=F9:Nm=F10:Nn=F11:No=F12: ! 216: .DE ! 217: .LP ! 218: The following partial ! 219: .I /etc/termcap ! 220: entry for the Zentec Zephyr terminal should give you an idea as to how to ! 221: make key name entries: ! 222: .DS L ! 223: z1|zeph|zephyr|zentec zephyr:\\\\ ! 224: :N0=F16,r:N1=New Line:N2=Clear Page:N3=BACKTAB:N4=Line Delete:\\\\ ! 225: :N5=Line Clear:N6=INS:N7=DEL:N8=F13:N9=F14:Na=F15:\\\\ ! 226: :Nb=F1:Nc=F2:Nd=F3:Ne=F4:Nf=F5:Ng=F6:Nh=F7:Nj=F8:Nk=F9:Nm=F10:\\\\ ! 227: :Nn=F11:No=F12:Np=F16,!<cmd>:Ns=F16,s:Nt=F16,q:Nu=TAB:\\\\ ! 228: :Nq=Shift-F1:Nr=Shift-F2: .... ! 229: .DE ! 230: .LP ! 231: .bp ! 232: .LP ! 233: The ! 234: .I help ! 235: facility will produce the following keyboard map: ! 236: .TS ! 237: center,box; ! 238: c s s s ! 239: c s s s ! 240: c s s s ! 241: c c|c c ! 242: l l|l l. ! 243: Terminal: zentec zephyr ! 244: The keyboard map for your terminal is as follows: ! 245: ! 246: 3270 Name zentec zephyr Key 3270 Name zentec zephyr Key ! 247: _ ! 248: RESET F16,r PF7 F7 ! 249: ENTER New Line PF8 F8 ! 250: CLEAR Clear Page PF9 F9 ! 251: BACKTAB BACKTAB PF10 F10 ! 252: ERASE-EOF Delete Line PF11 F11 ! 253: ERASE-INP Clear Line PF12 F12 ! 254: INSERT INS Shell cmd F16,!<cmd> ! 255: DELETE DEL FM Shift-F1 ! 256: PA1 F13 DUP Shift-F2 ! 257: PA2 F14 Stats F16,s ! 258: PA3 F15 Exit F16,q ! 259: PF1 F1 TAB TAB ! 260: PF2 F2 ! 261: PF3 F3 Resetkey No Assignment ! 262: PF4 F4 Help Key No Assignment ! 263: PF5 F5 Stat Key No Assignment ! 264: PF6 F6 Printkey No Assignment ! 265: .TE ! 266: .SH ! 267: SEE ALSO: ! 268: .DS ! 269: TERMCAP(5) ! 270: od(1) ! 271: .DE
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.