2012-02-18 02:05:04 +01:00
|
|
|
/* Keymap for Portuguese keyboards */
|
|
|
|
|
|
|
|
/* scan-code !Shift Shift Alt AltGr Alt+Sh Ctrl */
|
Input infrastructure, INPUT server, PCKBD driver
This commit separates the low-level keyboard driver from TTY, putting
it in a separate driver (PCKBD). The commit also separates management
of raw input devices from TTY, and puts it in a separate server
(INPUT). All keyboard and mouse input from hardware is sent by drivers
to the INPUT server, which either sends it to a process that has
opened a raw input device, or otherwise forwards it to TTY for
standard processing.
Design by Dirk Vogt. Prototype by Uli Kastlunger.
Additional changes made to the prototype:
- the event communication is now based on USB HID codes; all input
drivers have to use USB codes to describe events;
- all TTY keymaps have been converted to USB format, with the effect
that a single keymap covers all keys; there is no (static) escaped
keymap anymore;
- further keymap tweaks now allow remapping of literally all keys;
- input device renumbering and protocol rewrite;
- INPUT server rewrite, with added support for cancel and select;
- PCKBD reimplementation, including PC/AT-to-USB translation;
- support for manipulating keyboard LEDs has been added;
- keyboard and mouse multiplexer devices have been added to INPUT,
primarily so that an X server need only open two devices;
- a new "libinputdriver" library abstracts away protocol details from
input drivers, and should be used by all future input drivers;
- both INPUT and PCKBD can be restarted;
- TTY is now scheduled by KERNEL, so that it won't be punished for
running a lot; without this, simply running "yes" on the console
kills the system;
- the KIOCBELL IOCTL has been moved to /dev/console;
- support for the SCANCODES termios setting has been removed;
- obsolete keymap compression has been removed;
- the obsolete Olivetti M24 keymap has been removed.
Change-Id: I3a672fb8c4fd566734e4b46d3994b4b7fc96d578
2013-09-28 14:46:21 +02:00
|
|
|
/* ==================================================================== */
|
|
|
|
K(A) = { L('a'), 'A', A('a'), 'a', 'A', C('A') },
|
|
|
|
K(B) = { L('b'), 'B', A('b'), 'b', 'B', C('B') },
|
|
|
|
K(C) = { L('c'), 'C', A('c'), 'c', 'C', C('C') },
|
|
|
|
K(D) = { L('d'), 'D', A('d'), 'd', 'D', C('D') },
|
|
|
|
K(E) = { L('e'), 'E', 128, 128, 'E', C('E') },
|
|
|
|
K(F) = { L('f'), 'F', A('f'), 'f', 'F', C('F') },
|
|
|
|
K(G) = { L('g'), 'G', A('g'), 'g', 'G', C('G') },
|
|
|
|
K(H) = { L('h'), 'H', A('h'), 'h', 'H', C('H') },
|
|
|
|
K(I) = { L('i'), 'I', A('i'), 'i', 'I', C('I') },
|
|
|
|
K(J) = { L('j'), 'J', A('j'), 'j', 'J', C('J') },
|
|
|
|
K(K) = { L('k'), 'K', A('k'), 'k', 'K', C('K') },
|
|
|
|
K(L) = { L('l'), 'L', A('l'), 'l', 'L', C('L') },
|
|
|
|
K(M) = { L('m'), 'M', A('m'), 'm', 'M', C('M') },
|
|
|
|
K(N) = { L('n'), 'N', A('n'), 'n', 'N', C('N') },
|
|
|
|
K(O) = { L('o'), 'O', A('o'), 'o', 'O', C('O') },
|
|
|
|
K(P) = { L('p'), 'P', A('p'), 'p', 'P', C('P') },
|
|
|
|
K(Q) = { L('q'), 'Q', A('q'), 'q', 'Q', C('Q') },
|
|
|
|
K(R) = { L('r'), 'R', A('r'), 'r', 'R', C('R') },
|
|
|
|
K(S) = { L('s'), 'S', A('s'), 's', 'S', C('S') },
|
|
|
|
K(T) = { L('t'), 'T', A('t'), 't', 'T', C('T') },
|
|
|
|
K(U) = { L('u'), 'U', A('u'), 'u', 'U', C('U') },
|
|
|
|
K(V) = { L('v'), 'V', A('v'), 'v', 'V', C('V') },
|
|
|
|
K(W) = { L('w'), 'W', A('w'), 'w', 'W', C('W') },
|
|
|
|
K(X) = { L('x'), 'X', A('x'), 'x', 'X', C('X') },
|
|
|
|
K(Y) = { L('y'), 'Y', A('y'), 'y', 'Y', C('Y') },
|
|
|
|
K(Z) = { L('z'), 'Z', A('z'), 'z', 'Z', C('Z') },
|
|
|
|
K(1) = { '1', '!', A('1'), '|', '!', C('A') },
|
|
|
|
K(2) = { '2', '"', '@', '@', '"', C('@') },
|
|
|
|
K(3) = { '3', '#', A(156), 156, 0372, C('C') },
|
|
|
|
K(4) = { '4', '$', A('4'), 0x15, '$', C('D') },
|
|
|
|
K(5) = { '5', '%', A('5'), '5', '%', C('E') },
|
|
|
|
K(6) = { '6', '&', A('6'), 0252, '&', C('F') },
|
|
|
|
K(7) = { '7', '/', '{', '{', '/', C('G') },
|
|
|
|
K(8) = { '8', '(', A('8'), '[', '(', C('H') },
|
|
|
|
K(9) = { '9', ')', A('9'), ']', ')', C('I') },
|
|
|
|
K(0) = { '0', '=', 125, 125, '=', C('@') },
|
|
|
|
K(ENTER) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
|
|
|
|
K(ESCAPE) = { C('['), C('['), CA('['),C('['), C('['), C('[') },
|
|
|
|
K(BACKSPACE) = { 127, 127, 127, 127, 127, C(127) },
|
|
|
|
K(TAB) = { C('I'), C('I'), CA('I'),C('I'), C('I'), C('I') },
|
|
|
|
K(SPACEBAR) = { ' ', ' ', A(' '), ' ', ' ', C('@') },
|
|
|
|
K(DASH) = { '\'', '?', A('\''),'?', '?', C('_') },
|
|
|
|
K(EQUAL) = { 174, 175, 174, 174, 0250, C('@') },
|
|
|
|
K(OPEN_BRACKET) = { '+', '*', A('`'), '[', '^', C('[') },
|
|
|
|
K(CLOSE_BRACKET) = { '\'', 96, '\'', '\'', '*', C(']') },
|
|
|
|
K(BACKSLASH) = { '~', '^', A(0207),'}', 000, C('@') },
|
|
|
|
K(SEMICOLON) = { 135, 128, 135, 135, 135, 135 },
|
|
|
|
K(APOSTROPH) = { 167, 166, 167, 167, 167, C('@') },
|
|
|
|
K(GRAVE_ACCENT) = { '\\', '|', A(0247),'\\', 0246, C('@') },
|
|
|
|
K(COMMA) = { ',', ';', A(','), ',', ';', C('@') },
|
|
|
|
K(PERIOD) = { '.', ':', A('.'), '.', ':', C('@') },
|
|
|
|
K(SLASH) = { '-', '_', '-' , '-', '_', C('@') },
|
|
|
|
K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK },
|
|
|
|
K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 },
|
|
|
|
K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 },
|
|
|
|
K(F3) = { F3, SF3, AF3, AF3, ASF3, CF3 },
|
|
|
|
K(F4) = { F4, SF4, AF4, AF4, ASF4, CF4 },
|
|
|
|
K(F5) = { F5, SF5, AF5, AF5, ASF5, CF5 },
|
|
|
|
K(F6) = { F6, SF6, AF6, AF6, ASF6, CF6 },
|
|
|
|
K(F7) = { F7, SF7, AF7, AF7, ASF7, CF7 },
|
|
|
|
K(F8) = { F8, SF8, AF8, AF8, ASF8, CF8 },
|
|
|
|
K(F9) = { F9, SF9, AF9, AF9, ASF9, CF9 },
|
|
|
|
K(F10) = { F10, SF10, AF10, AF10, ASF10, CF10 },
|
|
|
|
K(F11) = { F11, SF11, AF11, AF11, ASF11, CF11 },
|
|
|
|
K(F12) = { F12, SF12, AF12, AF12, ASF12, CF12 },
|
|
|
|
K(SCROLL_LOCK) = { SLOCK, SLOCK, SLOCK, SLOCK, SLOCK, SLOCK },
|
|
|
|
K(INSERT) = { INSRT, INSRT, AINSRT, AINSRT, AINSRT, CINSRT },
|
|
|
|
K(HOME) = { HOME, HOME, AHOME, AHOME, AHOME, CHOME },
|
|
|
|
K(PAGE_UP) = { PGUP, PGUP, APGUP, APGUP, APGUP, CPGUP },
|
|
|
|
K(DELETE) = { DEL, DEL, A(DEL), DEL, A(DEL), DEL },
|
|
|
|
K(END) = { END, END, AEND, AEND, AEND, CEND },
|
|
|
|
K(PAGE_DOWN) = { PGDN, PGDN, APGDN, APGDN, APGDN, CPGDN },
|
|
|
|
K(RIGHT_ARROW) = { RIGHT, RIGHT, ARIGHT, ARIGHT, ARIGHT, CRIGHT },
|
|
|
|
K(LEFT_ARROW) = { LEFT, LEFT, ALEFT, ALEFT, ALEFT, CLEFT },
|
|
|
|
K(DOWN_ARROW) = { DOWN, DOWN, ADOWN, ADOWN, ADOWN, CDOWN },
|
|
|
|
K(UP_ARROW) = { UP, UP, AUP, AUP, AUP, CUP },
|
|
|
|
K(NUM_LOCK) = { NLOCK, NLOCK, NLOCK, NLOCK, NLOCK, NLOCK },
|
2013-10-02 13:37:49 +02:00
|
|
|
K(KP_SLASH) = { '/', '/', A('/'), A('/'), '/', C('@') },
|
Input infrastructure, INPUT server, PCKBD driver
This commit separates the low-level keyboard driver from TTY, putting
it in a separate driver (PCKBD). The commit also separates management
of raw input devices from TTY, and puts it in a separate server
(INPUT). All keyboard and mouse input from hardware is sent by drivers
to the INPUT server, which either sends it to a process that has
opened a raw input device, or otherwise forwards it to TTY for
standard processing.
Design by Dirk Vogt. Prototype by Uli Kastlunger.
Additional changes made to the prototype:
- the event communication is now based on USB HID codes; all input
drivers have to use USB codes to describe events;
- all TTY keymaps have been converted to USB format, with the effect
that a single keymap covers all keys; there is no (static) escaped
keymap anymore;
- further keymap tweaks now allow remapping of literally all keys;
- input device renumbering and protocol rewrite;
- INPUT server rewrite, with added support for cancel and select;
- PCKBD reimplementation, including PC/AT-to-USB translation;
- support for manipulating keyboard LEDs has been added;
- keyboard and mouse multiplexer devices have been added to INPUT,
primarily so that an X server need only open two devices;
- a new "libinputdriver" library abstracts away protocol details from
input drivers, and should be used by all future input drivers;
- both INPUT and PCKBD can be restarted;
- TTY is now scheduled by KERNEL, so that it won't be punished for
running a lot; without this, simply running "yes" on the console
kills the system;
- the KIOCBELL IOCTL has been moved to /dev/console;
- support for the SCANCODES termios setting has been removed;
- obsolete keymap compression has been removed;
- the obsolete Olivetti M24 keymap has been removed.
Change-Id: I3a672fb8c4fd566734e4b46d3994b4b7fc96d578
2013-09-28 14:46:21 +02:00
|
|
|
K(KP_STAR) = { '*', '*', A('*'), '*', '*', C('M') },
|
|
|
|
K(KP_DASH) = { '-', '-', AMIN, AMIN, '-', CMIN },
|
|
|
|
K(KP_PLUS) = { '+', '+', APLUS, APLUS, '+', CPLUS },
|
|
|
|
K(KP_ENTER) = { C('M'), C('M'), CA('M'),C('M'), CA('M'),C('J') },
|
|
|
|
K(KP_1) = { NEND, '1', AEND, AEND, '1', CEND },
|
|
|
|
K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, '2', CDOWN },
|
|
|
|
K(KP_3) = { NPGDN, '3', APGDN, APGDN, '3', CPGDN },
|
|
|
|
K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, '4', CLEFT },
|
|
|
|
K(KP_5) = { NMID, '5', AMID, AMID, '5', CMID },
|
|
|
|
K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, '6', CRIGHT },
|
|
|
|
K(KP_7) = { NHOME, '7', AHOME, AHOME, '7', CHOME },
|
|
|
|
K(KP_8) = { NUP, '8', AUP, AUP, '8', CUP },
|
|
|
|
K(KP_9) = { NPGUP, '9', APGUP, APGUP, '9', CPGUP },
|
|
|
|
K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, '0', CINSRT },
|
|
|
|
K(KP_PERIOD) = { NDEL, '.', A(DEL), DEL, '.', DEL },
|
|
|
|
K(EUROPE_2) = { '<', '>', A('<'), '<', '>', C('@') },
|
|
|
|
K(APPLICATION) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
|
|
|
|
K(SYSREQ) = { C('M'), C('M'), CA('M'),C('M'), C('M'), C('J') },
|
|
|
|
K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL },
|
|
|
|
K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT },
|
|
|
|
K(LEFT_ALT) = { LALT, LALT, LALT, LALT, LALT, LALT },
|
|
|
|
K(LEFT_GUI) = { LEFT, '<', ALEFT, ALEFT, A('<'), CLEFT },
|
|
|
|
K(RIGHT_CTRL) = { RCTRL, RCTRL, RCTRL, RCTRL, RCTRL, RCTRL },
|
|
|
|
K(RIGHT_SHIFT) = { RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT, RSHIFT },
|
|
|
|
K(RIGHT_ALT) = { RALT, RALT, RALT, RALT, RALT, RALT },
|
|
|
|
K(RIGHT_GUI) = { RIGHT, '>', ARIGHT, ARIGHT, A('>'), CRIGHT }
|