util: switch over to use keycodemapdb GIT submodule

A long time ago we imported the keymaps.csv file from GTK-VNC so we
can do conversions between keycode sets. Meanwhile lots of bug fixes
have gone into this CSV file and libvirt hasn't kept in sync. The
keymaps.csv file and associated generator script has been pulled out
of GTK-VNC into a dedicated GIT repo for use as a submodule. This
allows GTK-VNC, SPICE-GTK, QEMU and libvirt to share the same master
database and tools and pushing updates merely requires a submodule
commit update as with gnulib.

The test suite is updated to cover some extra boundary conditions.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrange 2017-03-02 10:46:53 +00:00
parent ab54d5f152
commit 02fb15fb60
8 changed files with 89 additions and 619 deletions

3
.gitignore vendored
View File

@ -159,7 +159,8 @@
/src/test_libvirt*.aug
/src/test_virtlockd.aug
/src/test_virtlogd.aug
/src/util/virkeymaps.h
/src/util/virkeycodetable*.h
/src/util/virkeynametable*.h
/src/virt-aa-helper
/src/virtlockd
/src/virtlogd

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "gnulib"]
path = .gnulib
url = git://git.sv.gnu.org/gnulib.git
[submodule "keycodemapdb"]
path = src/keycodemapdb
url = https://gitlab.com/keycodemap/keycodemapdb.git

View File

@ -52,7 +52,7 @@ AM_LDFLAGS = $(DRIVER_MODULES_LDFLAGS) \
$(MINGW_EXTRA_LDFLAGS) \
$(NULL)
EXTRA_DIST = $(conf_DATA) util/keymaps.csv
EXTRA_DIST = $(conf_DATA)
BUILT_SOURCES =
CLEANFILES =
@ -135,7 +135,6 @@ UTIL_SOURCES = \
util/virjson.c util/virjson.h \
util/virkeycode.c util/virkeycode.h \
util/virkeyfile.c util/virkeyfile.h \
util/virkeymaps.h \
util/virlease.c util/virlease.h \
util/virlockspace.c util/virlockspace.h \
util/virlog.c util/virlog.h \
@ -195,16 +194,42 @@ UTIL_SOURCES = \
util/virmdev.c util/virmdev.h \
$(NULL)
EXTRA_DIST += $(srcdir)/util/keymaps.csv $(srcdir)/util/virkeycode-mapgen.py
EXTRA_DIST += \
$(srcdir)/keycodemapdb/data/keymaps.csv \
$(srcdir)/keycodemapdb/tools/keymap-gen \
$(NULL)
BUILT_SOURCES += util/virkeymaps.h
MAINTAINERCLEANFILES += util/virkeymaps.h
util/virkeycodetable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeycodetable_,,' \
-e 's,\.h,,'` && \
$(MKDIR_P) util/ && \
$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
--lang stdc --varname virKeyCodeTable_$$NAME code-table \
$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > $@-tmp && \
mv $@-tmp $@ || rm -f $@-tmp
util/virkeymaps.h: $(srcdir)/util/keymaps.csv \
$(srcdir)/util/virkeycode-mapgen.py
$(MKDIR_P) util/
$(AM_V_GEN)$(PYTHON) $(srcdir)/util/virkeycode-mapgen.py \
<$(srcdir)/util/keymaps.csv >util/virkeymaps.h
util/virkeynametable_%.h: $(srcdir)/keycodemapdb/data/keymaps.csv \
$(srcdir)/keycodemapdb/tools/keymap-gen Makefile.am
$(AM_V_GEN)export NAME=`echo $@ | sed -e 's,util/virkeynametable_,,' \
-e 's,\.h,,'` && \
$(MKDIR_P) util/ && \
$(PYTHON) $(srcdir)/keycodemapdb/tools/keymap-gen \
--lang stdc --varname virKeyNameTable_$$NAME name-table \
$(srcdir)/keycodemapdb/data/keymaps.csv $$NAME > $@-tmp && \
mv $@-tmp $@ || rm -f $@-tmp
KEYCODES = linux osx atset1 atset2 atset3 xt xtkbd usb win32 rfb
KEYNAMES = linux osx win32
KEYTABLES = \
$(KEYCODES:%=util/virkeycodetable_%.h) \
$(KEYNAMES:%=util/virkeynametable_%.h) \
$(NULL)
UTIL_SOURCES += $(KEYTABLES)
BUILT_SOURCES += $(KEYTABLES)
MAINTAINERCLEANFILES += $(KEYTABLES)
# Internal generic driver infrastructure
DATATYPES_SOURCES = datatypes.h datatypes.c

1
src/keycodemapdb Submodule

@ -0,0 +1 @@
Subproject commit bd754b861e7de5c7919aa249a975913cb207b85d

View File

