|
|
1.1 ! root 1: nnkkbb -- Device Driver ! 2: ! 3: ! 4: The COHERENT device-driver nnkkbb supports industry-standard 83-, 101-, and ! 5: 102-key AT-protocol keyboards attached as the computer console. Unlike kkbb, ! 6: the other COHERENT keyboard driver, nnkkbb lets you define both the layout of ! 7: the keyboard and the values returned by function keys. It also lets you ! 8: change layout and function-key bindings by using the special keyboard ! 9: mapping programs kept in directory /ccoonnff/kkbbdd. This directory contains the C ! 10: source code for the mapping tables, as well as a MMaakkeeffiillee that helps you ! 11: rebuild the mapping programs. See the Lexicon article kkeeyybbooaarrdd ttaabblleess for ! 12: details. ! 13: ! 14: _K_e_r_n_e_l _V_a_r_i_a_b_l_e_s ! 15: Please note that the COHERENT 286 kernel references variables with a ! 16: trailing underscore character; for example, aattppaarrmm_. The COHERENT 386 ! 17: kernel, however, does _n_o_t use a trailing underscore; for example, aattppaarrmm. ! 18: ! 19: The following descriptions apply to both COHERENT 286 and COHERENT 386, but ! 20: the notation will be in the COHERENT-386 form. ! 21: ! 22: _I_n_t_e_r_n_a_l _S_t_r_u_c_t_u_r_e ! 23: The following paragraphs describe the internal structure of the nnkkbb driver. ! 24: This information is of interest mainly to persons who wish to study the ! 25: design of device drivers. ! 26: ! 27: nnkkbb understands the following ``shift'' and ``lock'' keys: ! 28: ! 29: ssccrroollll Scroll lock ! 30: nnuumm Keypad NUM lock ! 31: ccaappss Shift or CAPS lock ! 32: llaalltt Left ALT key ! 33: rraalltt Right ALT key ! 34: llsshhiifftt Left SHIFT key ! 35: rrsshhiifftt Right SHIFT key ! 36: llccttrrll Left CTRL key ! 37: rrccttrrll Right CTRL key ! 38: aallttggrr ALT Graphic key (non-US keyboards) ! 39: ! 40: nnkkbb records an internal shift state, as defined by the current positions of ! 41: the shift and lock keys. The shift state is a logical combination of ! 42: internal states SSHHIIFFTT, CCTTRRLL, AALLTT, and AALLTT_GGRR. The llsshhiifftt and rrsshhiifftt keys ! 43: combine to form the current SSHHIIFFTT state for non-alphabetic keys. ! 44: Alphabetic keys generally use the current state of the ccaappss lock key in ! 45: addition to llsshhiifftt and rrsshhiifftt. Numeric keys found on the keypad generally ! 46: use the state of the nnuumm lock key combined with llsshhiifftt and rrsshhiifftt. The two ! 47: ``control'' keys, llccttrrll and rrccttrrll, form the internal CCTTRRLL state. In a ! 48: similar manner, the two ``alt'' keys, llaalltt and rraalltt, form the internal AALLTT ! 49: state. Note that 102-key keyboards generally replace the rraalltt key with the ! 50: aallttggrr key, to allow access to the alternate graphics characters found on ! 51: some keyboards. ! 52: ! 53: nnkkbb lets you configure or read the internal mapping tables via the ! 54: following iiooccttll() requests, as defined in header file <ssggttttyy.hh>: ! 55: ! 56: TTIIOOCCGGEETTFF Get function key bindings ! 57: TTIIOOCCSSEETTFF Set function key bindings ! 58: TTIIOOCCGGEETTKKBBTTGet keyboard table bindings ! 59: TTIIOOCCSSEETTKKBBTTSet keyboard table bindings ! 60: ! 61: Requests TTIIOOCCGGEETTFF and TTIIOOCCSSEETTFF reference a data structure of type FFNNKKEEYY, ! 62: which is a ttyyppeeddeeff defined in header file <ssyyss/kkbb.hh>. Structure member ! 63: kk_ffnnvvaall is a character array that contains a series of contiguous function ! 64: key/value bindings; the end of the bindings is marked by manifest constant ! 65: DDEELLIIMM. You can use any value other than DDEELLIIMM as part of a function-key ! 66: binding. Structure member kk_nnffkkeeyyss indicates how many function keys have ! 67: associated entries in kk_ffnnvvaall. Function keys are numbered from zero through ! 68: kk_nnffkkeeyyss-1. ! 69: ! 70: _D_i_s_a_b_l_i_n_g <_C_t_r_l><_A_l_t><_D_e_l> ! 71: By convention, function-key 0, when enabled, causes the computer system to ! 72: reboot. This function key is usually bound to the key sequence ! 73: <ccttrrll><aalltt><ddeell>, but you can disable it by setting the value of driver- ! 74: variable KKBBBBOOOOTT to zero. To do so, use the following command: ! 75: ! 76: /conf/patch /coherent KBBOOT=0 ! 77: ! 78: Requests TTIIOOCCGGEETTKKBBTT and TTIIOOCCSSEETTKKBBTT reference an array that contains ! 79: MMAAXX_KKEEYYSS occurrences of data structure KKBBTTBBLL, which is a ttyyppeeddeeff defined in ! 80: header file <ssyyss/kkbb.hh>. Structure member kk_kkeeyy contains the _s_c_a_n _c_o_d_e _s_e_t ! 81: _t_h_r_e_e code value for the desired key. Header file <ssyyss/kkbbssccaann.hh> contains ! 82: manifest (symbolic) constants of the form KK__n_n_n, which map AT keyboard ! 83: _p_h_y_s_i_c_a_l key number _n_n_n to the corresponding scan-code set-three value ! 84: generated by the keyboard. Note that the nnkkbb driver disables the scan-code ! 85: translation that the keyboard controller normally performs, as well as ! 86: setting the keyboard to scan code set three. ! 87: ! 88: Structure member kk_vvaall is a nine-element array that contains the key ! 89: mappings that correspond to the following index values and shift states: ! 90: ! 91: 00 BBAASSEE ! 92: 11 SSHHIIFFTT ! 93: 22 CCTTRRLL ! 94: 33 CCTTRRLL_SSHHIIFFTT ! 95: 44 AALLTT ! 96: 55 AALLTT_SSHHIIFFTT ! 97: 66 AALLTT_CCTTRRLL ! 98: 77 AALLTT_CCTTRRLL_SSHHIIFFTT ! 99: 88 AALLTT_GGRR ! 100: ! 101: Structure member kk_ffllaaggss contains mode information for the given key. One ! 102: field in kk_ffllaaggss indicates the _c_l_a_s_s of key. This sub-field lets you ! 103: specify whether a key is a ``shift'' key (as defined above), a special or ! 104: programmable ``function'' key, or a ``regular'' key. The following ! 105: symbolic constants specify the _c_l_a_s_s of key: ! 106: ! 107: SS The specified key is a ``shift'' or ``lock'' key. Note that all ! 108: entries in array kk_vvaall must be identical for a ``shift'' or ``lock'' ! 109: key to work correctly. ! 110: ! 111: FF The specified key is a ``function'' or special key. The value of all ! 112: elements of array kk_vvaall must specify a function key number. See ! 113: header file <kkbb.hh> for a list of predefined function keys. ! 114: ! 115: OO The specified key is ``regular'' and requires no special processing. ! 116: ! 117: The next sub-field of kk_ffllaaggss specifies the _t_y_p_e of key, as specified in ! 118: the AT keyboard technical reference. The _t_y_p_e sub-field specifies under ! 119: what conditions a given key will generate an interrupt. The possible ! 120: choices are: ! 121: ! 122: MM Make: generate an interrupt only upon key ``make'' (i.e., when the key ! 123: is depressed). This mode is useful for keys which do not repeat. ! 124: Note that using this mode with ``shift'' keys stops you from ! 125: unshifting upon release of the key! ! 126: ! 127: TT Typematic: generate an interrupt when the key is depressed, and ! 128: generate subsequent key-depression interrupts while the key is ! 129: depressed. The rate at which interrupts are generated is specified by ! 130: the typematic rate of the keyboard. This type is usually associated ! 131: with a ``regular'' key. ! 132: ! 133: MMBB Make/Break: generate an interrupt when the key is depressed, and when ! 134: it is released. No additional interrupts are generated no matter how ! 135: long the key is depressed. This mode is used for ``shift'' keys. ! 136: ! 137: TTMMBB Typematic/Make/Break: generate an interrupt when the key is first ! 138: depressed; generate subsequent key depression interrupts while the key ! 139: remains depressed; and generate an interrupt when the key is released. ! 140: ! 141: The last sub-field of kk_ffllaaggss specifies the _l_o_c_k keys, if any, that affect ! 142: the specified key: ! 143: ! 144: CC The ccaappss lock key that affects this key. If the specified key is ! 145: depressed while ccaappss lock is active, it is equivalent to having used ! 146: either of the SHIFT keys with this key. When ccaappss lock is in effect, ! 147: use of either of the SHIFT keys temporarily toggles the state of the ! 148: ccaappss lock. ! 149: ! 150: NN The nnuumm lock key affects this key. If the specified key is depressed ! 151: while nnuumm lock is active, it is equivalent to having used either of ! 152: the SHIFT keys in conjunction with the specified key. When nnuumm lock ! 153: is in effect, use of either of the SHIFT keys temporarily toggles the ! 154: state of the nnuumm lock. ! 155: ! 156: _P_r_o_b_l_e_m_s _W_i_t_h _I_n_c_o_m_p_a_t_i_b_l_e _K_e_y_b_o_a_r_d_s ! 157: If you are experiencing problems with respect to key mappings, and you ! 158: installed one of the loadable keyboard mapping tables from the keyboard ! 159: selection menu, you may have an incompatible keyboard. Please note that ! 160: the COHERENT nnkkbb driver (and loadable tables) only work with well- ! 161: engineered keyboards, such as those built by IBM, Cherry, MicroSwitch, or ! 162: Keytronics; when used with a poorly engineered ``clone'' keyboard, it may ! 163: not work correctly. ! 164: ! 165: The preferred action is to replace the inferior keyboard with one made by ! 166: one of the above-named manufacturers. If, however, you wish to use an ! 167: inferior keyboard with COHERENT, your best bet is to re-install COHERENT ! 168: and select the kkbb driver instead of nnkkbb. kkbb is not loadable and supports ! 169: only the U.S., German, and French keyboard layouts. ! 170: ! 171: If you do not wish to replace your keyboard or re-install COHERENT, then ! 172: the following _m_a_y help you cope with your keyboard's problems. ! 173: ! 174: 11. If the shift or control keys seem to ``stick'' in the oonn or ddoowwnn ! 175: postition, you can try to fix the keyboard mapping table that ! 176: corresponds to your country. For example, if you selected the U.S. ! 177: keyboard mapping table during installation but find that the right shift ! 178: or control key seems to stay down after you press it for the first time, ! 179: edit file /ccoonnff/kkbbdd/uuss.cc. To fix the right shift key, change the line ! 180: that reads: ! 181: ! 182: {K_57,rshift,rshift,rshift,rshift,rshift,rshift,rshift,rshift,rshift, S|MB }, ! 183: to: ! 184: ! 185: {K_57,none, none, none, none, none, none, none, none, none, O|MB }, ! 186: To fix the right control key, change the line that reads ! 187: ! 188: {K_64, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, rctrl, S|MB }, ! 189: to: ! 190: ! 191: {K_64,none, none, none, none, none, none, none, none, none, O|MB }, ! 192: This makes these keys inoperative. This, of course, is less than ! 193: desirable, but it will at least prevent you from accidently forcing your ! 194: keyboard into a shift or control state from which you cannot exit. ! 195: ! 196: Once you modified the keyboard table, rebuild the keyboard executable ! 197: that corresponds to the modified table, as described above and in the ! 198: Lexicon article kkeeyybbooaarrdd ttaabblleess. Thereafter, you can enter the name of ! 199: the newly created executable and it will load the modified keyboard ! 200: table into the keyboard driver. This also happens automatically at boot ! 201: time. ! 202: ! 203: 22. If one or two keys are transposed, have no output, or output the ! 204: incorrect value, you must (a) figure out which key location is ! 205: incorrect, (b) decide what the correct value should be for all key ! 206: states, (c) edit the file in directory /ccoonnff/kkbbdd that corresponds to ! 207: your selection, (d) rebuild the keyboard table executable, and (e) ! 208: reload the keyboard table by invoking the newly created executable. ! 209: ! 210: As noted above, the easiest solution is to replace the keyboard. ! 211: ! 212: _S_e_e _A_l_s_o ! 213: ddeevviiccee ddrriivveerrss, ffnnkkeeyy, kkbb.hh, kkeeyybbooaarrdd ttaabblleess ! 214: _T_e_c_h_n_i_c_a_l _R_e_f_e_r_e_n_c_e _f_o_r _t_h_e _I_B_M _P_e_r_s_o_n_a_l _C_o_m_p_u_t_e_r _A_T, IBM Corporation, ! 215: 1984. ! 216: _M_u_l_t_i-_F_u_n_c_t_i_o_n _K_e_y_b_o_a_r_d_s: _L_a_y_o_u_t_s, Cherry Electrical Products Corp. ! 217: ! 218: _N_o_t_e_s ! 219: With release 3.2 of COHERENT, nnkkbb became the standard keyboard driver, ! 220: replacing the kkbb driver used in earlier releases. Please note that either ! 221: nnkkbb or kkbb can be linked into the COHERENT kernel, like most other COHERENT ! 222: device drivers. Neither driver is found in directory /ddrrvv; this directory ! 223: is reserved for loadable device drivers, such as those for the COM ports or ! 224: for the shared-memory driver. The COHERENT Device Driver Kit contains ! 225: tools and information to rebuild the COHERENT kernel, which is necessary if ! 226: you wish to switch keyboard drivers. ! 227: ! 228: The main difference between nnkkbb and kkbb is that nnkkbb uses a ``supplemental'' ! 229: process to interpret keystrokes. This permits COHERENT users to switch ! 230: among flavors of international keyboards with a minimum of difficulty. As ! 231: noted above, the source code for these supplemental programs is kept in ! 232: directory /ccoonnff/kkbbdd. See the Lexicon article on kkeeyybbooaarrdd ttaabblleess for ! 233: details on how to modify, compile, and load one of these keyboard- ! 234: interpretation programs. ! 235: ! 236: Please note, finally, that if you attempt to use a keyboard interpreter ! 237: with kkbb, it will fail with an error message.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.