814 lines
27 KiB
C
814 lines
27 KiB
C
#ifndef _MINIX_KEYMAP_H
|
|
#define _MINIX_KEYMAP_H
|
|
|
|
#include "type.h"
|
|
|
|
#ifdef _SYSTEM
|
|
|
|
/* Device type. */
|
|
#define INPUT_DEV_KBD 0x01 /* keyboard device */
|
|
#define INPUT_DEV_MOUSE 0x02 /* mouse device */
|
|
|
|
/* Known-invalid input device ID. */
|
|
#define INVALID_INPUT_ID (-1)
|
|
|
|
#endif /* _SYSTEM */
|
|
|
|
/*
|
|
* The input server heavily draws on the USB HID specification for events.
|
|
* Every driver should convert its event codes into this format. This also
|
|
* implies that we use the U.S. keyboard layout for key events. The mapping to
|
|
* localized keyboard layouts will be done at a different place (TTY, Xserver).
|
|
*/
|
|
|
|
/* A single event, as read from one of the input devices. */
|
|
struct input_event {
|
|
u16 page; /* event page (INPUT_PAGE_) */
|
|
u16 code; /* page-specific event code */
|
|
i32 value; /* event value */
|
|
u16 flags; /* event flags (INPUT_FLAG_) */
|
|
u16 devid; /* identifier of source device */
|
|
u16 rsvd[2]; /* reserved for a future timestamp */
|
|
};
|
|
|
|
/* Event pages. */
|
|
#define INPUT_PAGE_GD 0x0001 /* General Desktop page */
|
|
#define INPUT_PAGE_KEY 0x0007 /* Keyboard/Keypad page */
|
|
#define INPUT_PAGE_LED 0x0008 /* LED page */
|
|
#define INPUT_PAGE_BUTTON 0x0009 /* Button page */
|
|
#define INPUT_PAGE_CONS 0x000C /* Consumer page */
|
|
|
|
/* Event values. Not exhaustive. */
|
|
#define INPUT_RELEASE 0
|
|
#define INPUT_PRESS 1
|
|
|
|
/* Event flags. */
|
|
#define INPUT_FLAG_ABS 0x00 /* absolute value (the default) */
|
|
#define INPUT_FLAG_REL 0x04 /* relative value */
|
|
|
|
/* Page-specific event codes. */
|
|
enum {
|
|
INPUT_GD_X = 0x0030,
|
|
INPUT_GD_Y,
|
|
|
|
INPUT_GD_SYSTEM_POWER_DOWN = 0x0081,
|
|
INPUT_GD_SYSTEM_SLEEP,
|
|
INPUT_GD_SYSTEM_WAKE_UP
|
|
};
|
|
|
|
enum {
|
|
INPUT_KEY_A = 0x0004,
|
|
INPUT_KEY_B,
|
|
INPUT_KEY_C,
|
|
INPUT_KEY_D,
|
|
INPUT_KEY_E,
|
|
INPUT_KEY_F,
|
|
INPUT_KEY_G,
|
|
INPUT_KEY_H,
|
|
INPUT_KEY_I,
|
|
INPUT_KEY_J,
|
|
INPUT_KEY_K,
|
|
INPUT_KEY_L,
|
|
INPUT_KEY_M,
|
|
INPUT_KEY_N,
|
|
INPUT_KEY_O,
|
|
INPUT_KEY_P,
|
|
INPUT_KEY_Q,
|
|
INPUT_KEY_R,
|
|
INPUT_KEY_S,
|
|
INPUT_KEY_T,
|
|
INPUT_KEY_U,
|
|
INPUT_KEY_V,
|
|
INPUT_KEY_W,
|
|
INPUT_KEY_X,
|
|
INPUT_KEY_Y,
|
|
INPUT_KEY_Z,
|
|
INPUT_KEY_1,
|
|
INPUT_KEY_2,
|
|
INPUT_KEY_3,
|
|
INPUT_KEY_4,
|
|
INPUT_KEY_5,
|
|
INPUT_KEY_6,
|
|
INPUT_KEY_7,
|
|
INPUT_KEY_8,
|
|
INPUT_KEY_9,
|
|
INPUT_KEY_0,
|
|
|
|
INPUT_KEY_ENTER,
|
|
INPUT_KEY_ESCAPE,
|
|
INPUT_KEY_BACKSPACE,
|
|
INPUT_KEY_TAB,
|
|
INPUT_KEY_SPACEBAR,
|
|
INPUT_KEY_DASH,
|
|
INPUT_KEY_EQUAL,
|
|
INPUT_KEY_OPEN_BRACKET,
|
|
INPUT_KEY_CLOSE_BRACKET,
|
|
INPUT_KEY_BACKSLASH,
|
|
INPUT_KEY_EUROPE_1,
|
|
INPUT_KEY_SEMICOLON,
|
|
INPUT_KEY_APOSTROPH,
|
|
INPUT_KEY_GRAVE_ACCENT,
|
|
INPUT_KEY_COMMA,
|
|
INPUT_KEY_PERIOD,
|
|
INPUT_KEY_SLASH,
|
|
INPUT_KEY_CAPS_LOCK,
|
|
|
|
INPUT_KEY_F1,
|
|
INPUT_KEY_F2,
|
|
INPUT_KEY_F3,
|
|
INPUT_KEY_F4,
|
|
INPUT_KEY_F5,
|
|
INPUT_KEY_F6,
|
|
INPUT_KEY_F7,
|
|
INPUT_KEY_F8,
|
|
INPUT_KEY_F9,
|
|
INPUT_KEY_F10,
|
|
INPUT_KEY_F11,
|
|
INPUT_KEY_F12,
|
|
|
|
INPUT_KEY_PRINT_SCREEN,
|
|
INPUT_KEY_SCROLL_LOCK,
|
|
INPUT_KEY_PAUSE,
|
|
INPUT_KEY_INSERT,
|
|
INPUT_KEY_HOME,
|
|
INPUT_KEY_PAGE_UP,
|
|
INPUT_KEY_DELETE,
|
|
INPUT_KEY_END,
|
|
INPUT_KEY_PAGE_DOWN,
|
|
INPUT_KEY_RIGHT_ARROW,
|
|
INPUT_KEY_LEFT_ARROW,
|
|
INPUT_KEY_DOWN_ARROW,
|
|
INPUT_KEY_UP_ARROW,
|
|
INPUT_KEY_NUM_LOCK,
|
|
|
|
INPUT_KEY_KP_SLASH,
|
|
INPUT_KEY_KP_STAR,
|
|
INPUT_KEY_KP_DASH,
|
|
INPUT_KEY_KP_PLUS,
|
|
INPUT_KEY_KP_ENTER,
|
|
INPUT_KEY_KP_1,
|
|
INPUT_KEY_KP_2,
|
|
INPUT_KEY_KP_3,
|
|
INPUT_KEY_KP_4,
|
|
INPUT_KEY_KP_5,
|
|
INPUT_KEY_KP_6,
|
|
INPUT_KEY_KP_7,
|
|
INPUT_KEY_KP_8,
|
|
INPUT_KEY_KP_9,
|
|
INPUT_KEY_KP_0,
|
|
INPUT_KEY_KP_PERIOD,
|
|
|
|
INPUT_KEY_EUROPE_2,
|
|
INPUT_KEY_APPLICATION,
|
|
INPUT_KEY_POWER,
|
|
INPUT_KEY_KP_EQUAL,
|
|
|
|
INPUT_KEY_F13,
|
|
INPUT_KEY_F14,
|
|
INPUT_KEY_F15,
|
|
INPUT_KEY_F16,
|
|
INPUT_KEY_F17,
|
|
INPUT_KEY_F18,
|
|
INPUT_KEY_F19,
|
|
INPUT_KEY_F20,
|
|
INPUT_KEY_F21,
|
|
INPUT_KEY_F22,
|
|
INPUT_KEY_F23,
|
|
INPUT_KEY_F24,
|
|
|
|
INPUT_KEY_EXECUTE,
|
|
INPUT_KEY_HELP,
|
|
INPUT_KEY_MENU,
|
|
INPUT_KEY_SELECT,
|
|
INPUT_KEY_STOP,
|
|
INPUT_KEY_AGAIN,
|
|
INPUT_KEY_UNDO,
|
|
INPUT_KEY_CUT,
|
|
INPUT_KEY_COPY,
|
|
INPUT_KEY_PASTE,
|
|
INPUT_KEY_FIND,
|
|
INPUT_KEY_MUTE,
|
|
INPUT_KEY_VOLUME_UP,
|
|
INPUT_KEY_VOLUME_DOWN,
|
|
INPUT_KEY_LOCKING_CAPS_LOCK,
|
|
INPUT_KEY_LOCKING_NUM_LOCK,
|
|
INPUT_KEY_LOCKING_SCROLL_LOCK,
|
|
INPUT_KEY_KP_COMMA,
|
|
INPUT_KEY_EQUAL_SIGN,
|
|
INPUT_KEY_I10L_1,
|
|
INPUT_KEY_I10L_2,
|
|
INPUT_KEY_I10L_3,
|
|
INPUT_KEY_I10L_4,
|
|
INPUT_KEY_I10L_5,
|
|
INPUT_KEY_I10L_6,
|
|
INPUT_KEY_I10L_7,
|
|
INPUT_KEY_I10L_8,
|
|
INPUT_KEY_I10L_9,
|
|
INPUT_KEY_LANG_1,
|
|
INPUT_KEY_LANG_2,
|
|
INPUT_KEY_LANG_3,
|
|
INPUT_KEY_LANG_4,
|
|
INPUT_KEY_LANG_5,
|
|
INPUT_KEY_LANG_6,
|
|
INPUT_KEY_LANG_7,
|
|
INPUT_KEY_LANG_8,
|
|
INPUT_KEY_LANG_9,
|
|
INPUT_KEY_ALT_ERASE,
|
|
INPUT_KEY_SYSREQ,
|
|
INPUT_KEY_CANCEL,
|
|
INPUT_KEY_CLEAR,
|
|
INPUT_KEY_PRIOR,
|
|
INPUT_KEY_RETURN,
|
|
INPUT_KEY_SEPARATOR,
|
|
INPUT_KEY_OUT,
|
|
INPUT_KEY_OPER,
|
|
INPUT_KEY_CLEAR_AGAIN,
|
|
INPUT_KEY_CR_SEL,
|
|
INPUT_KEY_EX_SEL,
|
|
|
|
/* 0x00A5 -- 0x00AF RESERVED */
|
|
|
|
INPUT_KEY_KP_00 = 0x00B0,
|
|
INPUT_KEY_KP_000,
|
|
INPUT_KEY_THOUSANDS_SEP,
|
|
INPUT_KEY_DECIMAL_SEP,
|
|
INPUT_KEY_CURRENCY_UNIT,
|
|
INPUT_KEY_CURRENCY_SUBUNIT,
|
|
INPUT_KEY_KP_OPEN_PARENTHESIS,
|
|
INPUT_KEY_KP_CLOSE_PARENTHESIS,
|
|
INPUT_KEY_KP_OPEN_BRACE,
|
|
INPUT_KEY_KP_CLOSE_BRACE,
|
|
INPUT_KEY_KP_TAB,
|
|
INPUT_KEY_KP_BACKSPACE,
|
|
INPUT_KEY_KP_A,
|
|
INPUT_KEY_KP_B,
|
|
INPUT_KEY_KP_C,
|
|
INPUT_KEY_KP_D,
|
|
INPUT_KEY_KP_E,
|
|
INPUT_KEY_KP_F,
|
|
INPUT_KEY_KP_XOR,
|
|
INPUT_KEY_KP_CARET,
|
|
INPUT_KEY_KP_PERCENT,
|
|
INPUT_KEY_KP_SMALLER_THEN,
|
|
INPUT_KEY_KP_GREATER_THEN,
|
|
INPUT_KEY_KP_AMP,
|
|
INPUT_KEY_KP_DOUBLE_AMP,
|
|
INPUT_KEY_KP_PIPE,
|
|
INPUT_KEY_KP_DOUBLE_PIPE,
|
|
INPUT_KEY_KP_COLON,
|
|
INPUT_KEY_KP_NUMBER,
|
|
INPUT_KEY_KP_SPACE,
|
|
INPUT_KEY_KP_AT,
|
|
INPUT_KEY_KP_EXCLAMATION_MARK,
|
|
INPUT_KEY_KP_MEM_STORE,
|
|
INPUT_KEY_KP_MEM_RECALL,
|
|
INPUT_KEY_KP_MEM_CLEAR,
|
|
INPUT_KEY_KP_MEM_ADD,
|
|
INPUT_KEY_KP_MEM_SUBTRACT,
|
|
INPUT_KEY_KP_MEM_MULTIPLY,
|
|
INPUT_KEY_KP_MEM_DIVIDE,
|
|
INPUT_KEY_KP_PLUS_MINUS,
|
|
INPUT_KEY_KP_CLEAR,
|
|
INPUT_KEY_KP_CLEAR_ENTRY,
|
|
INPUT_KEY_KP_BIN,
|
|
INPUT_KEY_KP_OCT,
|
|
INPUT_KEY_KP_DEC,
|
|
INPUT_KEY_KP_HEX,
|
|
|
|
/* 0x00DE, 0x00DF RESERVED */
|
|
|
|
INPUT_KEY_LEFT_CTRL = 0x00E0,
|
|
INPUT_KEY_LEFT_SHIFT,
|
|
INPUT_KEY_LEFT_ALT,
|
|
INPUT_KEY_LEFT_GUI,
|
|
INPUT_KEY_RIGHT_CTRL,
|
|
INPUT_KEY_RIGHT_SHIFT,
|
|
INPUT_KEY_RIGHT_ALT,
|
|
INPUT_KEY_RIGHT_GUI
|
|
|
|
/* 0x00E8 -- 0xFFFF RESERVED */
|
|
};
|
|
|
|
enum {
|
|
INPUT_LED_NUMLOCK = 0x0001,
|
|
INPUT_LED_CAPSLOCK,
|
|
INPUT_LED_SCROLLLOCK
|
|
};
|
|
|
|
enum {
|
|
INPUT_BUTTON_1 = 0x0001,
|
|
};
|
|
|
|
enum {
|
|
INPUT_CONS_SCAN_NEXT_TRACK = 0x00B5,
|
|
INPUT_CONS_SCAN_PREVIOUS_TRACK,
|
|
INPUT_CONS_STOP,
|
|
|
|
INPUT_CONS_PLAY_PAUSE = 0x00CD,
|
|
|
|
INPUT_CONS_MUTE = 0x00E2,
|
|
|
|
INPUT_CONS_VOLUME_UP = 0x00E9,
|
|
INPUT_CONS_VOLUME_DOWN,
|
|
|
|
INPUT_CONS_AL_MEDIA_SELECT = 0x0183,
|
|
|
|
INPUT_CONS_AL_EMAIL_READER = 0x018A,
|
|
|
|
INPUT_CONS_AL_CALCULATOR = 0x0192,
|
|
|
|
INPUT_CONS_AL_LOCAL_BROWSER = 0x0194,
|
|
|
|
INPUT_CONS_AC_SEARCH = 0x0221,
|
|
INPUT_CONS_AC_GO_TO,
|
|
INPUT_CONS_AC_HOME,
|
|
INPUT_CONS_AC_BACK,
|
|
INPUT_CONS_AC_FORWARD,
|
|
INPUT_CONS_AC_STOP,
|
|
INPUT_CONS_AC_REFRESH,
|
|
|
|
INPUT_CONS_AC_BOOKMARKS = 0x022A
|
|
};
|
|
|
|
/* Standard and AT keyboard. (PS/2 MCA implies AT throughout.) */
|
|
#define KEYBD 0x60 /* I/O port for keyboard data */
|
|
|
|
/* AT keyboard. */
|
|
#define KB_COMMAND 0x64 /* I/O port for commands on AT */
|
|
#define KB_STATUS 0x64 /* I/O port for status on AT */
|
|
#define KB_ACK 0xFA /* keyboard ack response */
|
|
#define KB_AUX_BYTE 0x20 /* Auxiliary Device Output Buffer Full */
|
|
#define KB_OUT_FULL 0x01 /* status bit set when keypress char pending */
|
|
#define KB_IN_FULL 0x02 /* status bit set when not ready to receive */
|
|
#define KBC_RD_RAM_CCB 0x20 /* Read controller command byte */
|
|
#define KBC_WR_RAM_CCB 0x60 /* Write controller command byte */
|
|
#define KBC_DI_AUX 0xA7 /* Disable Auxiliary Device */
|
|
#define KBC_EN_AUX 0xA8 /* Enable Auxiliary Device */
|
|
#define KBC_DI_KBD 0xAD /* Disable Keybard Interface */
|
|
#define KBC_EN_KBD 0xAE /* Enable Keybard Interface */
|
|
#define LED_CODE 0xED /* command to keyboard to set LEDs */
|
|
|
|
#define KBC_WAIT_TIME 100000 /* wait this many usecs for a status update */
|
|
#define KBC_READ_TIME 1000000 /* wait this many usecs for a result byte */
|
|
|
|
#define KBC_IN_DELAY 7 /* wait 7 microseconds when polling */
|
|
|
|
#define KBD_OUT_BUFSZ 16 /* Output buffer for data to the keyboard. */
|
|
|
|
#define KBD_SCAN_CODES 0x80
|
|
|
|
#define SCAN_RELEASE 0x80
|
|
#define SCAN_CTRL 0x1D
|
|
#define SCAN_NUMLOCK 0x45
|
|
#define SCAN_EXT0 0xE0
|
|
#define SCAN_EXT1 0xE1
|
|
|
|
#define LED_SCROLL_LOCK 0x01
|
|
#define LED_NUM_LOCK 0x02
|
|
#define LED_CAPS_LOCK 0x04
|
|
|
|
struct scanmap {
|
|
u16 page;
|
|
u16 code;
|
|
};
|
|
|
|
const static struct scanmap scanmap_normal[KBD_SCAN_CODES] = {
|
|
[0x01] = { INPUT_PAGE_KEY, INPUT_KEY_ESCAPE },
|
|
[0x02] = { INPUT_PAGE_KEY, INPUT_KEY_1 },
|
|
[0x03] = { INPUT_PAGE_KEY, INPUT_KEY_2 },
|
|
[0x04] = { INPUT_PAGE_KEY, INPUT_KEY_3 },
|
|
[0x05] = { INPUT_PAGE_KEY, INPUT_KEY_4 },
|
|
[0x06] = { INPUT_PAGE_KEY, INPUT_KEY_5 },
|
|
[0x07] = { INPUT_PAGE_KEY, INPUT_KEY_6 },
|
|
[0x08] = { INPUT_PAGE_KEY, INPUT_KEY_7 },
|
|
[0x09] = { INPUT_PAGE_KEY, INPUT_KEY_8 },
|
|
[0x0A] = { INPUT_PAGE_KEY, INPUT_KEY_9 },
|
|
[0x0B] = { INPUT_PAGE_KEY, INPUT_KEY_0 },
|
|
[0x0C] = { INPUT_PAGE_KEY, INPUT_KEY_DASH },
|
|
[0x0D] = { INPUT_PAGE_KEY, INPUT_KEY_EQUAL },
|
|
[0x0E] = { INPUT_PAGE_KEY, INPUT_KEY_BACKSPACE },
|
|
[0x0F] = { INPUT_PAGE_KEY, INPUT_KEY_TAB },
|
|
[0x10] = { INPUT_PAGE_KEY, INPUT_KEY_Q },
|
|
[0x11] = { INPUT_PAGE_KEY, INPUT_KEY_W },
|
|
[0x12] = { INPUT_PAGE_KEY, INPUT_KEY_E },
|
|
[0x13] = { INPUT_PAGE_KEY, INPUT_KEY_R },
|
|
[0x14] = { INPUT_PAGE_KEY, INPUT_KEY_T },
|
|
[0x15] = { INPUT_PAGE_KEY, INPUT_KEY_Y },
|
|
[0x16] = { INPUT_PAGE_KEY, INPUT_KEY_U },
|
|
[0x17] = { INPUT_PAGE_KEY, INPUT_KEY_I },
|
|
[0x18] = { INPUT_PAGE_KEY, INPUT_KEY_O },
|
|
[0x19] = { INPUT_PAGE_KEY, INPUT_KEY_P },
|
|
[0x1A] = { INPUT_PAGE_KEY, INPUT_KEY_OPEN_BRACKET },
|
|
[0x1B] = { INPUT_PAGE_KEY, INPUT_KEY_CLOSE_BRACKET },
|
|
[0x1C] = { INPUT_PAGE_KEY, INPUT_KEY_ENTER },
|
|
[0x1D] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_CTRL },
|
|
[0x1E] = { INPUT_PAGE_KEY, INPUT_KEY_A },
|
|
[0x1F] = { INPUT_PAGE_KEY, INPUT_KEY_S },
|
|
[0x20] = { INPUT_PAGE_KEY, INPUT_KEY_D },
|
|
[0x21] = { INPUT_PAGE_KEY, INPUT_KEY_F },
|
|
[0x22] = { INPUT_PAGE_KEY, INPUT_KEY_G },
|
|
[0x23] = { INPUT_PAGE_KEY, INPUT_KEY_H },
|
|
[0x24] = { INPUT_PAGE_KEY, INPUT_KEY_J },
|
|
[0x25] = { INPUT_PAGE_KEY, INPUT_KEY_K },
|
|
[0x26] = { INPUT_PAGE_KEY, INPUT_KEY_L },
|
|
[0x27] = { INPUT_PAGE_KEY, INPUT_KEY_SEMICOLON },
|
|
[0x28] = { INPUT_PAGE_KEY, INPUT_KEY_APOSTROPH },
|
|
[0x29] = { INPUT_PAGE_KEY, INPUT_KEY_GRAVE_ACCENT },
|
|
[0x2A] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_SHIFT },
|
|
[0x2B] = { INPUT_PAGE_KEY, INPUT_KEY_BACKSLASH },
|
|
[0x2C] = { INPUT_PAGE_KEY, INPUT_KEY_Z },
|
|
[0x2D] = { INPUT_PAGE_KEY, INPUT_KEY_X },
|
|
[0x2E] = { INPUT_PAGE_KEY, INPUT_KEY_C },
|
|
[0x2F] = { INPUT_PAGE_KEY, INPUT_KEY_V },
|
|
[0x30] = { INPUT_PAGE_KEY, INPUT_KEY_B },
|
|
[0x31] = { INPUT_PAGE_KEY, INPUT_KEY_N },
|
|
[0x32] = { INPUT_PAGE_KEY, INPUT_KEY_M },
|
|
[0x33] = { INPUT_PAGE_KEY, INPUT_KEY_COMMA },
|
|
[0x34] = { INPUT_PAGE_KEY, INPUT_KEY_PERIOD },
|
|
[0x35] = { INPUT_PAGE_KEY, INPUT_KEY_SLASH },
|
|
[0x36] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_SHIFT },
|
|
[0x37] = { INPUT_PAGE_KEY, INPUT_KEY_KP_STAR },
|
|
[0x38] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_ALT },
|
|
[0x39] = { INPUT_PAGE_KEY, INPUT_KEY_SPACEBAR },
|
|
[0x3A] = { INPUT_PAGE_KEY, INPUT_KEY_CAPS_LOCK },
|
|
[0x3B] = { INPUT_PAGE_KEY, INPUT_KEY_F1 },
|
|
[0x3C] = { INPUT_PAGE_KEY, INPUT_KEY_F2 },
|
|
[0x3D] = { INPUT_PAGE_KEY, INPUT_KEY_F3 },
|
|
[0x3E] = { INPUT_PAGE_KEY, INPUT_KEY_F4 },
|
|
[0x3F] = { INPUT_PAGE_KEY, INPUT_KEY_F5 },
|
|
[0x40] = { INPUT_PAGE_KEY, INPUT_KEY_F6 },
|
|
[0x41] = { INPUT_PAGE_KEY, INPUT_KEY_F7 },
|
|
[0x42] = { INPUT_PAGE_KEY, INPUT_KEY_F8 },
|
|
[0x43] = { INPUT_PAGE_KEY, INPUT_KEY_F9 },
|
|
[0x44] = { INPUT_PAGE_KEY, INPUT_KEY_F10 },
|
|
[0x45] = { INPUT_PAGE_KEY, INPUT_KEY_NUM_LOCK },
|
|
[0x46] = { INPUT_PAGE_KEY, INPUT_KEY_SCROLL_LOCK },
|
|
[0x47] = { INPUT_PAGE_KEY, INPUT_KEY_KP_7 },
|
|
[0x48] = { INPUT_PAGE_KEY, INPUT_KEY_KP_8 },
|
|
[0x49] = { INPUT_PAGE_KEY, INPUT_KEY_KP_9 },
|
|
[0x4A] = { INPUT_PAGE_KEY, INPUT_KEY_KP_DASH },
|
|
[0x4B] = { INPUT_PAGE_KEY, INPUT_KEY_KP_4 },
|
|
[0x4C] = { INPUT_PAGE_KEY, INPUT_KEY_KP_5 },
|
|
[0x4D] = { INPUT_PAGE_KEY, INPUT_KEY_KP_6 },
|
|
[0x4E] = { INPUT_PAGE_KEY, INPUT_KEY_KP_PLUS },
|
|
[0x4F] = { INPUT_PAGE_KEY, INPUT_KEY_KP_1 },
|
|
[0x50] = { INPUT_PAGE_KEY, INPUT_KEY_KP_2 },
|
|
[0x51] = { INPUT_PAGE_KEY, INPUT_KEY_KP_3 },
|
|
[0x52] = { INPUT_PAGE_KEY, INPUT_KEY_KP_0 },
|
|
[0x53] = { INPUT_PAGE_KEY, INPUT_KEY_KP_PERIOD },
|
|
[0x54] = { INPUT_PAGE_KEY, INPUT_KEY_SYSREQ },
|
|
[0x56] = { INPUT_PAGE_KEY, INPUT_KEY_EUROPE_2 },
|
|
[0x57] = { INPUT_PAGE_KEY, INPUT_KEY_F11 },
|
|
[0x58] = { INPUT_PAGE_KEY, INPUT_KEY_F12 },
|
|
[0x59] = { INPUT_PAGE_KEY, INPUT_KEY_KP_EQUAL },
|
|
[0x5C] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_6 },
|
|
[0x64] = { INPUT_PAGE_KEY, INPUT_KEY_F13 },
|
|
[0x65] = { INPUT_PAGE_KEY, INPUT_KEY_F14 },
|
|
[0x66] = { INPUT_PAGE_KEY, INPUT_KEY_F15 },
|
|
[0x67] = { INPUT_PAGE_KEY, INPUT_KEY_F16 },
|
|
[0x68] = { INPUT_PAGE_KEY, INPUT_KEY_F17 },
|
|
[0x69] = { INPUT_PAGE_KEY, INPUT_KEY_F18 },
|
|
[0x6A] = { INPUT_PAGE_KEY, INPUT_KEY_F19 },
|
|
[0x6B] = { INPUT_PAGE_KEY, INPUT_KEY_F20 },
|
|
[0x6C] = { INPUT_PAGE_KEY, INPUT_KEY_F21 },
|
|
[0x6D] = { INPUT_PAGE_KEY, INPUT_KEY_F22 },
|
|
[0x6E] = { INPUT_PAGE_KEY, INPUT_KEY_F23 },
|
|
[0x70] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_2 },
|
|
/* The following two keys (0x71, 0x72) are release-only. */
|
|
[0x71] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_2 },
|
|
[0x72] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_1 },
|
|
[0x73] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_1 },
|
|
/* The following key (0x76) can be either F24 or LANG_5. */
|
|
[0x76] = { INPUT_PAGE_KEY, INPUT_KEY_F24 },
|
|
[0x77] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_4 },
|
|
[0x78] = { INPUT_PAGE_KEY, INPUT_KEY_LANG_3 },
|
|
[0x79] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_4 },
|
|
[0x7B] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_5 },
|
|
[0x7D] = { INPUT_PAGE_KEY, INPUT_KEY_I10L_3 },
|
|
[0x7E] = { INPUT_PAGE_KEY, INPUT_KEY_EQUAL_SIGN },
|
|
};
|
|
|
|
const static struct scanmap scanmap_escaped[KBD_SCAN_CODES] = {
|
|
[0x10] = { INPUT_PAGE_CONS, INPUT_CONS_SCAN_PREVIOUS_TRACK },
|
|
[0x19] = { INPUT_PAGE_CONS, INPUT_CONS_SCAN_NEXT_TRACK },
|
|
[0x1C] = { INPUT_PAGE_KEY, INPUT_KEY_KP_ENTER },
|
|
[0x1D] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_CTRL },
|
|
[0x20] = { INPUT_PAGE_CONS, INPUT_CONS_MUTE },
|
|
[0x21] = { INPUT_PAGE_CONS, INPUT_CONS_AL_CALCULATOR },
|
|
[0x22] = { INPUT_PAGE_CONS, INPUT_CONS_PLAY_PAUSE },
|
|
[0x24] = { INPUT_PAGE_CONS, INPUT_CONS_STOP },
|
|
[0x2E] = { INPUT_PAGE_CONS, INPUT_CONS_VOLUME_DOWN },
|
|
[0x30] = { INPUT_PAGE_CONS, INPUT_CONS_VOLUME_UP },
|
|
[0x32] = { INPUT_PAGE_CONS, INPUT_CONS_AC_HOME },
|
|
[0x35] = { INPUT_PAGE_KEY, INPUT_KEY_KP_SLASH },
|
|
[0x37] = { INPUT_PAGE_KEY, INPUT_KEY_PRINT_SCREEN },
|
|
[0x38] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_ALT },
|
|
[0x46] = { INPUT_PAGE_KEY, INPUT_KEY_PAUSE },
|
|
[0x47] = { INPUT_PAGE_KEY, INPUT_KEY_HOME },
|
|
[0x48] = { INPUT_PAGE_KEY, INPUT_KEY_UP_ARROW },
|
|
[0x49] = { INPUT_PAGE_KEY, INPUT_KEY_PAGE_UP },
|
|
[0x4B] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_ARROW },
|
|
[0x4D] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_ARROW },
|
|
[0x4F] = { INPUT_PAGE_KEY, INPUT_KEY_END },
|
|
[0x50] = { INPUT_PAGE_KEY, INPUT_KEY_DOWN_ARROW },
|
|
[0x51] = { INPUT_PAGE_KEY, INPUT_KEY_PAGE_DOWN },
|
|
[0x52] = { INPUT_PAGE_KEY, INPUT_KEY_INSERT },
|
|
[0x53] = { INPUT_PAGE_KEY, INPUT_KEY_DELETE },
|
|
[0x5B] = { INPUT_PAGE_KEY, INPUT_KEY_LEFT_GUI },
|
|
[0x5C] = { INPUT_PAGE_KEY, INPUT_KEY_RIGHT_GUI },
|
|
[0x5D] = { INPUT_PAGE_KEY, INPUT_KEY_APPLICATION },
|
|
/* The following extended key (0x5E) may also be INPUT_KEY_POWER. */
|
|
[0x5E] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_POWER_DOWN },
|
|
[0x5F] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_SLEEP },
|
|
[0x63] = { INPUT_PAGE_GD, INPUT_GD_SYSTEM_WAKE_UP },
|
|
[0x65] = { INPUT_PAGE_CONS, INPUT_CONS_AC_SEARCH },
|
|
[0x66] = { INPUT_PAGE_CONS, INPUT_CONS_AC_BOOKMARKS },
|
|
[0x67] = { INPUT_PAGE_CONS, INPUT_CONS_AC_REFRESH },
|
|
[0x68] = { INPUT_PAGE_CONS, INPUT_CONS_AC_STOP },
|
|
[0x69] = { INPUT_PAGE_CONS, INPUT_CONS_AC_FORWARD },
|
|
[0x6A] = { INPUT_PAGE_CONS, INPUT_CONS_AC_BACK },
|
|
[0x6B] = { INPUT_PAGE_CONS, INPUT_CONS_AL_LOCAL_BROWSER },
|
|
[0x6C] = { INPUT_PAGE_CONS, INPUT_CONS_AL_EMAIL_READER },
|
|
[0x6D] = { INPUT_PAGE_CONS, INPUT_CONS_AL_MEDIA_SELECT },
|
|
};
|
|
#define K(k) [INPUT_KEY_ ## k] /* Map to key entry */
|
|
|
|
#define C(c) ((c) & 0x1F) /* Map to control code */
|
|
#define A(c) ((c) | 0x80) /* Set eight bit (ALT) */
|
|
#define CA(c) A(C(c)) /* Control-Alt */
|
|
#define N(c) ((c) | HASNUM) /* Add "Num Lock has effect" attribute */
|
|
#define L(c) ((c) | HASCAPS) /* Add "Caps Lock has effect" attribute */
|
|
|
|
#define EXT 0x0100 /* Normal function keys */
|
|
#define CTRLKEY 0x0200 /* Control key */
|
|
#define SHIFT 0x0400 /* Shift key */
|
|
#define ALT 0x0800 /* Alternate key */
|
|
#define HASNUM 0x4000 /* Num Lock has effect */
|
|
#define HASCAPS 0x8000 /* Caps Lock has effect */
|
|
#define ISMOUSE 0x80000000
|
|
#define MOUSEBTN 0x40000000
|
|
#define MOUSEBTN_RELEASE 0x00
|
|
#define MOUSEBTN_CLICK 0x80
|
|
#define MOUSEBTN_L 0x1
|
|
#define MOUSEBTN_R 0x2
|
|
#define MOUSEBTN_M 0x4
|
|
#define MOUSEPOS 0x20000000
|
|
#define MOUSEPOS_XY 0x00000200
|
|
#define MOUSEPOS_NEG 0x00000100
|
|
#define MOUSESCR 0x10000000
|
|
#define MOUSESCR_UP 0x1
|
|
#define MOUSESCR_DOWN 0x2
|
|
|
|
/* The left and right versions for the actual keys in the keymap. */
|
|
#define LCTRL CTRLKEY
|
|
#define RCTRL (CTRLKEY | EXT)
|
|
#define LSHIFT SHIFT
|
|
#define RSHIFT (SHIFT | EXT)
|
|
#define LALT ALT
|
|
#define RALT (ALT | EXT)
|
|
|
|
/* Delete key */
|
|
#define DEL 0177
|
|
|
|
/* Numeric keypad */
|
|
#define HOME (0x01 + EXT)
|
|
#define END (0x02 + EXT)
|
|
#define UP (0x03 + EXT)
|
|
#define DOWN (0x04 + EXT)
|
|
#define LEFT (0x05 + EXT)
|
|
#define RIGHT (0x06 + EXT)
|
|
#define PGUP (0x07 + EXT)
|
|
#define PGDN (0x08 + EXT)
|
|
#define MID (0x09 + EXT)
|
|
/* UNUSED (0x0A + EXT) */
|
|
/* UNUSED (0x0B + EXT) */
|
|
#define INSRT (0x0C + EXT)
|
|
|
|
/* Keys affected by Num Lock */
|
|
#define NHOME N(HOME)
|
|
#define NEND N(END)
|
|
#define NUP N(UP)
|
|
#define NDOWN N(DOWN)
|
|
#define NLEFT N(LEFT)
|
|
#define NRIGHT N(RIGHT)
|
|
#define NPGUP N(PGUP)
|
|
#define NPGDN N(PGDN)
|
|
#define NMID N(MID)
|
|
#define NINSRT N(INSRT)
|
|
#define NDEL N(DEL)
|
|
|
|
/* Alt + Numeric keypad */
|
|
#define AHOME (0x01 + ALT)
|
|
#define AEND (0x02 + ALT)
|
|
#define AUP (0x03 + ALT)
|
|
#define ADOWN (0x04 + ALT)
|
|
#define ALEFT (0x05 + ALT)
|
|
#define ARIGHT (0x06 + ALT)
|
|
#define APGUP (0x07 + ALT)
|
|
#define APGDN (0x08 + ALT)
|
|
#define AMID (0x09 + ALT)
|
|
#define AMIN (0x0A + ALT)
|
|
#define APLUS (0x0B + ALT)
|
|
#define AINSRT (0x0C + ALT)
|
|
|
|
/* Ctrl + Numeric keypad */
|
|
#define CHOME (0x01 + CTRLKEY)
|
|
#define CEND (0x02 + CTRLKEY)
|
|
#define CUP (0x03 + CTRLKEY)
|
|
#define CDOWN (0x04 + CTRLKEY)
|
|
#define CLEFT (0x05 + CTRLKEY)
|
|
#define CRIGHT (0x06 + CTRLKEY)
|
|
#define CPGUP (0x07 + CTRLKEY)
|
|
#define CPGDN (0x08 + CTRLKEY)
|
|
#define CMID (0x09 + CTRLKEY)
|
|
#define CNMIN (0x0A + CTRLKEY)
|
|
#define CPLUS (0x0B + CTRLKEY)
|
|
#define CINSRT (0x0C + CTRLKEY)
|
|
|
|
/* Lock keys */
|
|
#define CALOCK (0x0D + EXT) /* caps lock */
|
|
#define NLOCK (0x0E + EXT) /* number lock */
|
|
#define SLOCK (0x0F + EXT) /* scroll lock */
|
|
|
|
/* Function keys */
|
|
#define F1 (0x10 + EXT)
|
|
#define F2 (0x11 + EXT)
|
|
#define F3 (0x12 + EXT)
|
|
#define F4 (0x13 + EXT)
|
|
#define F5 (0x14 + EXT)
|
|
#define F6 (0x15 + EXT)
|
|
#define F7 (0x16 + EXT)
|
|
#define F8 (0x17 + EXT)
|
|
#define F9 (0x18 + EXT)
|
|
#define F10 (0x19 + EXT)
|
|
#define F11 (0x1A + EXT)
|
|
#define F12 (0x1B + EXT)
|
|
|
|
/* Alt+Fn */
|
|
#define AF1 (0x10 + ALT)
|
|
#define AF2 (0x11 + ALT)
|
|
#define AF3 (0x12 + ALT)
|
|
#define AF4 (0x13 + ALT)
|
|
#define AF5 (0x14 + ALT)
|
|
#define AF6 (0x15 + ALT)
|
|
#define AF7 (0x16 + ALT)
|
|
#define AF8 (0x17 + ALT)
|
|
#define AF9 (0x18 + ALT)
|
|
#define AF10 (0x19 + ALT)
|
|
#define AF11 (0x1A + ALT)
|
|
#define AF12 (0x1B + ALT)
|
|
|
|
/* Ctrl+Fn */
|
|
#define CF1 (0x10 + CTRLKEY)
|
|
#define CF2 (0x11 + CTRLKEY)
|
|
#define CF3 (0x12 + CTRLKEY)
|
|
#define CF4 (0x13 + CTRLKEY)
|
|
#define CF5 (0x14 + CTRLKEY)
|
|
#define CF6 (0x15 + CTRLKEY)
|
|
#define CF7 (0x16 + CTRLKEY)
|
|
#define CF8 (0x17 + CTRLKEY)
|
|
#define CF9 (0x18 + CTRLKEY)
|
|
#define CF10 (0x19 + CTRLKEY)
|
|
#define CF11 (0x1A + CTRLKEY)
|
|
#define CF12 (0x1B + CTRLKEY)
|
|
|
|
/* Shift+Fn */
|
|
#define SF1 (0x10 + SHIFT)
|
|
#define SF2 (0x11 + SHIFT)
|
|
#define SF3 (0x12 + SHIFT)
|
|
#define SF4 (0x13 + SHIFT)
|
|
#define SF5 (0x14 + SHIFT)
|
|
#define SF6 (0x15 + SHIFT)
|
|
#define SF7 (0x16 + SHIFT)
|
|
#define SF8 (0x17 + SHIFT)
|
|
#define SF9 (0x18 + SHIFT)
|
|
#define SF10 (0x19 + SHIFT)
|
|
#define SF11 (0x1A + SHIFT)
|
|
#define SF12 (0x1B + SHIFT)
|
|
|
|
/* Alt+Shift+Fn */
|
|
#define ASF1 (0x10 + ALT + SHIFT)
|
|
#define ASF2 (0x11 + ALT + SHIFT)
|
|
#define ASF3 (0x12 + ALT + SHIFT)
|
|
#define ASF4 (0x13 + ALT + SHIFT)
|
|
#define ASF5 (0x14 + ALT + SHIFT)
|
|
#define ASF6 (0x15 + ALT + SHIFT)
|
|
#define ASF7 (0x16 + ALT + SHIFT)
|
|
#define ASF8 (0x17 + ALT + SHIFT)
|
|
#define ASF9 (0x18 + ALT + SHIFT)
|
|
#define ASF10 (0x19 + ALT + SHIFT)
|
|
#define ASF11 (0x1A + ALT + SHIFT)
|
|
#define ASF12 (0x1B + ALT + SHIFT)
|
|
|
|
#define MAP_COLS 6 /* Number of columns in keymap */
|
|
#define NR_SCAN_CODES 0xE8 /* Number of scan codes (rows in keymap) */
|
|
|
|
static u16 minix_keymap[NR_SCAN_CODES][MAP_COLS] = {
|
|
/* scan-code !Shift Shift Alt1 Alt2 Alt+Sh Ctrl */
|
|
/* ==================================================================== */
|
|
K(A) = { L('a'), 'A', A('a'), A('a'), A('A'), C('A') },
|
|
K(B) = { L('b'), 'B', A('b'), A('b'), A('B'), C('B') },
|
|
K(C) = { L('c'), 'C', A('c'), A('c'), A('C'), C('C') },
|
|
K(D) = { L('d'), 'D', A('d'), A('d'), A('D'), C('D') },
|
|
K(E) = { L('e'), 'E', A('e'), A('e'), A('E'), C('E') },
|
|
K(F) = { L('f'), 'F', A('f'), A('f'), A('F'), C('F') },
|
|
K(G) = { L('g'), 'G', A('g'), A('g'), A('G'), C('G') },
|
|
K(H) = { L('h'), 'H', A('h'), A('h'), A('H'), C('H') },
|
|
K(I) = { L('i'), 'I', A('i'), A('i'), A('I'), C('I') },
|
|
K(J) = { L('j'), 'J', A('j'), A('j'), A('J'), C('J') },
|
|
K(K) = { L('k'), 'K', A('k'), A('k'), A('K'), C('K') },
|
|
K(L) = { L('l'), 'L', A('l'), A('l'), A('L'), C('L') },
|
|
K(M) = { L('m'), 'M', A('m'), A('m'), A('M'), C('M') },
|
|
K(N) = { L('n'), 'N', A('n'), A('n'), A('N'), C('N') },
|
|
K(O) = { L('o'), 'O', A('o'), A('o'), A('O'), C('O') },
|
|
K(P) = { L('p'), 'P', A('p'), A('p'), A('P'), C('P') },
|
|
K(Q) = { L('q'), 'Q', A('q'), A('q'), A('Q'), C('Q') },
|
|
K(R) = { L('r'), 'R', A('r'), A('r'), A('R'), C('R') },
|
|
K(S) = { L('s'), 'S', A('s'), A('s'), A('S'), C('S') },
|
|
K(T) = { L('t'), 'T', A('t'), A('t'), A('T'), C('T') },
|
|
K(U) = { L('u'), 'U', A('u'), A('u'), A('U'), C('U') },
|
|
K(V) = { L('v'), 'V', A('v'), A('v'), A('V'), C('V') },
|
|
K(W) = { L('w'), 'W', A('w'), A('w'), A('W'), C('W') },
|
|
K(X) = { L('x'), 'X', A('x'), A('x'), A('X'), C('X') },
|
|
K(Y) = { L('y'), 'Y', A('y'), A('y'), A('Y'), C('Y') },
|
|
K(Z) = { L('z'), 'Z', A('z'), A('z'), A('Z'), C('Z') },
|
|
K(1) = { '1', '!', A('1'), A('1'), A('!'), C('A') },
|
|
K(2) = { '2', '@', A('2'), A('2'), A('@'), C('@') },
|
|
K(3) = { '3', '#', A('3'), A('3'), A('#'), C('C') },
|
|
K(4) = { '4', '$', A('4'), A('4'), A('$'), C('D') },
|
|
K(5) = { '5', '%', A('5'), A('5'), A('%'), C('E') },
|
|
K(6) = { '6', '^', A('6'), A('6'), A('^'), C('^') },
|
|
K(7) = { '7', '&', A('7'), A('7'), A('&'), C('G') },
|
|
K(8) = { '8', '*', A('8'), A('8'), A('*'), C('H') },
|
|
K(9) = { '9', '(', A('9'), A('9'), A('('), C('I') },
|
|
K(0) = { '0', ')', A('0'), A('0'), A(')'), C('@') },
|
|
K(ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') },
|
|
K(ESCAPE) = { C('['), C('['), CA('['),CA('['),CA('['),C('[') },
|
|
K(BACKSPACE) = { C('H'), C('H'), CA('H'),CA('H'),CA('H'),DEL },
|
|
K(TAB) = { C('I'), C('I'), CA('I'),CA('I'),CA('I'),C('I') },
|
|
K(SPACEBAR) = { ' ', ' ', A(' '), A(' '), A(' '), C('@') },
|
|
K(DASH) = { '-', '_', A('-'), A('-'), A('_'), C('_') },
|
|
K(EQUAL) = { '=', '+', A('='), A('='), A('+'), C('@') },
|
|
K(OPEN_BRACKET) = { '[', '{', A('['), A('['), A('{'), C('[') },
|
|
K(CLOSE_BRACKET) = { ']', '}', A(']'), A(']'), A('}'), C(']') },
|
|
K(BACKSLASH) = { '\\', '|', A('\\'),A('\\'),A('|'), C('\\') },
|
|
K(SEMICOLON) = { ';', ':', A(';'), A(';'), A(':'), C('@') },
|
|
K(APOSTROPH) = { '\'', '"', A('\''),A('\''),A('"'), C('@') },
|
|
K(GRAVE_ACCENT) = { '`', '~', A('`'), A('`'), A('~'), C('@') },
|
|
K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') },
|
|
K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') },
|
|
K(SLASH) = { '/', '?', A('/'), A('/'), A('?'), 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), A(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 },
|
|
K(KP_SLASH) = { '/', '/', A('/'), A('/'), A('/'), C('@') },
|
|
K(KP_STAR) = { '*', '*', A('*'), A('*'), A('*'), C('@') },
|
|
K(KP_DASH) = { '-', '-', AMIN, AMIN, A('-'), CNMIN },
|
|
K(KP_PLUS) = { '+', '+', APLUS, APLUS, A('+'), CPLUS },
|
|
K(KP_ENTER) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') },
|
|
K(KP_1) = { NEND, '1', AEND, AEND, A('1'), CEND },
|
|
K(KP_2) = { NDOWN, '2', ADOWN, ADOWN, A('2'), CDOWN },
|
|
K(KP_3) = { NPGDN, '3', APGDN, APGDN, A('3'), CPGDN },
|
|
K(KP_4) = { NLEFT, '4', ALEFT, ALEFT, A('4'), CLEFT },
|
|
K(KP_5) = { NMID, '5', AMID, AMID, A('5'), CMID },
|
|
K(KP_6) = { NRIGHT, '6', ARIGHT, ARIGHT, A('6'), CRIGHT },
|
|
K(KP_7) = { NHOME, '7', AHOME, AHOME, A('7'), CHOME },
|
|
K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP },
|
|
K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP },
|
|
K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT },
|
|
K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL },
|
|
K(EUROPE_2) = { '<', '>', A('<'), A('|'), A('>'), C('@') },
|
|
K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') },
|
|
K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('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 }
|
|
};
|
|
#endif |