@ -1,464 +0,0 @@
"Linux Name","Linux Keycode","OS-X Name","OS-X Keycode","AT set1 keycode","AT set2 keycode","AT set3 keycode",XT,"XT KBD","USB Keycodes","Win32 Name","Win32 Keycode","Xwin XT","Xfree86 KBD XT"
KEY_RESERVED,0,,,,,,,,,,,,
KEY_ESC,1,Escape,0x35,1,118,8,1,1,41,VK_ESCAPE,0x1b,1,1
KEY_1,2,ANSI_1,0x12,2,22,22,2,2,30,VK_1,0x31,2,2
KEY_2,3,ANSI_2,0x13,3,30,30,3,3,31,VK_2,0x32,3,3
KEY_3,4,ANSI_3,0x14,4,38,38,4,4,32,VK_3,0x33,4,4
KEY_4,5,ANSI_4,0x15,5,37,37,5,5,33,VK_4,0x34,5,5
KEY_5,6,ANSI_5,0x17,6,46,46,6,6,34,VK_5,0x35,6,6
KEY_6,7,ANSI_6,0x16,7,54,54,7,7,35,VK_6,0x36,7,7
KEY_7,8,ANSI_7,0x1a,8,61,61,8,8,36,VK_7,0x37,8,8
KEY_8,9,ANSI_8,0x1c,9,62,62,9,9,37,VK_8,0x38,9,9
KEY_9,10,ANSI_9,0x19,10,70,70,10,10,38,VK_9,0x39,10,10
KEY_0,11,ANSI_0,0x1d,11,69,69,11,11,39,VK_0,0x30,11,11
KEY_MINUS,12,ANSI_Minus,0x1b,12,78,78,12,12,45,VK_OEM_MINUS,0xbd,12,12
KEY_EQUAL,13,ANSI_Equal,0x18,13,85,85,13,13,46,VK_OEM_PLUS,0xbb,13,13
KEY_BACKSPACE,14,Delete,0x33,14,102,102,14,14,42,VK_BACK,0x08,14,14
KEY_TAB,15,Tab,0x30,15,13,13,15,15,43,VK_TAB,0x09,15,15
KEY_Q,16,ANSI_Q,0xc,16,21,21,16,16,20,VK_Q,0x51,16,16
KEY_W,17,ANSI_W,0xd,17,29,29,17,17,26,VK_W,0x57,17,17
KEY_E,18,ANSI_E,0xe,18,36,36,18,18,8,VK_E,0x45,18,18
KEY_R,19,ANSI_R,0xf,19,45,45,19,19,21,VK_R,0x52,19,19
KEY_T,20,ANSI_T,0x11,20,44,44,20,20,23,VK_T,0x54,20,20
KEY_Y,21,ANSI_Y,0x10,21,53,53,21,21,28,VK_Y,0x59,21,21
KEY_U,22,ANSI_U,0x20,22,60,60,22,22,24,VK_U,0x55,22,22
KEY_I,23,ANSI_I,0x22,23,67,67,23,23,12,VK_I,0x49,23,23
KEY_O,24,ANSI_O,0x1f,24,68,68,24,24,18,VK_O,0x4f,24,24
KEY_P,25,ANSI_P,0x23,25,77,77,25,25,19,VK_P,0x50,25,25
KEY_LEFTBRACE,26,ANSI_LeftBracket,0x21,26,84,84,26,26,47,VK_OEM_4,0xdb,26,26
KEY_RIGHTBRACE,27,ANSI_RightBracket,0x1e,27,91,91,27,27,48,VK_OEM_6,0xdd,27,27
KEY_ENTER,28,Return,0x24,28,90,90,28,28,40,VK_RETURN,0x0d,28,28
KEY_LEFTCTRL,29,Control,0x3b,29,20,17,29,29,224,VK_LCONTROL,0xa2,29,29
KEY_LEFTCTRL,29,Control,0x3b,29,20,17,29,29,224,VK_CONTROL,0x11,29,29
KEY_A,30,ANSI_A,0x0,30,28,28,30,30,4,VK_A,0x41,30,30
KEY_S,31,ANSI_S,0x1,31,27,27,31,31,22,VK_S,0x53,31,31
KEY_D,32,ANSI_D,0x2,32,35,35,32,32,7,VK_D,0x44,32,32
KEY_F,33,ANSI_F,0x3,33,43,43,33,33,9,VK_F,0x46,33,33
KEY_G,34,ANSI_G,0x5,34,52,52,34,34,10,VK_G,0x47,34,34
KEY_H,35,ANSI_H,0x4,35,51,51,35,35,11,VK_H,0x48,35,35
KEY_J,36,ANSI_J,0x26,36,59,59,36,36,13,VK_J,0x4a,36,36
KEY_K,37,ANSI_K,0x28,37,66,66,37,37,14,VK_K,0x4b,37,37
KEY_L,38,ANSI_L,0x25,38,75,75,38,38,15,VK_L,0x4c,38,38
KEY_SEMICOLON,39,ANSI_Semicolon,0x29,39,76,76,39,39,51,VK_OEM_1,0xba,39,39
KEY_APOSTROPHE,40,ANSI_Quote,0x27,40,82,82,40,40,52,VK_OEM_2,0xbf,40,40
KEY_GRAVE,41,ANSI_Grave,0x32,41,14,14,41,41,53,VK_OEM_3,0xc0,41,41
KEY_SHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_SHIFT,0x10,42,42
KEY_LEFTSHIFT,42,Shift,0x38,42,18,18,42,42,225,VK_LSHIFT,0xa0,42,42
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,43,93,93,43,43,50,VK_OEM_5,0xdc,43,43
KEY_Z,44,ANSI_Z,0x6,44,26,26,44,44,29,VK_Z,0x5a,44,44
KEY_X,45,ANSI_X,0x7,45,34,34,45,45,27,VK_X,0x58,45,45
KEY_C,46,ANSI_C,0x8,46,33,33,46,46,6,VK_C,0x43,46,46
KEY_V,47,ANSI_V,0x9,47,42,42,47,47,25,VK_V,0x56,47,47
KEY_B,48,ANSI_B,0xb,48,50,50,48,48,5,VK_B,0x42,48,48
KEY_N,49,ANSI_N,0x2d,49,49,49,49,49,17,VK_N,0x4e,49,49
KEY_M,50,ANSI_M,0x2e,50,58,58,50,50,16,VK_M,0x4d,50,50
KEY_COMMA,51,ANSI_Comma,0x2b,51,65,65,51,51,54,VK_OEM_COMMA,0xbc,51,51
KEY_DOT,52,ANSI_Period,0x2f,52,73,73,52,52,55,VK_OEM_PERIOD,0xbe,52,52
KEY_SLASH,53,ANSI_Slash,0x2c,53,74,74,53,53,56,VK_OEM_2,0xbf,53,53
KEY_RIGHTSHIFT,54,RightShift,0x3c,54,89,89,54,54,229,VK_RSHIFT,0xa1,54,54
KEY_KPASTERISK,55,ANSI_KeypadMultiply,0x43,55,124,126,55,55,85,VK_MULTIPLY,0x6a,55,55
KEY_LEFTALT,56,Option,0x3a,56,17,25,56,56,226,VK_LMENU,0xa4,56,56
KEY_LEFTALT,56,Option,0x3a,56,17,25,56,56,226,VK_MENU,0x12,56,56
KEY_SPACE,57,Space,0x31,57,41,41,57,57,44,VK_SPACE,0x20,57,57
KEY_CAPSLOCK,58,CapsLock,0x39,58,88,20,58,58,57,VK_CAPITAL,0x14,58,58
KEY_F1,59,F1,0x7a,59,5,7,59,59,58,VK_F1,0x70,59,59
KEY_F2,60,F2,0x78,60,6,15,60,60,59,VK_F2,0x71,60,60
KEY_F3,61,F3,0x63,61,4,23,61,61,60,VK_F3,0x72,61,61
KEY_F4,62,F4,0x76,62,12,31,62,62,61,VK_F4,0x73,62,62
KEY_F5,63,F5,0x60,63,3,39,63,63,62,VK_F5,0x74,63,63
KEY_F6,64,F6,0x61,64,11,47,64,64,63,VK_F6,0x75,64,64
KEY_F7,65,F7,0x62,65,259,55,65,65,64,VK_F7,0x76,65,65
KEY_F8,66,F8,0x64,66,10,63,66,66,65,VK_F8,0x77,66,66
KEY_F9,67,F9,0x65,67,1,71,67,67,66,VK_F9,0x78,67,67
KEY_F10,68,F10,0x6d,68,9,79,68,68,67,VK_F10,0x79,68,68
KEY_NUMLOCK,69,,,69,119,118,69,69,83,VK_NUMLOCK,0x90,69,69
KEY_SCROLLLOCK,70,,,70,126,95,70,70,71,VK_SCROLL,0x91,70,70
KEY_KP7,71,ANSI_Keypad7,0x59,71,108,108,71,71,95,VK_NUMPAD7,0x67,71,71
KEY_KP8,72,ANSI_Keypad8,0x5b,72,117,117,72,72,96,VK_NUMPAD8,0x68,72,72
KEY_KP9,73,ANSI_Keypad9,0x5c,73,125,125,73,73,97,VK_NUMPAD9,0x69,73,73
KEY_KPMINUS,74,ANSI_KeypadMinus,0x4e,74,123,132,74,74,86,VK_SUBTRACT,0x6d,74,74
KEY_KP4,75,ANSI_Keypad4,0x56,75,107,107,75,75,92,VK_NUMPAD4,0x64,75,75
KEY_KP5,76,ANSI_Keypad5,0x57,76,115,115,76,76,93,VK_NUMPAD5,0x65,76,76
KEY_KP6,77,ANSI_Keypad6,0x58,77,116,116,77,77,94,VK_NUMPAD6,0x66,77,77
KEY_KPPLUS,78,ANSI_KeypadPlus,0x45,78,121,124,78,78,87,VK_ADD,0x6b,78,78
KEY_KP1,79,ANSI_Keypad1,0x53,79,105,105,79,79,89,VK_NUMPAD1,0x61,79,79
KEY_KP2,80,ANSI_Keypad2,0x54,80,114,114,80,80,90,VK_NUMPAD2,0x62,80,80
KEY_KP3,81,ANSI_Keypad3,0x55,81,122,122,81,81,91,VK_NUMPAD3,0x63,81,81
KEY_KP0,82,ANSI_Keypad0,0x52,82,112,112,82,82,98,VK_NUMPAD0,0x60,82,82
KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,83,113,113,83,83,99,VK_DECIMAL,0x6e,83,83
,84,,,,,,,84,,,,,
KEY_ZENKAKUHANKAKU,85,,,118,95,,,118,148,,,,
KEY_102ND,86,,,86,97,19,,86,100,VK_OEM_102,0xe1,,
KEY_F11,87,F11,0x67,87,120,86,101,87,68,VK_F11,0x7a,,
KEY_F12,88,F12,0x6f,88,7,94,102,88,69,VK_F12,0x7b,,
KEY_RO,89,,,115,81,,,115,135,,,,
KEY_KATAKANA,90,JIS_Kana????,0x68,120,99,,,120,146,VK_KANA,0x15,,
KEY_HIRAGANA,91,,,119,98,,,119,147,,,,
KEY_HENKAN,92,,,121,100,134,,121,138,,,,
KEY_KATAKANAHIRAGANA,93,,,112,19,135,,112,136,,,0xc8,0xc8
KEY_MUHENKAN,94,,,123,103,133,,123,139,,,,
KEY_KPJPCOMMA,95,JIS_KeypadComma,0x5f,92,39,,,92,140,,,,
KEY_KPENTER,96,ANSI_KeypadEnter,0x4c,,158,121,,284,88,,,0x64,0x64
KEY_RIGHTCTRL,97,RightControl,0x3e,,,88,,285,228,VK_RCONTROL,0xa3,0x65,0x65
KEY_KPSLASH,98,ANSI_KeypadDivide,0x4b,,181,119,,309,84,VK_DIVIDE,0x6f,0x68,0x68
KEY_SYSRQ,99,,,84,260,87,,84,70,"VK_SNAPSHOT ???",0x2c,0x67,0x67
KEY_RIGHTALT,100,RightOption,0x3d,,,57,,312,230,VK_RMENU,0xa5,0x69,0x69
KEY_LINEFEED,101,,,,,,,91,,,,,
KEY_HOME,102,Home,0x73,,224,110,,327,74,VK_HOME,0x24,0x59,0x59
KEY_UP,103,UpArrow,0x7e,,236,99,109,328,82,VK_UP,0x26,0x5a,0x5a
KEY_PAGEUP,104,PageUp,0x74,,201,111,,329,75,VK_PRIOR,0x21,0x5b,0x5b
KEY_LEFT,105,LeftArrow,0x7b,,203,97,111,331,80,VK_LEFT,0x25,0x5c,0x5c
KEY_RIGHT,106,RightArrow,0x7c,,205,106,112,333,79,VK_RIGHT,0x27,0x5e,0x5e
KEY_END,107,End,0x77,,225,101,,335,77,VK_END,0x23,0x5f,0x5f
KEY_DOWN,108,DownArrow,0x7d,,254,96,110,336,81,VK_DOWN,0x28,0x60,0x60
KEY_PAGEDOWN,109,PageDown,0x79,,243,109,,337,78,VK_NEXT,0x22,0x61,0x61
KEY_INSERT,110,,,,210,103,107,338,73,VK_INSERT,0x2d,0x62,0x62
KEY_DELETE,111,ForwardDelete,0x75,,244,100,108,339,76,VK_DELETE,0x2e,0x63,0x63
KEY_MACRO,112,,,,239,142,,367,,,,,
KEY_MUTE,113,Mute,0x4a,,251,156,,288,239,VK_VOLUME_MUTE,0xad,,
KEY_VOLUMEDOWN,114,VolumeDown,0x49,,,157,,302,238,VK_VOLUME_DOWN,0xae,,
KEY_VOLUMEUP,115,VolumeUp,0x48,,233,149,,304,237,VK_VOLUME_UP,0xaf,,
KEY_POWER,116,,,,,,,350,102,,,,
KEY_KPEQUAL,117,ANSI_KeypadEquals,0x51,89,15,,,89,103,,,0x76,0x76
KEY_KPPLUSMINUS,118,,,,206,,,334,,,,,
KEY_PAUSE,119,,,,198,98,,326,72,VK_PAUSE,0x013,0x66,0x66
KEY_SCALE,120,,,,,,,267,,,,,
KEY_KPCOMMA,121,ANSI_KeypadClear????,0x47,126,109,,,126,133,VK_SEPARATOR??,0x6c,,
KEY_HANGEUL,122,,,,,,,,144,VK_HANGEUL,0x15,,
KEY_HANJA,123,,,,,,,269,145,VK_HANJA,0x19,,
KEY_YEN,124,JIS_Yen,0x5d,125,106,,,125,137,,,0x7d,0x7d
KEY_LEFTMETA,125,Command,0x37,,,139,,347,227,VK_LWIN,0x5b,0x6b,0x6b
KEY_RIGHTMETA,126,,,,,140,,348,231,VK_RWIN,0x5c,0x6c,0x6c
KEY_COMPOSE,127,Function,0x3f,,,141,,349,101,VK_APPS,0x5d,0x6d,0x6d
KEY_STOP,128,,,,,10,,360,243,VK_BROWSER_STOP,0xa9,,
KEY_AGAIN,129,,,,,11,,261,121,,,,
KEY_PROPS,130,,,,,12,,262,118,,,,
KEY_UNDO,131,,,,,16,,263,122,,,,
KEY_FRONT,132,,,,,,,268,119,,,,
KEY_COPY,133,,,,,24,,376,124,,,,
KEY_OPEN,134,,,,,32,,100,116,,,,
KEY_PASTE,135,,,,,40,,101,125,,,,
KEY_FIND,136,,,,,48,,321,244,,,,
KEY_CUT,137,,,,,56,,316,123,,,,
KEY_HELP,138,,,,,9,,373,117,VK_HELP,0x2f,,
KEY_MENU,139,,,,,145,,286,,,,,
KEY_CALC,140,,,,174,163,,289,251,,,,
KEY_SETUP,141,,,,,,,102,,,,,
KEY_SLEEP,142,,,,,,,351,248,VK_SLEEP,0x5f,,
KEY_WAKEUP,143,,,,,,,355,,,,,
KEY_FILE,144,,,,,,,103,,,,,
KEY_SENDFILE,145,,,,,,,104,,,,,
KEY_DELETEFILE,146,,,,,,,105,,,,,
KEY_XFER,147,,,,,162,,275,,,,,
KEY_PROG1,148,,,,,160,,287,,,,,
KEY_PROG2,149,,,,,161,,279,,,,,
KEY_WWW,150,,,,,,,258,240,,,,
KEY_MSDOS,151,,,,,,,106,,,,,
KEY_SCREENLOCK,152,,,,,150,,274,249,,,,
KEY_DIRECTION,153,,,,,,,107,,,,,
KEY_CYCLEWINDOWS,154,,,,,155,,294,,,,,
KEY_MAIL,155,,,,,,,364,,,,,
KEY_BOOKMARKS,156,,,,,,,358,,,,,
KEY_COMPUTER,157,,,,,,,363,,,,,
KEY_BACK,158,,,,,,,362,241,VK_BROWSER_BACK,0xa6,,
KEY_FORWARD,159,,,,,,,361,242,VK_BROWSER_FORWARD,0xa7,,
KEY_CLOSECD,160,,,,,154,,291,,,,,
KEY_EJECTCD,161,,,,,,,108,236,,,,
KEY_EJECTCLOSECD,162,,,,,,,381,,,,,
KEY_NEXTSONG,163,,,,241,147,,281,235,VK_MEDIA_NEXT_TRACK,0xb0,,
KEY_PLAYPAUSE,164,,,,173,,,290,232,VK_MEDIA_PLAY_PAUSE,0xb3,,
KEY_PREVIOUSSONG,165,,,,250,148,,272,234,VK_MEDIA_PREV_TRACK,0xb1,,
KEY_STOPCD,166,,,,164,152,,292,233,VK_MEDIA_STOP,0xb2,,
KEY_RECORD,167,,,,,158,,305,,,,,
KEY_REWIND,168,,,,,159,,280,,,,,
KEY_PHONE,169,,,,,,,99,,,,,
KEY_ISO,170,ISO_Section,0xa,,,,,112,,,,,
KEY_CONFIG,171,,,,,,,257,,,,,
KEY_HOMEPAGE,172,,,,178,151,,306,,VK_BROWSER_HOME,0xac,,
KEY_REFRESH,173,,,,,,,359,250,VK_BROWSER_REFRESH,0xa8,,
KEY_EXIT,174,,,,,,,113,,,,,
KEY_MOVE,175,,,,,,,114,,,,,
KEY_EDIT,176,,,,,,,264,247,,,,
KEY_SCROLLUP,177,,,,,,,117,245,,,,
KEY_SCROLLDOWN,178,,,,,,,271,246,,,,
KEY_KPLEFTPAREN,179,,,,,,,374,182,,,,
KEY_KPRIGHTPAREN,180,,,,,,,379,183,,,,
KEY_NEW,181,,,,,,,265,,,,,
KEY_REDO,182,,,,,,,266,,,,,
KEY_F13,183,F13,0x69,93,47,127,,93,104,VK_F13,0x7c,0x6e,0x6e
KEY_F14,184,F14,0x6b,94,55,128,,94,105,VK_F14,0x7d,0x6f,0x6f
KEY_F15,185,F15,0x71,95,63,129,,95,106,VK_F15,0x7e,0x70,0x70
KEY_F16,186,F16,0x6a,,,130,,85,107,VK_F16,0x7f,0x71,0x71
KEY_F17,187,F17,0x40,,,131,,259,108,VK_F17,0x80,0x72,0x72
KEY_F18,188,F18,0x4f,,,,,375,109,VK_F18,0x81,,
KEY_F19,189,F19,0x50,,,,,260,110,VK_F19,0x82,,
KEY_F20,190,F20,0x5a,,,,,90,111,VK_F20,0x83,,
KEY_F21,191,,,,,,,116,112,VK_F21,0x84,,
KEY_F22,192,,,,,,,377,113,VK_F22,0x85,,
KEY_F23,193,,,,,,,109,114,VK_F23,0x86,,
KEY_F24,194,,,,,,,111,115,VK_F24,0x87,,
,195,,,,,,,277,,,,,
,196,,,,,,,278,,,,,
,197,,,,,,,282,,,,,
,198,,,,,,,283,,,,,
,199,,,,,,,295,,,,,
KEY_PLAYCD,200,,,,,,,296,,,,,
KEY_PAUSECD,201,,,,,,,297,,,,,
KEY_PROG3,202,,,,,,,299,,,,,
KEY_PROG4,203,,,,,,,300,,,,,
KEY_DASHBOARD,204,,,,,,,301,,,,,
KEY_SUSPEND,205,,,,,,,293,,,,,
KEY_CLOSE,206,,,,,,,303,,,,,
KEY_PLAY,207,,,,,,,307,,VK_PLAY,0xfa,,
KEY_FASTFORWARD,208,,,,,,,308,,,,,
KEY_BASSBOOST,209,,,,,,,310,,,,,
KEY_PRINT,210,,,,,,,313,,VK_PRINT,0x2a,,
KEY_HP,211,,,,,,,314,,,,,
KEY_CAMERA,212,,,,,,,315,,,,,
KEY_SOUND,213,,,,,,,317,,,,,
KEY_QUESTION,214,,,,,,,318,,,,,
KEY_EMAIL,215,,,,,,,319,,VK_LAUNCH_MAIL,0xb4,,
KEY_CHAT,216,,,,,,,320,,,,,
KEY_SEARCH,217,,,,,,,357,,VK_BROWSER_SEARCH,0xaa,,
KEY_CONNECT,218,,,,,,,322,,,,,
KEY_FINANCE,219,,,,,,,323,,,,,
KEY_SPORT,220,,,,,,,324,,,,,
KEY_SHOP,221,,,,,,,325,,,,,
KEY_ALTERASE,222,,,,,,,276,,,,,
KEY_CANCEL,223,,,,,,,330,,,,,
KEY_BRIGHTNESSDOWN,224,,,,,,,332,,,,,
KEY_BRIGHTNESSUP,225,,,,,,,340,,,,,
KEY_MEDIA,226,,,,,,,365,,,,,
KEY_SWITCHVIDEOMODE,227,,,,,,,342,,,,,
KEY_KBDILLUMTOGGLE,228,,,,,,,343,,,,,
KEY_KBDILLUMDOWN,229,,,,,,,344,,,,,
KEY_KBDILLUMUP,230,,,,,,,345,,,,,
KEY_SEND,231,,,,,,,346,,,,,
KEY_REPLY,232,,,,,,,356,,,,,
KEY_FORWARDMAIL,233,,,,,,,270,,,,,
KEY_SAVE,234,,,,,,,341,,,,,
KEY_DOCUMENTS,235,,,,,,,368,,,,,
KEY_BATTERY,236,,,,,,,369,,,,,
KEY_BLUETOOTH,237,,,,,,,370,,,,,
KEY_WLAN,238,,,,,,,371,,,,,
KEY_UWB,239,,,,,,,372,,,,,
KEY_UNKNOWN,240,,,,,,,,,,,,
KEY_VIDEO_NEXT,241,,,,,,,,,,,,
KEY_VIDEO_PREV,242,,,,,,,,,,,,
KEY_BRIGHTNESS_CYCLE,243,,,,,,,,,,,,
KEY_BRIGHTNESS_ZERO,244,,,,,,,,,,,,
KEY_DISPLAY_OFF,245,,,,,,,,,,,,
KEY_WIMAX,246,,,,,,,,,,,,
,247,,,,,,,,,,,,
,248,,,,,,,,,,,,
,249,,,,,,,,,,,,
,250,,,,,,,,,,,,
,251,,,,,,,,,,,,
,252,,,,,,,,,,,,
,253,,,,,,,,,,,,
,254,,,,,,,,,,,,
,255,,,,182,,,,,,,,
BTN_MISC,0x100,,,,,,,,,,,,
BTN_0,0x100,,,,,,,,,VK_LBUTTON,0x01,,
BTN_1,0x101,,,,,,,,,VK_RBUTTON,0x02,,
BTN_2,0x102,,,,,,,,,VK_MBUTTON,0x04,,
BTN_3,0x103,,,,,,,,,VK_XBUTTON1,0x05,,
BTN_4,0x104,,,,,,,,,VK_XBUTTON2,0x06,,
BTN_5,0x105,,,,,,,,,,,,
BTN_6,0x106,,,,,,,,,,,,
BTN_7,0x107,,,,,,,,,,,,
BTN_8,0x108,,,,,,,,,,,,
BTN_9,0x109,,,,,,,,,,,,
BTN_MOUSE,0x110,,,,,,,,,,,,
BTN_LEFT,0x110,,,,,,,,,,,,
BTN_RIGHT,0x111,,,,,,,,,,,,
BTN_MIDDLE,0x112,,,,,,,,,,,,
BTN_SIDE,0x113,,,,,,,,,,,,
BTN_EXTRA,0x114,,,,,,,,,,,,
BTN_FORWARD,0x115,,,,,,,,,,,,
BTN_BACK,0x116,,,,,,,,,,,,
BTN_TASK,0x117,,,,,,,,,,,,
BTN_JOYSTICK,0x120,,,,,,,,,,,,
BTN_TRIGGER,0x120,,,,,,,,,,,,
BTN_THUMB,0x121,,,,,,,,,,,,
BTN_THUMB2,0x122,,,,,,,,,,,,
BTN_TOP,0x123,,,,,,,,,,,,
BTN_TOP2,0x124,,,,,,,,,,,,
BTN_PINKIE,0x125,,,,,,,,,,,,
BTN_BASE,0x126,,,,,,,,,,,,
BTN_BASE2,0x127,,,,,,,,,,,,
BTN_BASE3,0x128,,,,,,,,,,,,
BTN_BASE4,0x129,,,,,,,,,,,,
BTN_BASE5,0x12a,,,,,,,,,,,,
BTN_BASE6,0x12b,,,,,,,,,,,,
BTN_DEAD,0x12f,,,,,,,,,,,,
BTN_GAMEPAD,0x130,,,,,,,,,,,,
BTN_A,0x130,,,,,,,,,,,,
BTN_B,0x131,,,,,,,,,,,,
BTN_C,0x132,,,,,,,,,,,,
BTN_X,0x133,,,,,,,,,,,,
BTN_Y,0x134,,,,,,,,,,,,
BTN_Z,0x135,,,,,,,,,,,,
BTN_TL,0x136,,,,,,,,,,,,
BTN_TR,0x137,,,,,,,,,,,,
BTN_TL2,0x138,,,,,,,,,,,,
BTN_TR2,0x139,,,,,,,,,,,,
BTN_SELECT,0x13a,,,,,,,,,,,,
BTN_START,0x13b,,,,,,,,,,,,
BTN_MODE,0x13c,,,,,,,,,,,,
BTN_THUMBL,0x13d,,,,,,,,,,,,
BTN_THUMBR,0x13e,,,,,,,,,,,,
BTN_DIGI,0x140,,,,,,,,,,,,
BTN_TOOL_PEN,0x140,,,,,,,,,,,,
BTN_TOOL_RUBBER,0x141,,,,,,,,,,,,
BTN_TOOL_BRUSH,0x142,,,,,,,,,,,,
BTN_TOOL_PENCIL,0x143,,,,,,,,,,,,
BTN_TOOL_AIRBRUSH,0x144,,,,,,,,,,,,
BTN_TOOL_FINGER,0x145,,,,,,,,,,,,
BTN_TOOL_MOUSE,0x146,,,,,,,,,,,,
BTN_TOOL_LENS,0x147,,,,,,,,,,,,
BTN_TOUCH,0x14a,,,,,,,,,,,,
BTN_STYLUS,0x14b,,,,,,,,,,,,
BTN_STYLUS2,0x14c,,,,,,,,,,,,
BTN_TOOL_DOUBLETAP,0x14d,,,,,,,,,,,,
BTN_TOOL_TRIPLETAP,0x14e,,,,,,,,,,,,
BTN_TOOL_QUADTAP,0x14f,,,,,,,,,,,,
BTN_WHEEL,0x150,,,,,,,,,,,,
BTN_GEAR_DOWN,0x150,,,,,,,,,,,,
BTN_GEAR_UP,0x151,,,,,,,,,,,,
KEY_OK,0x160,,,,,,,,,,,,
KEY_SELECT,0x161,,,,,,,,,VK_SELECT,0x29,,
KEY_GOTO,0x162,,,,,,,,,,,,
KEY_CLEAR,0x163,,,,,,,,,,,,
KEY_POWER2,0x164,,,,,,,,,,,,
KEY_OPTION,0x165,,,,,,,,,,,,
KEY_INFO,0x166,,,,,,,,,,,,
KEY_TIME,0x167,,,,,,,,,,,,
KEY_VENDOR,0x168,,,,,,,,,,,,
KEY_ARCHIVE,0x169,,,,,,,,,,,,
KEY_PROGRAM,0x16a,,,,,,,,,,,,
KEY_CHANNEL,0x16b,,,,,,,,,,,,
KEY_FAVORITES,0x16c,,,,,,,,,VK_BROWSER_FAVOURITES,0xab,,
KEY_EPG,0x16d,,,,,,,,,,,,
KEY_PVR,0x16e,,,,,,,,,,,,
KEY_MHP,0x16f,,,,,,,,,,,,
KEY_LANGUAGE,0x170,,,,,,,,,,,,
KEY_TITLE,0x171,,,,,,,,,,,,
KEY_SUBTITLE,0x172,,,,,,,,,,,,
KEY_ANGLE,0x173,,,,,,,,,,,,
KEY_ZOOM,0x174,,,,,,,,,VK_ZOOM,0xfb,,
KEY_MODE,0x175,,,,,,,,,,,,
KEY_KEYBOARD,0x176,,,,,,,,,,,,
KEY_SCREEN,0x177,,,,,,,,,,,,
KEY_PC,0x178,,,,,,,,,,,,
KEY_TV,0x179,,,,,,,,,,,,
KEY_TV2,0x17a,,,,,,,,,,,,
KEY_VCR,0x17b,,,,,,,,,,,,
KEY_VCR2,0x17c,,,,,,,,,,,,
KEY_SAT,0x17d,,,,,,,,,,,,
KEY_SAT2,0x17e,,,,,,,,,,,,
KEY_CD,0x17f,,,,,,,,,,,,
KEY_TAPE,0x180,,,,,,,,,,,,
KEY_RADIO,0x181,,,,,,,,,,,,
KEY_TUNER,0x182,,,,,,,,,,,,
KEY_PLAYER,0x183,,,,,,,,,,,,
KEY_TEXT,0x184,,,,,,,,,,,,
KEY_DVD,0x185,,,,,,,,,,,,
KEY_AUX,0x186,,,,,,,,,,,,
KEY_MP3,0x187,,,,,,,,,,,,
KEY_AUDIO,0x188,,,,,,,,,,,,
KEY_VIDEO,0x189,,,,,,,,,,,,
KEY_DIRECTORY,0x18a,,,,,,,,,,,,
KEY_LIST,0x18b,,,,,,,,,,,,
KEY_MEMO,0x18c,,,,,,,,,,,,
KEY_CALENDAR,0x18d,,,,,,,,,,,,
KEY_RED,0x18e,,,,,,,,,,,,
KEY_GREEN,0x18f,,,,,,,,,,,,
KEY_YELLOW,0x190,,,,,,,,,,,,
KEY_BLUE,0x191,,,,,,,,,,,,
KEY_CHANNELUP,0x192,,,,,,,,,,,,
KEY_CHANNELDOWN,0x193,,,,,,,,,,,,
KEY_FIRST,0x194,,,,,,,,,,,,
KEY_LAST,0x195,,,,,,,,,,,,
KEY_AB,0x196,,,,,,,,,,,,
KEY_NEXT,0x197,,,,,,,,,,,,
KEY_RESTART,0x198,,,,,,,,,,,,
KEY_SLOW,0x199,,,,,,,,,,,,
KEY_SHUFFLE,0x19a,,,,,,,,,,,,
KEY_BREAK,0x19b,,,,,,,,,,,,
KEY_PREVIOUS,0x19c,,,,,,,,,,,,
KEY_DIGITS,0x19d,,,,,,,,,,,,
KEY_TEEN,0x19e,,,,,,,,,,,,
KEY_TWEN,0x19f,,,,,,,,,,,,
KEY_VIDEOPHONE,0x1a0,,,,,,,,,,,,
KEY_GAMES,0x1a1,,,,,,,,,,,,
KEY_ZOOMIN,0x1a2,,,,,,,,,,,,
KEY_ZOOMOUT,0x1a3,,,,,,,,,,,,
KEY_ZOOMRESET,0x1a4,,,,,,,,,,,,
KEY_WORDPROCESSOR,0x1a5,,,,,,,,,,,,
KEY_EDITOR,0x1a6,,,,,,,,,,,,
KEY_SPREADSHEET,0x1a7,,,,,,,,,,,,
KEY_GRAPHICSEDITOR,0x1a8,,,,,,,,,,,,
KEY_PRESENTATION,0x1a9,,,,,,,,,,,,
KEY_DATABASE,0x1aa,,,,,,,,,,,,
KEY_NEWS,0x1ab,,,,,,,,,,,,
KEY_VOICEMAIL,0x1ac,,,,,,,,,,,,
KEY_ADDRESSBOOK,0x1ad,,,,,,,,,,,,
KEY_MESSENGER,0x1ae,,,,,,,,,,,,
KEY_DISPLAYTOGGLE,0x1af,,,,,,,,,,,,
KEY_SPELLCHECK,0x1b0,,,,,,,,,,,,
KEY_LOGOFF,0x1b1,,,,,,,,,,,,
KEY_DOLLAR,0x1b2,,,,,,,,,,,,
KEY_EURO,0x1b3,,,,,,,,,,,,
KEY_FRAMEBACK,0x1b4,,,,,,,,,,,,
KEY_FRAMEFORWARD,0x1b5,,,,,,,,,,,,
KEY_CONTEXT_MENU,0x1b6,,,,,,,,,,,,
KEY_MEDIA_REPEAT,0x1b7,,,,,,,,,,,,
KEY_DEL_EOL,0x1c0,,,,,,,,,,,,
KEY_DEL_EOS,0x1c1,,,,,,,,,,,,
KEY_INS_LINE,0x1c2,,,,,,,,,,,,
KEY_DEL_LINE,0x1c3,,,,,,,,,,,,
KEY_FN,0x1d0,,,,,,,,,,,,
KEY_FN_ESC,0x1d1,,,,,,,,,,,,
KEY_FN_F1,0x1d2,,,,,,,,,,,,
KEY_FN_F2,0x1d3,,,,,,,,,,,,
KEY_FN_F3,0x1d4,,,,,,,,,,,,
KEY_FN_F4,0x1d5,,,,,,,,,,,,
KEY_FN_F5,0x1d6,,,,,,,,,,,,
KEY_FN_F6,0x1d7,,,,,,,,,,,,
KEY_FN_F7,0x1d8,,,,,,,,,,,,
KEY_FN_F8,0x1d9,,,,,,,,,,,,
KEY_FN_F9,0x1da,,,,,,,,,,,,
KEY_FN_F10,0x1db,,,,,,,,,,,,
KEY_FN_F11,0x1dc,,,,,,,,,,,,
KEY_FN_F12,0x1dd,,,,,,,,,,,,
KEY_FN_1,0x1de,,,,,,,,,,,,
KEY_FN_2,0x1df,,,,,,,,,,,,
KEY_FN_D,0x1e0,,,,,,,,,,,,
KEY_FN_E,0x1e1,,,,,,,,,,,,
KEY_FN_F,0x1e2,,,,,,,,,,,,
KEY_FN_S,0x1e3,,,,,,,,,,,,
KEY_FN_B,0x1e4,,,,,,,,,,,,
KEY_BRL_DOT1,0x1f1,,,,,,,,,,,,
KEY_BRL_DOT2,0x1f2,,,,,,,,,,,,
KEY_BRL_DOT3,0x1f3,,,,,,,,,,,,
KEY_BRL_DOT4,0x1f4,,,,,,,,,,,,
KEY_BRL_DOT5,0x1f5,,,,,,,,,,,,
KEY_BRL_DOT6,0x1f6,,,,,,,,,,,,
KEY_BRL_DOT7,0x1f7,,,,,,,,,,,,
KEY_BRL_DOT8,0x1f8,,,,,,,,,,,,
KEY_BRL_DOT9,0x1f9,,,,,,,,,,,,
KEY_BRL_DOT10,0x1fa,,,,,,,,,,,,
KEY_NUMERIC_0,0x200,,,,,,,,,,,,
KEY_NUMERIC_1,0x201,,,,,,,,,,,,
KEY_NUMERIC_2,0x202,,,,,,,,,,,,
KEY_NUMERIC_3,0x203,,,,,,,,,,,,
KEY_NUMERIC_4,0x204,,,,,,,,,,,,
KEY_NUMERIC_5,0x205,,,,,,,,,,,,
KEY_NUMERIC_6,0x206,,,,,,,,,,,,
KEY_NUMERIC_7,0x207,,,,,,,,,,,,
KEY_NUMERIC_8,0x208,,,,,,,,,,,,
KEY_NUMERIC_9,0x209,,,,,,,,,,,,
KEY_NUMERIC_STAR,0x20a,,,,,,,,,,,,
KEY_NUMERIC_POUND,0x20b,,,,,,,,,,,,
KEY_RFKILL,0x20c,,,,,,,,,,,,
1 Linux Name Linux Keycode OS-X Name OS-X Keycode AT set1 keycode AT set2 keycode AT set3 keycode XT XT KBD USB Keycodes Win32 Name Win32 Keycode Xwin XT Xfree86 KBD XT
2 KEY_RESERVED 0
3 KEY_ESC 1 Escape 0x35 1 118 8 1 1 41 VK_ESCAPE 0x1b 1 1
4 KEY_1 2 ANSI_1 0x12 2 22 22 2 2 30 VK_1 0x31 2 2
5 KEY_2 3 ANSI_2 0x13 3 30 30 3 3 31 VK_2 0x32 3 3
6 KEY_3 4 ANSI_3 0x14 4 38 38 4 4 32 VK_3 0x33 4 4
7 KEY_4 5 ANSI_4 0x15 5 37 37 5 5 33 VK_4 0x34 5 5
8 KEY_5 6 ANSI_5 0x17 6 46 46 6 6 34 VK_5 0x35 6 6
9 KEY_6 7 ANSI_6 0x16 7 54 54 7 7 35 VK_6 0x36 7 7
10 KEY_7 8 ANSI_7 0x1a 8 61 61 8 8 36 VK_7 0x37 8 8
11 KEY_8 9 ANSI_8 0x1c 9 62 62 9 9 37 VK_8 0x38 9 9
12 KEY_9 10 ANSI_9 0x19 10 70 70 10 10 38 VK_9 0x39 10 10
13 KEY_0 11 ANSI_0 0x1d 11 69 69 11 11 39 VK_0 0x30 11 11
14 KEY_MINUS 12 ANSI_Minus 0x1b 12 78 78 12 12 45 VK_OEM_MINUS 0xbd 12 12
15 KEY_EQUAL 13 ANSI_Equal 0x18 13 85 85 13 13 46 VK_OEM_PLUS 0xbb 13 13
16 KEY_BACKSPACE 14 Delete 0x33 14 102 102 14 14 42 VK_BACK 0x08 14 14
17 KEY_TAB 15 Tab 0x30 15 13 13 15 15 43 VK_TAB 0x09 15 15
18 KEY_Q 16 ANSI_Q 0xc 16 21 21 16 16 20 VK_Q 0x51 16 16
19 KEY_W 17 ANSI_W 0xd 17 29 29 17 17 26 VK_W 0x57 17 17
20 KEY_E 18 ANSI_E 0xe 18 36 36 18 18 8 VK_E 0x45 18 18
21 KEY_R 19 ANSI_R 0xf 19 45 45 19 19 21 VK_R 0x52 19 19
22 KEY_T 20 ANSI_T 0x11 20 44 44 20 20 23 VK_T 0x54 20 20
23 KEY_Y 21 ANSI_Y 0x10 21 53 53 21 21 28 VK_Y 0x59 21 21
24 KEY_U 22 ANSI_U 0x20 22 60 60 22 22 24 VK_U 0x55 22 22
25 KEY_I 23 ANSI_I 0x22 23 67 67 23 23 12 VK_I 0x49 23 23
26 KEY_O 24 ANSI_O 0x1f 24 68 68 24 24 18 VK_O 0x4f 24 24
27 KEY_P 25 ANSI_P 0x23 25 77 77 25 25 19 VK_P 0x50 25 25
28 KEY_LEFTBRACE 26 ANSI_LeftBracket 0x21 26 84 84 26 26 47 VK_OEM_4 0xdb 26 26
29 KEY_RIGHTBRACE 27 ANSI_RightBracket 0x1e 27 91 91 27 27 48 VK_OEM_6 0xdd 27 27
30 KEY_ENTER 28 Return 0x24 28 90 90 28 28 40 VK_RETURN 0x0d 28 28
31 KEY_LEFTCTRL 29 Control 0x3b 29 20 17 29 29 224 VK_LCONTROL 0xa2 29 29
32 KEY_LEFTCTRL 29 Control 0x3b 29 20 17 29 29 224 VK_CONTROL 0x11 29 29
33 KEY_A 30 ANSI_A 0x0 30 28 28 30 30 4 VK_A 0x41 30 30
34 KEY_S 31 ANSI_S 0x1 31 27 27 31 31 22 VK_S 0x53 31 31
35 KEY_D 32 ANSI_D 0x2 32 35 35 32 32 7 VK_D 0x44 32 32
36 KEY_F 33 ANSI_F 0x3 33 43 43 33 33 9 VK_F 0x46 33 33
37 KEY_G 34 ANSI_G 0x5 34 52 52 34 34 10 VK_G 0x47 34 34
38 KEY_H 35 ANSI_H 0x4 35 51 51 35 35 11 VK_H 0x48 35 35
39 KEY_J 36 ANSI_J 0x26 36 59 59 36 36 13 VK_J 0x4a 36 36
40 KEY_K 37 ANSI_K 0x28 37 66 66 37 37 14 VK_K 0x4b 37 37
41 KEY_L 38 ANSI_L 0x25 38 75 75 38 38 15 VK_L 0x4c 38 38
42 KEY_SEMICOLON 39 ANSI_Semicolon 0x29 39 76 76 39 39 51 VK_OEM_1 0xba 39 39
43 KEY_APOSTROPHE 40 ANSI_Quote 0x27 40 82 82 40 40 52 VK_OEM_2 0xbf 40 40
44 KEY_GRAVE 41 ANSI_Grave 0x32 41 14 14 41 41 53 VK_OEM_3 0xc0 41 41
45 KEY_SHIFT 42 Shift 0x38 42 18 18 42 42 225 VK_SHIFT 0x10 42 42
46 KEY_LEFTSHIFT 42 Shift 0x38 42 18 18 42 42 225 VK_LSHIFT 0xa0 42 42
47 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 43 93 93 43 43 50 VK_OEM_5 0xdc 43 43
48 KEY_Z 44 ANSI_Z 0x6 44 26 26 44 44 29 VK_Z 0x5a 44 44
49 KEY_X 45 ANSI_X 0x7 45 34 34 45 45 27 VK_X 0x58 45 45
50 KEY_C 46 ANSI_C 0x8 46 33 33 46 46 6 VK_C 0x43 46 46
51 KEY_V 47 ANSI_V 0x9 47 42 42 47 47 25 VK_V 0x56 47 47
52 KEY_B 48 ANSI_B 0xb 48 50 50 48 48 5 VK_B 0x42 48 48
53 KEY_N 49 ANSI_N 0x2d 49 49 49 49 49 17 VK_N 0x4e 49 49
54 KEY_M 50 ANSI_M 0x2e 50 58 58 50 50 16 VK_M 0x4d 50 50
55 KEY_COMMA 51 ANSI_Comma 0x2b 51 65 65 51 51 54 VK_OEM_COMMA 0xbc 51 51
56 KEY_DOT 52 ANSI_Period 0x2f 52 73 73 52 52 55 VK_OEM_PERIOD 0xbe 52 52
57 KEY_SLASH 53 ANSI_Slash 0x2c 53 74 74 53 53 56 VK_OEM_2 0xbf 53 53
58 KEY_RIGHTSHIFT 54 RightShift 0x3c 54 89 89 54 54 229 VK_RSHIFT 0xa1 54 54
59 KEY_KPASTERISK 55 ANSI_KeypadMultiply 0x43 55 124 126 55 55 85 VK_MULTIPLY 0x6a 55 55
60 KEY_LEFTALT 56 Option 0x3a 56 17 25 56 56 226 VK_LMENU 0xa4 56 56
61 KEY_LEFTALT 56 Option 0x3a 56 17 25 56 56 226 VK_MENU 0x12 56 56
62 KEY_SPACE 57 Space 0x31 57 41 41 57 57 44 VK_SPACE 0x20 57 57
63 KEY_CAPSLOCK 58 CapsLock 0x39 58 88 20 58 58 57 VK_CAPITAL 0x14 58 58
64 KEY_F1 59 F1 0x7a 59 5 7 59 59 58 VK_F1 0x70 59 59
65 KEY_F2 60 F2 0x78 60 6 15 60 60 59 VK_F2 0x71 60 60
66 KEY_F3 61 F3 0x63 61 4 23 61 61 60 VK_F3 0x72 61 61
67 KEY_F4 62 F4 0x76 62 12 31 62 62 61 VK_F4 0x73 62 62
68 KEY_F5 63 F5 0x60 63 3 39 63 63 62 VK_F5 0x74 63 63
69 KEY_F6 64 F6 0x61 64 11 47 64 64 63 VK_F6 0x75 64 64
70 KEY_F7 65 F7 0x62 65 259 55 65 65 64 VK_F7 0x76 65 65
71 KEY_F8 66 F8 0x64 66 10 63 66 66 65 VK_F8 0x77 66 66
72 KEY_F9 67 F9 0x65 67 1 71 67 67 66 VK_F9 0x78 67 67
73 KEY_F10 68 F10 0x6d 68 9 79 68 68 67 VK_F10 0x79 68 68
74 KEY_NUMLOCK 69 69 119 118 69 69 83 VK_NUMLOCK 0x90 69 69
75 KEY_SCROLLLOCK 70 70 126 95 70 70 71 VK_SCROLL 0x91 70 70
76 KEY_KP7 71 ANSI_Keypad7 0x59 71 108 108 71 71 95 VK_NUMPAD7 0x67 71 71
77 KEY_KP8 72 ANSI_Keypad8 0x5b 72 117 117 72 72 96 VK_NUMPAD8 0x68 72 72
78 KEY_KP9 73 ANSI_Keypad9 0x5c 73 125 125 73 73 97 VK_NUMPAD9 0x69 73 73
79 KEY_KPMINUS 74 ANSI_KeypadMinus 0x4e 74 123 132 74 74 86 VK_SUBTRACT 0x6d 74 74
80 KEY_KP4 75 ANSI_Keypad4 0x56 75 107 107 75 75 92 VK_NUMPAD4 0x64 75 75
81 KEY_KP5 76 ANSI_Keypad5 0x57 76 115 115 76 76 93 VK_NUMPAD5 0x65 76 76
82 KEY_KP6 77 ANSI_Keypad6 0x58 77 116 116 77 77 94 VK_NUMPAD6 0x66 77 77
83 KEY_KPPLUS 78 ANSI_KeypadPlus 0x45 78 121 124 78 78 87 VK_ADD 0x6b 78 78
84 KEY_KP1 79 ANSI_Keypad1 0x53 79 105 105 79 79 89 VK_NUMPAD1 0x61 79 79
85 KEY_KP2 80 ANSI_Keypad2 0x54 80 114 114 80 80 90 VK_NUMPAD2 0x62 80 80
86 KEY_KP3 81 ANSI_Keypad3 0x55 81 122 122 81 81 91 VK_NUMPAD3 0x63 81 81
87 KEY_KP0 82 ANSI_Keypad0 0x52 82 112 112 82 82 98 VK_NUMPAD0 0x60 82 82
88 KEY_KPDOT 83 ANSI_KeypadDecimal 0x41 83 113 113 83 83 99 VK_DECIMAL 0x6e 83 83
89 84 84
90 KEY_ZENKAKUHANKAKU 85 118 95 118 148
91 KEY_102ND 86 86 97 19 86 100 VK_OEM_102 0xe1
92 KEY_F11 87 F11 0x67 87 120 86 101 87 68 VK_F11 0x7a
93 KEY_F12 88 F12 0x6f 88 7 94 102 88 69 VK_F12 0x7b
94 KEY_RO 89 115 81 115 135
95 KEY_KATAKANA 90 JIS_Kana???? 0x68 120 99 120 146 VK_KANA 0x15
96 KEY_HIRAGANA 91 119 98 119 147
97 KEY_HENKAN 92 121 100 134 121 138
98 KEY_KATAKANAHIRAGANA 93 112 19 135 112 136 0xc8 0xc8
99 KEY_MUHENKAN 94 123 103 133 123 139
100 KEY_KPJPCOMMA 95 JIS_KeypadComma 0x5f 92 39 92 140
101 KEY_KPENTER 96 ANSI_KeypadEnter 0x4c 158 121 284 88 0x64 0x64
102 KEY_RIGHTCTRL 97 RightControl 0x3e 88 285 228 VK_RCONTROL 0xa3 0x65 0x65
103 KEY_KPSLASH 98 ANSI_KeypadDivide 0x4b 181 119 309 84 VK_DIVIDE 0x6f 0x68 0x68
104 KEY_SYSRQ 99 84 260 87 84 70 VK_SNAPSHOT ??? 0x2c 0x67 0x67
105 KEY_RIGHTALT 100 RightOption 0x3d 57 312 230 VK_RMENU 0xa5 0x69 0x69
106 KEY_LINEFEED 101 91
107 KEY_HOME 102 Home 0x73 224 110 327 74 VK_HOME 0x24 0x59 0x59
108 KEY_UP 103 UpArrow 0x7e 236 99 109 328 82 VK_UP 0x26 0x5a 0x5a
109 KEY_PAGEUP 104 PageUp 0x74 201 111 329 75 VK_PRIOR 0x21 0x5b 0x5b
110 KEY_LEFT 105 LeftArrow 0x7b 203 97 111 331 80 VK_LEFT 0x25 0x5c 0x5c
111 KEY_RIGHT 106 RightArrow 0x7c 205 106 112 333 79 VK_RIGHT 0x27 0x5e 0x5e
112 KEY_END 107 End 0x77 225 101 335 77 VK_END 0x23 0x5f 0x5f
113 KEY_DOWN 108 DownArrow 0x7d 254 96 110 336 81 VK_DOWN 0x28 0x60 0x60
114 KEY_PAGEDOWN 109 PageDown 0x79 243 109 337 78 VK_NEXT 0x22 0x61 0x61
115 KEY_INSERT 110 210 103 107 338 73 VK_INSERT 0x2d 0x62 0x62
116 KEY_DELETE 111 ForwardDelete 0x75 244 100 108 339 76 VK_DELETE 0x2e 0x63 0x63
117 KEY_MACRO 112 239 142 367
118 KEY_MUTE 113 Mute 0x4a 251 156 288 239 VK_VOLUME_MUTE 0xad
119 KEY_VOLUMEDOWN 114 VolumeDown 0x49 157 302 238 VK_VOLUME_DOWN 0xae
120 KEY_VOLUMEUP 115 VolumeUp 0x48 233 149 304 237 VK_VOLUME_UP 0xaf
121 KEY_POWER 116 350 102
122 KEY_KPEQUAL 117 ANSI_KeypadEquals 0x51 89 15 89 103 0x76 0x76
123 KEY_KPPLUSMINUS 118 206 334
124 KEY_PAUSE 119 198 98 326 72 VK_PAUSE 0x013 0x66 0x66
125 KEY_SCALE 120 267
126 KEY_KPCOMMA 121 ANSI_KeypadClear???? 0x47 126 109 126 133 VK_SEPARATOR?? 0x6c
127 KEY_HANGEUL 122 144 VK_HANGEUL 0x15
128 KEY_HANJA 123 269 145 VK_HANJA 0x19
129 KEY_YEN 124 JIS_Yen 0x5d 125 106 125 137 0x7d 0x7d
130 KEY_LEFTMETA 125 Command 0x37 139 347 227 VK_LWIN 0x5b 0x6b 0x6b
131 KEY_RIGHTMETA 126 140 348 231 VK_RWIN 0x5c 0x6c 0x6c
132 KEY_COMPOSE 127 Function 0x3f 141 349 101 VK_APPS 0x5d 0x6d 0x6d
133 KEY_STOP 128 10 360 243 VK_BROWSER_STOP 0xa9
134 KEY_AGAIN 129 11 261 121
135 KEY_PROPS 130 12 262 118
136 KEY_UNDO 131 16 263 122
137 KEY_FRONT 132 268 119
138 KEY_COPY 133 24 376 124
139 KEY_OPEN 134 32 100 116
140 KEY_PASTE 135 40 101 125
141 KEY_FIND 136 48 321 244
142 KEY_CUT 137 56 316 123
143 KEY_HELP 138 9 373 117 VK_HELP 0x2f
144 KEY_MENU 139 145 286
145 KEY_CALC 140 174 163 289 251
146 KEY_SETUP 141 102
147 KEY_SLEEP 142 351 248 VK_SLEEP 0x5f
148 KEY_WAKEUP 143 355
149 KEY_FILE 144 103
150 KEY_SENDFILE 145 104
151 KEY_DELETEFILE 146 105
152 KEY_XFER 147 162 275
153 KEY_PROG1 148 160 287
154 KEY_PROG2 149 161 279
155 KEY_WWW 150 258 240
156 KEY_MSDOS 151 106
157 KEY_SCREENLOCK 152 150 274 249
158 KEY_DIRECTION 153 107
159 KEY_CYCLEWINDOWS 154 155 294
160 KEY_MAIL 155 364
161 KEY_BOOKMARKS 156 358
162 KEY_COMPUTER 157 363
163 KEY_BACK 158 362 241 VK_BROWSER_BACK 0xa6
164 KEY_FORWARD 159 361 242 VK_BROWSER_FORWARD 0xa7
165 KEY_CLOSECD 160 154 291
166 KEY_EJECTCD 161 108 236
167 KEY_EJECTCLOSECD 162 381
168 KEY_NEXTSONG 163 241 147 281 235 VK_MEDIA_NEXT_TRACK 0xb0
169 KEY_PLAYPAUSE 164 173 290 232 VK_MEDIA_PLAY_PAUSE 0xb3
170 KEY_PREVIOUSSONG 165 250 148 272 234 VK_MEDIA_PREV_TRACK 0xb1
171 KEY_STOPCD 166 164 152 292 233 VK_MEDIA_STOP 0xb2
172 KEY_RECORD 167 158 305
173 KEY_REWIND 168 159 280
174 KEY_PHONE 169 99
175 KEY_ISO 170 ISO_Section 0xa 112
176 KEY_CONFIG 171 257
177 KEY_HOMEPAGE 172 178 151 306 VK_BROWSER_HOME 0xac
178 KEY_REFRESH 173 359 250 VK_BROWSER_REFRESH 0xa8
179 KEY_EXIT 174 113
180 KEY_MOVE 175 114
181 KEY_EDIT 176 264 247
182 KEY_SCROLLUP 177 117 245
183 KEY_SCROLLDOWN 178 271 246
184 KEY_KPLEFTPAREN 179 374 182
185 KEY_KPRIGHTPAREN 180 379 183
186 KEY_NEW 181 265
187 KEY_REDO 182 266
188 KEY_F13 183 F13 0x69 93 47 127 93 104 VK_F13 0x7c 0x6e 0x6e
189 KEY_F14 184 F14 0x6b 94 55 128 94 105 VK_F14 0x7d 0x6f 0x6f
190 KEY_F15 185 F15 0x71 95 63 129 95 106 VK_F15 0x7e 0x70 0x70
191 KEY_F16 186 F16 0x6a 130 85 107 VK_F16 0x7f 0x71 0x71
192 KEY_F17 187 F17 0x40 131 259 108 VK_F17 0x80 0x72 0x72
193 KEY_F18 188 F18 0x4f 375 109 VK_F18 0x81
194 KEY_F19 189 F19 0x50 260 110 VK_F19 0x82
195 KEY_F20 190 F20 0x5a 90 111 VK_F20 0x83
196 KEY_F21 191 116 112 VK_F21 0x84
197 KEY_F22 192 377 113 VK_F22 0x85
198 KEY_F23 193 109 114 VK_F23 0x86
199 KEY_F24 194 111 115 VK_F24 0x87
200 195 277
201 196 278
202 197 282
203 198 283
204 199 295
205 KEY_PLAYCD 200 296
206 KEY_PAUSECD 201 297
207 KEY_PROG3 202 299
208 KEY_PROG4 203 300
209 KEY_DASHBOARD 204 301
210 KEY_SUSPEND 205 293
211 KEY_CLOSE 206 303
212 KEY_PLAY 207 307 VK_PLAY 0xfa
213 KEY_FASTFORWARD 208 308
214 KEY_BASSBOOST 209 310
215 KEY_PRINT 210 313 VK_PRINT 0x2a
216 KEY_HP 211 314
217 KEY_CAMERA 212 315
218 KEY_SOUND 213 317
219 KEY_QUESTION 214 318
220 KEY_EMAIL 215 319 VK_LAUNCH_MAIL 0xb4
221 KEY_CHAT 216 320
222 KEY_SEARCH 217 357 VK_BROWSER_SEARCH 0xaa
223 KEY_CONNECT 218 322
224 KEY_FINANCE 219 323
225 KEY_SPORT 220 324
226 KEY_SHOP 221 325
227 KEY_ALTERASE 222 276
228 KEY_CANCEL 223 330
229 KEY_BRIGHTNESSDOWN 224 332
230 KEY_BRIGHTNESSUP 225 340
231 KEY_MEDIA 226 365
232 KEY_SWITCHVIDEOMODE 227 342
233 KEY_KBDILLUMTOGGLE 228 343
234 KEY_KBDILLUMDOWN 229 344
235 KEY_KBDILLUMUP 230 345
236 KEY_SEND 231 346
237 KEY_REPLY 232 356
238 KEY_FORWARDMAIL 233 270
239 KEY_SAVE 234 341
240 KEY_DOCUMENTS 235 368
241 KEY_BATTERY 236 369
242 KEY_BLUETOOTH 237 370
243 KEY_WLAN 238 371
244 KEY_UWB 239 372
245 KEY_UNKNOWN 240
246 KEY_VIDEO_NEXT 241
247 KEY_VIDEO_PREV 242
248 KEY_BRIGHTNESS_CYCLE 243
249 KEY_BRIGHTNESS_ZERO 244
250 KEY_DISPLAY_OFF 245
251 KEY_WIMAX 246
252 247
253 248
254 249
255 250
256 251
257 252
258 253
259 254
260 255 182
261 BTN_MISC 0x100
262 BTN_0 0x100 VK_LBUTTON 0x01
263 BTN_1 0x101 VK_RBUTTON 0x02
264 BTN_2 0x102 VK_MBUTTON 0x04
265 BTN_3 0x103 VK_XBUTTON1 0x05
266 BTN_4 0x104 VK_XBUTTON2 0x06
267 BTN_5 0x105
268 BTN_6 0x106
269 BTN_7 0x107
270 BTN_8 0x108
271 BTN_9 0x109
272 BTN_MOUSE 0x110
273 BTN_LEFT 0x110
274 BTN_RIGHT 0x111
275 BTN_MIDDLE 0x112
276 BTN_SIDE 0x113
277 BTN_EXTRA 0x114
278 BTN_FORWARD 0x115
279 BTN_BACK 0x116
280 BTN_TASK 0x117
281 BTN_JOYSTICK 0x120
282 BTN_TRIGGER 0x120
283 BTN_THUMB 0x121
284 BTN_THUMB2 0x122
285 BTN_TOP 0x123
286 BTN_TOP2 0x124
287 BTN_PINKIE 0x125
288 BTN_BASE 0x126
289 BTN_BASE2 0x127
290 BTN_BASE3 0x128
291 BTN_BASE4 0x129
292 BTN_BASE5 0x12a
293 BTN_BASE6 0x12b
294 BTN_DEAD 0x12f
295 BTN_GAMEPAD 0x130
296 BTN_A 0x130
297 BTN_B 0x131
298 BTN_C 0x132
299 BTN_X 0x133
300 BTN_Y 0x134
301 BTN_Z 0x135
302 BTN_TL 0x136
303 BTN_TR 0x137
304 BTN_TL2 0x138
305 BTN_TR2 0x139
306 BTN_SELECT 0x13a
307 BTN_START 0x13b
308 BTN_MODE 0x13c
309 BTN_THUMBL 0x13d
310 BTN_THUMBR 0x13e
311 BTN_DIGI 0x140
312 BTN_TOOL_PEN 0x140
313 BTN_TOOL_RUBBER 0x141
314 BTN_TOOL_BRUSH 0x142
315 BTN_TOOL_PENCIL 0x143
316 BTN_TOOL_AIRBRUSH 0x144
317 BTN_TOOL_FINGER 0x145
318 BTN_TOOL_MOUSE 0x146
319 BTN_TOOL_LENS 0x147
320 BTN_TOUCH 0x14a
321 BTN_STYLUS 0x14b
322 BTN_STYLUS2 0x14c
323 BTN_TOOL_DOUBLETAP 0x14d
324 BTN_TOOL_TRIPLETAP 0x14e
325 BTN_TOOL_QUADTAP 0x14f
326 BTN_WHEEL 0x150
327 BTN_GEAR_DOWN 0x150
328 BTN_GEAR_UP 0x151
329 KEY_OK 0x160
330 KEY_SELECT 0x161 VK_SELECT 0x29
331 KEY_GOTO 0x162
332 KEY_CLEAR 0x163
333 KEY_POWER2 0x164
334 KEY_OPTION 0x165
335 KEY_INFO 0x166
336 KEY_TIME 0x167
337 KEY_VENDOR 0x168
338 KEY_ARCHIVE 0x169
339 KEY_PROGRAM 0x16a
340 KEY_CHANNEL 0x16b
341 KEY_FAVORITES 0x16c VK_BROWSER_FAVOURITES 0xab
342 KEY_EPG 0x16d
343 KEY_PVR 0x16e
344 KEY_MHP 0x16f
345 KEY_LANGUAGE 0x170
346 KEY_TITLE 0x171
347 KEY_SUBTITLE 0x172
348 KEY_ANGLE 0x173
349 KEY_ZOOM 0x174 VK_ZOOM 0xfb
350 KEY_MODE 0x175
351 KEY_KEYBOARD 0x176
352 KEY_SCREEN 0x177
353 KEY_PC 0x178
354 KEY_TV 0x179
355 KEY_TV2 0x17a
356 KEY_VCR 0x17b
357 KEY_VCR2 0x17c
358 KEY_SAT 0x17d
359 KEY_SAT2 0x17e
360 KEY_CD 0x17f
361 KEY_TAPE 0x180
362 KEY_RADIO 0x181
363 KEY_TUNER 0x182
364 KEY_PLAYER 0x183
365 KEY_TEXT 0x184
366 KEY_DVD 0x185
367 KEY_AUX 0x186
368 KEY_MP3 0x187
369 KEY_AUDIO 0x188
370 KEY_VIDEO 0x189
371 KEY_DIRECTORY 0x18a
372 KEY_LIST 0x18b
373 KEY_MEMO 0x18c
374 KEY_CALENDAR 0x18d
375 KEY_RED 0x18e
376 KEY_GREEN 0x18f
377 KEY_YELLOW 0x190
378 KEY_BLUE 0x191
379 KEY_CHANNELUP 0x192
380 KEY_CHANNELDOWN 0x193
381 KEY_FIRST 0x194
382 KEY_LAST 0x195
383 KEY_AB 0x196
384 KEY_NEXT 0x197
385 KEY_RESTART 0x198
386 KEY_SLOW 0x199
387 KEY_SHUFFLE 0x19a
388 KEY_BREAK 0x19b
389 KEY_PREVIOUS 0x19c
390 KEY_DIGITS 0x19d
391 KEY_TEEN 0x19e
392 KEY_TWEN 0x19f
393 KEY_VIDEOPHONE 0x1a0
394 KEY_GAMES 0x1a1
395 KEY_ZOOMIN 0x1a2
396 KEY_ZOOMOUT 0x1a3
397 KEY_ZOOMRESET 0x1a4
398 KEY_WORDPROCESSOR 0x1a5
399 KEY_EDITOR 0x1a6
400 KEY_SPREADSHEET 0x1a7
401 KEY_GRAPHICSEDITOR 0x1a8
402 KEY_PRESENTATION 0x1a9
403 KEY_DATABASE 0x1aa
404 KEY_NEWS 0x1ab
405 KEY_VOICEMAIL 0x1ac
406 KEY_ADDRESSBOOK 0x1ad
407 KEY_MESSENGER 0x1ae
408 KEY_DISPLAYTOGGLE 0x1af
409 KEY_SPELLCHECK 0x1b0
410 KEY_LOGOFF 0x1b1
411 KEY_DOLLAR 0x1b2
412 KEY_EURO 0x1b3
413 KEY_FRAMEBACK 0x1b4
414 KEY_FRAMEFORWARD 0x1b5
415 KEY_CONTEXT_MENU 0x1b6
416 KEY_MEDIA_REPEAT 0x1b7
417 KEY_DEL_EOL 0x1c0
418 KEY_DEL_EOS 0x1c1
419 KEY_INS_LINE 0x1c2
420 KEY_DEL_LINE 0x1c3
421 KEY_FN 0x1d0
422 KEY_FN_ESC 0x1d1
423 KEY_FN_F1 0x1d2
424 KEY_FN_F2 0x1d3
425 KEY_FN_F3 0x1d4
426 KEY_FN_F4 0x1d5
427 KEY_FN_F5 0x1d6
428 KEY_FN_F6 0x1d7
429 KEY_FN_F7 0x1d8
430 KEY_FN_F8 0x1d9
431 KEY_FN_F9 0x1da
432 KEY_FN_F10 0x1db
433 KEY_FN_F11 0x1dc
434 KEY_FN_F12 0x1dd
435 KEY_FN_1 0x1de
436 KEY_FN_2 0x1df
437 KEY_FN_D 0x1e0
438 KEY_FN_E 0x1e1
439 KEY_FN_F 0x1e2
440 KEY_FN_S 0x1e3
441 KEY_FN_B 0x1e4
442 KEY_BRL_DOT1 0x1f1
443 KEY_BRL_DOT2 0x1f2
444 KEY_BRL_DOT3 0x1f3
445 KEY_BRL_DOT4 0x1f4
446 KEY_BRL_DOT5 0x1f5
447 KEY_BRL_DOT6 0x1f6
448 KEY_BRL_DOT7 0x1f7
449 KEY_BRL_DOT8 0x1f8
450 KEY_BRL_DOT9 0x1f9
451 KEY_BRL_DOT10 0x1fa
452 KEY_NUMERIC_0 0x200
453 KEY_NUMERIC_1 0x201
454 KEY_NUMERIC_2 0x202
455 KEY_NUMERIC_3 0x203
456 KEY_NUMERIC_4 0x204
457 KEY_NUMERIC_5 0x205
458 KEY_NUMERIC_6 0x206
459 KEY_NUMERIC_7 0x207
460 KEY_NUMERIC_8 0x208
461 KEY_NUMERIC_9 0x209
462 KEY_NUMERIC_STAR 0x20a
463 KEY_NUMERIC_POUND 0x20b
464 KEY_RFKILL 0x20c

