^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * drivers/input/keyboard/hpps2atkbd.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (c) 2004 Helge Deller <deller@gmx.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (c) 2002 Laurent Canet <canetl@esiee.fr>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Copyright (c) 2002 Thibaut Varene <varenet@parisc-linux.org>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * Copyright (c) 2000 Xavier Debacker <debackex@esiee.fr>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * HP PS/2 AT-compatible Keyboard, found in PA/RISC Workstations & Laptops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * License. See the file "COPYING" in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /* Is the keyboard an RDI PrecisionBook? */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #ifndef CONFIG_KEYBOARD_ATKBD_RDI_KEYCODES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) # define CONFLICT(x,y) x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) # define CONFLICT(x,y) y
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /* sadly RDI (Tadpole) decided to ship a different keyboard layout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) than HP for their PS/2 laptop keyboard which leads to conflicting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) keycodes between a normal HP PS/2 keyboard and a RDI Precisionbook.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) HP: RDI: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define C_07 CONFLICT( KEY_F12, KEY_F1 )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #define C_11 CONFLICT( KEY_LEFTALT, KEY_LEFTCTRL )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #define C_14 CONFLICT( KEY_LEFTCTRL, KEY_CAPSLOCK )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define C_58 CONFLICT( KEY_CAPSLOCK, KEY_RIGHTCTRL )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define C_61 CONFLICT( KEY_102ND, KEY_LEFT )
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) /* Raw SET 2 scancode table */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) /* 00 */ KEY_RESERVED, KEY_F9, KEY_RESERVED, KEY_F5, KEY_F3, KEY_F1, KEY_F2, C_07,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* 08 */ KEY_ESC, KEY_F10, KEY_F8, KEY_F6, KEY_F4, KEY_TAB, KEY_GRAVE, KEY_F2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) /* 10 */ KEY_RESERVED, C_11, KEY_LEFTSHIFT, KEY_RESERVED, C_14, KEY_Q, KEY_1, KEY_F3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) /* 18 */ KEY_RESERVED, KEY_LEFTALT, KEY_Z, KEY_S, KEY_A, KEY_W, KEY_2, KEY_F4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) /* 20 */ KEY_RESERVED, KEY_C, KEY_X, KEY_D, KEY_E, KEY_4, KEY_3, KEY_F5,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) /* 28 */ KEY_RESERVED, KEY_SPACE, KEY_V, KEY_F, KEY_T, KEY_R, KEY_5, KEY_F6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /* 30 */ KEY_RESERVED, KEY_N, KEY_B, KEY_H, KEY_G, KEY_Y, KEY_6, KEY_F7,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) /* 38 */ KEY_RESERVED, KEY_RIGHTALT, KEY_M, KEY_J, KEY_U, KEY_7, KEY_8, KEY_F8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) /* 40 */ KEY_RESERVED, KEY_COMMA, KEY_K, KEY_I, KEY_O, KEY_0, KEY_9, KEY_F9,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) /* 48 */ KEY_RESERVED, KEY_DOT, KEY_SLASH, KEY_L, KEY_SEMICOLON, KEY_P, KEY_MINUS, KEY_F10,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* 50 */ KEY_RESERVED, KEY_RESERVED, KEY_APOSTROPHE,KEY_RESERVED, KEY_LEFTBRACE, KEY_EQUAL, KEY_F11, KEY_SYSRQ,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) /* 58 */ C_58, KEY_RIGHTSHIFT,KEY_ENTER, KEY_RIGHTBRACE,KEY_BACKSLASH, KEY_BACKSLASH,KEY_F12, KEY_SCROLLLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) /* 60 */ KEY_DOWN, C_61, KEY_PAUSE, KEY_UP, KEY_DELETE, KEY_END, KEY_BACKSPACE, KEY_INSERT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) /* 68 */ KEY_RESERVED, KEY_KP1, KEY_RIGHT, KEY_KP4, KEY_KP7, KEY_PAGEDOWN, KEY_HOME, KEY_PAGEUP,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /* 70 */ KEY_KP0, KEY_KPDOT, KEY_KP2, KEY_KP5, KEY_KP6, KEY_KP8, KEY_ESC, KEY_NUMLOCK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) /* 78 */ KEY_F11, KEY_KPPLUS, KEY_KP3, KEY_KPMINUS, KEY_KPASTERISK,KEY_KP9, KEY_SCROLLLOCK,KEY_102ND,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /* 80 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) /* 88 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /* 90 */ KEY_RESERVED, KEY_RIGHTALT, 255, KEY_RESERVED, KEY_RIGHTCTRL, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) /* 98 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_CAPSLOCK, KEY_RESERVED, KEY_LEFTMETA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) /* a0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RIGHTMETA,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* a8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_COMPOSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) /* b0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /* b8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) /* c0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /* c8 */ KEY_RESERVED, KEY_RESERVED, KEY_KPSLASH, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) /* d0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) /* d8 */ KEY_RESERVED, KEY_RESERVED, KEY_KPENTER, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /* e0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) /* e8 */ KEY_RESERVED, KEY_END, KEY_RESERVED, KEY_LEFT, KEY_HOME, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) /* f0 */ KEY_INSERT, KEY_DELETE, KEY_DOWN, KEY_RESERVED, KEY_RIGHT, KEY_UP, KEY_RESERVED, KEY_PAUSE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) /* f8 */ KEY_RESERVED, KEY_RESERVED, KEY_PAGEDOWN, KEY_RESERVED, KEY_SYSRQ, KEY_PAGEUP, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) /* These are offset for escaped keycodes: */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) /* 00 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_F7, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) /* 08 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_LEFTMETA, KEY_RIGHTMETA, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) /* 10 */ KEY_RESERVED, KEY_RIGHTALT, KEY_RESERVED, KEY_RESERVED, KEY_RIGHTCTRL, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) /* 18 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) /* 20 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) /* 28 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) /* 30 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) /* 38 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) /* 40 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) /* 48 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) /* 50 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) /* 58 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) /* 60 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) /* 68 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) /* 70 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) /* 78 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) /* 80 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) /* 88 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) /* 90 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) /* 98 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) /* a0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) /* a8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) /* b0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) /* b8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) /* c0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) /* c8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) /* d0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) /* d8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) /* e0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) /* e8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) /* f0 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) /* f8 */ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) #undef CONFLICT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) #undef C_07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) #undef C_11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) #undef C_14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) #undef C_58
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) #undef C_61
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)