View File

@ -1,97 +0,0 @@
#!/usr/bin/python
"""
Generate the big keycodes table for virkeys.
It read keymaps.csv from stdin and put the generated code to stdout.
Please keep keymaps.csv be exactly the same as:
http://git.gnome.org/browse/gtk-vnc/plain/src/keymaps.csv.
If anything inconsistent happens, please change this file
instead of keymaps.csv which is a mirror.
"""
import sys
import re
cols = (
["linux", True],
["linux", False],
["os_x", True],
["os_x", False],
["atset1", False],
["atset2", False],
["atset3", False],
["xt", False],
["xt_kbd", False],
["usb", False],
["win32", True],
["win32", False],
[None, False],
[None, False],
["rfb", False],
)
xtkbdkey_index = 8
def quotestring(str):
if str[0] != '"':
return '"' + str + '"'
return str
print '''
/* Generated file, DON'T edit it */
#ifndef VIRT_KEY_INTERNAL
# error do not use this; it is not a public header
#endif
'''
sys.stdin.readline() # eat the fist line.
keycodes = []
max = 0
for line in sys.stdin.xreadlines():
values = re.match("([^,]*)," * 13 + "([^,]*)$", line[0:-1]).groups()
data = []
for v in values:
data.append(v)
# RFB keycodes are XT kbd keycodes with a slightly
# different encoding of 0xe0 scan codes. RFB uses
# the high bit of the first byte, instead of the low
# bit of the second byte.
rfbkey = int(data[xtkbdkey_index] or '0')
rfbkey = (rfbkey & 0x100) >> 1 | (rfbkey & 0x7f)
data.append("%d" % rfbkey)
keycodes.append(data)
max = max + 1
print "#define VIR_KEYMAP_ENTRY_MAX " + str(max)
for i in range(len(cols)):
col=cols[i]
name=col[0]
isname=col[1]
if name is None:
continue
if isname:
print "const char *virKeymapNames_" + name + "[] = {"
else:
print "int virKeymapValues_" + name + "[] = {"
for entry in keycodes:
if isname:
print " " + quotestring(entry[i] or "NULL") + ","
else:
print " " + (entry[i] or "-1") + ","
print "};\n"

View File

@ -22,57 +22,53 @@
#include <string.h>
#include <stddef.h>
#include "virkeycodetable_atset1.h"
#include "virkeycodetable_atset2.h"
#include "virkeycodetable_atset3.h"
#include "virkeycodetable_linux.h"
#include "virkeycodetable_osx.h"
#include "virkeycodetable_rfb.h"
#include "virkeycodetable_usb.h"
#include "virkeycodetable_win32.h"
#include "virkeycodetable_xt.h"
#include "virkeycodetable_xtkbd.h"
#include "virkeynametable_linux.h"
#include "virkeynametable_osx.h"
#include "virkeynametable_win32.h"
#define VIRT_KEY_INTERNAL
#include "virkeymaps.h"
static const char **virKeymapNames[] = {
[VIR_KEYCODE_SET_LINUX] =
virKeymapNames_linux,
[VIR_KEYCODE_SET_XT] =
NULL,
[VIR_KEYCODE_SET_ATSET1] =
NULL,
[VIR_KEYCODE_SET_ATSET2] =
NULL,
[VIR_KEYCODE_SET_ATSET3] =
NULL,
[VIR_KEYCODE_SET_OSX] =
virKeymapNames_os_x,
[VIR_KEYCODE_SET_XT_KBD] =
NULL,
[VIR_KEYCODE_SET_USB] =
NULL,
[VIR_KEYCODE_SET_WIN32] =
virKeymapNames_win32,
[VIR_KEYCODE_SET_RFB] =
NULL,
static const char **virKeymapNames[VIR_KEYCODE_SET_LAST] = {
[VIR_KEYCODE_SET_LINUX] = virKeyNameTable_linux,
[VIR_KEYCODE_SET_OSX] = virKeyNameTable_osx,
[VIR_KEYCODE_SET_WIN32] = virKeyNameTable_win32,
};
verify(ARRAY_CARDINALITY(virKeymapNames) == VIR_KEYCODE_SET_LAST);
static int *virKeymapValues[] = {
[VIR_KEYCODE_SET_LINUX] =
virKeymapValues_linux,
[VIR_KEYCODE_SET_XT] =
virKeymapValues_xt,
[VIR_KEYCODE_SET_ATSET1] =
virKeymapValues_atset1,
[VIR_KEYCODE_SET_ATSET2] =
virKeymapValues_atset2,
[VIR_KEYCODE_SET_ATSET3] =
virKeymapValues_atset3,
[VIR_KEYCODE_SET_OSX] =
virKeymapValues_os_x,
[VIR_KEYCODE_SET_XT_KBD] =
virKeymapValues_xt_kbd,
[VIR_KEYCODE_SET_USB] =
virKeymapValues_usb,
[VIR_KEYCODE_SET_WIN32] =
virKeymapValues_win32,
[VIR_KEYCODE_SET_RFB] =
virKeymapValues_rfb,
static const unsigned short *virKeymapValues[VIR_KEYCODE_SET_LAST] = {
[VIR_KEYCODE_SET_LINUX] = virKeyCodeTable_linux,
[VIR_KEYCODE_SET_XT] = virKeyCodeTable_xt,
[VIR_KEYCODE_SET_ATSET1] = virKeyCodeTable_atset1,
[VIR_KEYCODE_SET_ATSET2] = virKeyCodeTable_atset2,
[VIR_KEYCODE_SET_ATSET3] = virKeyCodeTable_atset3,
[VIR_KEYCODE_SET_OSX] = virKeyCodeTable_osx,
[VIR_KEYCODE_SET_XT_KBD] = virKeyCodeTable_xtkbd,
[VIR_KEYCODE_SET_USB] = virKeyCodeTable_usb,
[VIR_KEYCODE_SET_WIN32] = virKeyCodeTable_win32,
[VIR_KEYCODE_SET_RFB] = virKeyCodeTable_rfb,
};
verify(ARRAY_CARDINALITY(virKeymapValues) == VIR_KEYCODE_SET_LAST);
#define VIR_KEYMAP_ENTRY_MAX ARRAY_CARDINALITY(virKeyCodeTable_linux)
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_xt));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_atset1));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_atset2));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_atset3));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_osx));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_xtkbd));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_usb));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_win32));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyCodeTable_rfb));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_linux));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_osx));
verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_win32));
VIR_ENUM_IMPL(virKeycodeSet, VIR_KEYCODE_SET_LAST,
"linux",

View File

@ -57,6 +57,9 @@ static int testKeycodeMapping(const void *data ATTRIBUTE_UNUSED)
TRANSLATE(LINUX, RFB, 88, 88);
TRANSLATE(LINUX, RFB, 160, 163);
TRANSLATE(ATSET2, ATSET3, 259, 55);
TRANSLATE(OSX, WIN32, 90, 131);
TRANSLATE(OSX, ATSET1, 90, 0);
TRANSLATE(OSX, ATSET1, 3200, -1);
#undef TRANSLATE
@ -82,6 +85,8 @@ static int testKeycodeStrings(const void *data ATTRIBUTE_UNUSED)
} while (0)
TRANSLATE(LINUX, "KEY_DELETE", 111);
TRANSLATE(LINUX, "KEY_RFKILL", 524);
TRANSLATE(LINUX, "KEY_WIBBLE", -1);
TRANSLATE(OSX, "Function", 0x3f);
TRANSLATE(WIN32, "VK_UP", 0x26);