buildsys: use QEMU's keycodemapdb again

instead of the split-out version that was last updated for QEMU 6.0.
This reverts the relevant part of 6838f03 ("bump version to 2.11.1-1")
which doesn't state a reason why the splitting was done. If something
breaks, we can still re-do it and document the reason this time.

Alternatively, it would be necessary to adapt the paths, because
keycodemapdb lives in subprojects/ rather than ui/ since QEMU commit
c53648abba ("meson: use subproject for keycodemapdb").

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Fiona Ebner 2023-10-17 14:10:08 +02:00 committed by Thomas Lamprecht
parent a6ddea7ef7
commit 0d9c737d61
19 changed files with 1 additions and 5036 deletions

View File

@ -39,16 +39,14 @@ PC_BIOS_FW_PURGE_LIST_IN = \
BLOB_PURGE_SED_CMDS = $(foreach FILE,$(PC_BIOS_FW_PURGE_LIST_IN),-e "/$(FILE)/d")
BLOB_PURGE_FILTER = $(foreach FILE,$(PC_BIOS_FW_PURGE_LIST_IN),-e "$(FILE)")
$(BUILDDIR): keycodemapdb | submodule
$(BUILDDIR): submodule
# check if qemu/ was used for a build
# if so, please run 'make distclean' in the submodule and try again
test ! -f $(SRCDIR)/build/config.status
rm -rf $@.tmp $@
cp -a $(SRCDIR) $@.tmp
cp -a debian $@.tmp/debian
rm -rf $@.tmp/ui/keycodemapdb
rm -rf $@.tmp/roms/edk2 # packaged separately
cp -a keycodemapdb $@.tmp/ui/
find $@.tmp/pc-bios -type f | grep $(BLOB_PURGE_FILTER) | xargs rm -f
sed -i $(BLOB_PURGE_SED_CMDS) $@.tmp/pc-bios/meson.build
echo "git clone git://git.proxmox.com/git/pve-qemu.git\\ngit checkout $(GITVERSION)" > $@.tmp/debian/SOURCE
@ -76,17 +74,6 @@ dsc:
$(DSC): $(ORIG_SRC_TAR) $(BUILDDIR)
cd $(BUILDDIR); dpkg-buildpackage -S -us -uc -d
.PHONY: update
update:
cd $(SRCDIR) && git submodule deinit ui/keycodemapdb || true
rm -rf $(SRCDIR)/ui/keycodemapdb
mkdir $(SRCDIR)/ui/keycodemapdb
cd $(SRCDIR) && git submodule update --init ui/keycodemapdb
rm -rf keycodemapdb
mkdir keycodemapdb
cp -R $(SRCDIR)/ui/keycodemapdb/* keycodemapdb/
git add keycodemapdb
.PHONY: upload
upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
upload: $(DEBS)

View File

@ -1,27 +0,0 @@
Copyright (c) Individual contributors.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of PyCA Cryptography nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,339 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

View File

@ -1,114 +0,0 @@
Key code / scan code / key symbol mapping database
==================================================
This module provides a database that maps between different
key code / scan code / key symbol sets:
- Linux evdev
- OS-X
- AT Set 1
- AT Set 2
- AT Set 3
- XT
- Linux XT KBD driver
- USB HID
- Win32
- XWin XT
- XKBD XT
- Xorg Evdev
- Xorg KBD
- Xorg OS-X
- XOrg Cygwin
- RFB
Licensing
---------
The contents of this package are dual licensed under the terms of:
- GNU General Public License (version 2 or later)
- 3-clause BSD License
The output files generated by keymap-gen may be distributed & used under
the terms of either of the above licenses.
Data formats
------------
The following output formats are possible
- Code map
An array mapping between key code sets values
Indexes in the array are values from the source code set.
Entries in the array are values from the target code set
- Code table
An array listing all values in a key code set
Indexes in the array are simply a numeric counter
Entries in the array are values from the key code set
The size of the array matches the total number of entries in
the keycode database.
- Name map
An array mapping between key code sets values and names
Indexes in the array are values from the source code set
Entries in the array are names from the target code set
- Name table
An array listing all names in a key code set
Indexes in the array are simply a numeric counter
Entries in the array are values from the key code set
The size of the array matches the total number of entries in
the keycode database.
Output languages
----------------
The tool is capable of generating data tables for the following
programming languages / environments
- Standard C
- GLib2 (standard C, but with GLib2 data types)
- Python
- Perl
Usage
-----
Map values from AT Set 1 to USB HID, generating tables for the
C programming language
$ keymap-gen --lang stdc code-map data/keymaps.csv atset1 usb
Generate a tables of names for Linux key codes, OS-X key codes,
in python - equivalent array indexes map between the two sets.
A variable name override is used
$ keymap-gen --varname linux_keycodes --lang stdc \
code-table data/keymaps.csv linux
$ keymap-gen --varname osx_keycodes --lang stdc \
code-table data/keymaps.csv os-x
Generate a mapping from XOrg XWin values to Win32 names
$ keymap-gen --lang perl name-map data/keymaps.csv xorgxwin win32
Generate a table of names for Linux key codes in Perl
$ keymap-gen --lang perl name-table data/keymaps.csv linux

View File

@ -1,89 +0,0 @@
This directory contains the raw data for mapping between different
keyboard codes. Naming if often based on the US keyboard layout, but
does not indicate the symbol actually generated by the key.
The columns currently in this data set are:
Linux
-----
Name and value of the hardware independent keycodes used by the linux
kernel and exposed through the input subsystem.
References: linux/input.h
macOS
-----
Low level key codes as exposed by Mac OS X/macOS.
References: Carbon/HIToolbox/Events.h
PC scan code sets
-----------------
Scan codes for the three orignal PC keyboard generations:
Set 1: XT
Set 2: AT
Set 3: PS/2
The sets include codes for modern keys as well and not just the keys
present on those original keyboards.
References: linux/drivers/input/keyboard/atkbd.c
USB HID
-------
Codes as specified by the HID profile in USB.
References: linux/drivers/hid/usbhid/usbkbd.c
Windows Virtual-key codes
-------------------------
The low level, hardware independent "VKEYs" exposed by Windows.
References: mingw32/winuser.h
XWin XT
-------
X11 keycodes generated by the XWin server. Based on the XT scan code
set.
References: xorg-server/hw/xwin/{winkeybd.c,winkeynames.h}
Xfree86 KBD XT
--------------
X11 keycodes generated by the Xfree86 keyboard drivers. Based on the XT
scan code set.
References: xf86-input-keyboard/src/at_scancode.c
X11 keysyms
-----------
Corresponding X11 keysym value(s) for a US keyboard layout.
WARNING: These columns represent symbols, not physical keys, and should
be used with extreme care.
References: http://cgit.freedesktop.org/xorg/proto/x11proto/plain/keysymdef.h
HTML KeyboardEvent.code
-----------------------
Key codes seen in the KeyboardEvent.code attribute as part of the
UI Events specification.
References: https://www.w3.org/TR/uievents-code/
XKEYBOARD key names
-------------------
Hardware independent key names as used in the XKEYBOARD extension.
References: /usr/share/X11/xkb/keycodes/

View File

@ -1,539 +0,0 @@
"Linux Name","Linux Keycode","OS-X Name","OS-X Keycode","AT set1 keycode","AT set2 keycode","AT set3 keycode","USB Keycodes","Win32 Name","Win32 Keycode","Xwin XT","Xfree86 KBD XT","X11 keysym name","X11 keysym","HTML code","XKB key name","QEMU QKeyCode","Sun KBD","Apple ADB"
KEY_RESERVED,0,,0xff,,,,,,,,,,,,,unmapped,,0xff
KEY_ESC,1,Escape,0x35,0x01,0x76,0x08,41,VK_ESCAPE,0x1b,1,1,XK_Escape,0xff1b,Escape,ESC,esc,0x1d,0x35
KEY_1,2,ANSI_1,0x12,0x02,0x16,0x16,30,VK_1,0x31,2,2,XK_1,0x0031,Digit1,AE01,1,0x1e,0x12
KEY_1,2,ANSI_1,0x12,0x02,0x16,0x16,30,VK_1,0x31,2,2,XK_exclam,0x0021,Digit1,AE01,1,0x1e,0x12
KEY_2,3,ANSI_2,0x13,0x03,0x1e,0x1e,31,VK_2,0x32,3,3,XK_2,0x0032,Digit2,AE02,2,0x1f,0x13
KEY_2,3,ANSI_2,0x13,0x03,0x1e,0x1e,31,VK_2,0x32,3,3,XK_at,0x0040,Digit2,AE02,2,0x1f,0x13
KEY_3,4,ANSI_3,0x14,0x04,0x26,0x26,32,VK_3,0x33,4,4,XK_3,0x0033,Digit3,AE03,3,0x20,0x14
KEY_3,4,ANSI_3,0x14,0x04,0x26,0x26,32,VK_3,0x33,4,4,XK_numbersign,0x0023,Digit3,AE03,3,0x20,0x14
KEY_4,5,ANSI_4,0x15,0x05,0x25,0x25,33,VK_4,0x34,5,5,XK_4,0x0034,Digit4,AE04,4,0x21,0x15
KEY_4,5,ANSI_4,0x15,0x05,0x25,0x25,33,VK_4,0x34,5,5,XK_dollar,0x0024,Digit4,AE04,4,0x21,0x15
KEY_5,6,ANSI_5,0x17,0x06,0x2e,0x2e,34,VK_5,0x35,6,6,XK_5,0x0035,Digit5,AE05,5,0x22,0x17
KEY_5,6,ANSI_5,0x17,0x06,0x2e,0x2e,34,VK_5,0x35,6,6,XK_percent,0x0025,Digit5,AE05,5,0x22,0x17
KEY_6,7,ANSI_6,0x16,0x07,0x36,0x36,35,VK_6,0x36,7,7,XK_6,0x0036,Digit6,AE06,6,0x23,0x16
KEY_6,7,ANSI_6,0x16,0x07,0x36,0x36,35,VK_6,0x36,7,7,XK_asciicircum,0x005e,Digit6,AE06,6,0x23,0x16
KEY_7,8,ANSI_7,0x1a,0x08,0x3d,0x3d,36,VK_7,0x37,8,8,XK_7,0x0037,Digit7,AE07,7,0x24,0x1a
KEY_7,8,ANSI_7,0x1a,0x08,0x3d,0x3d,36,VK_7,0x37,8,8,XK_ampersand,0x0026,Digit7,AE07,7,0x24,0x1a
KEY_8,9,ANSI_8,0x1c,0x09,0x3e,0x3e,37,VK_8,0x38,9,9,XK_8,0x0038,Digit8,AE08,8,0x25,0x1c
KEY_8,9,ANSI_8,0x1c,0x09,0x3e,0x3e,37,VK_8,0x38,9,9,XK_asterisk,0x002a,Digit8,AE08,8,0x25,0x1c
KEY_9,10,ANSI_9,0x19,0x0a,0x46,0x46,38,VK_9,0x39,10,10,XK_9,0x0039,Digit9,AE09,9,0x26,0x19
KEY_9,10,ANSI_9,0x19,0x0a,0x46,0x46,38,VK_9,0x39,10,10,XK_parenleft,0x0028,Digit9,AE09,9,0x26,0x19
KEY_0,11,ANSI_0,0x1d,0x0b,0x45,0x45,39,VK_0,0x30,11,11,XK_0,0x0030,Digit0,AE10,0,0x27,0x1d
KEY_0,11,ANSI_0,0x1d,0x0b,0x45,0x45,39,VK_0,0x30,11,11,XK_parenright,0x0029,Digit0,AE10,0,0x27,0x1d
KEY_MINUS,12,ANSI_Minus,0x1b,0x0c,0x4e,0x4e,45,VK_OEM_MINUS,0xbd,12,12,XK_minus,0x002d,Minus,AE11,minus,0x28,0x1b
KEY_MINUS,12,ANSI_Minus,0x1b,0x0c,0x4e,0x4e,45,VK_OEM_MINUS,0xbd,12,12,XK_underscore,0x005f,Minus,AE11,minus,0x28,0x1b
KEY_EQUAL,13,ANSI_Equal,0x18,0x0d,0x55,0x55,46,VK_OEM_PLUS,0xbb,13,13,XK_equal,0x003d,Equal,AE12,equal,0x29,0x18
KEY_EQUAL,13,ANSI_Equal,0x18,0x0d,0x55,0x55,46,VK_OEM_PLUS,0xbb,13,13,XK_plus,0x002b,Equal,AE12,equal,0x29,0x18
KEY_BACKSPACE,14,Delete,0x33,0x0e,0x66,0x66,42,VK_BACK,0x08,14,14,XK_BackSpace,0xff08,Backspace,BKSP,backspace,0x2b,0x33
KEY_TAB,15,Tab,0x30,0x0f,0x0d,0x0d,43,VK_TAB,0x09,15,15,XK_Tab,0xff09,Tab,TAB,tab,0x35,0x30
KEY_Q,16,ANSI_Q,0xc,0x10,0x15,0x15,20,VK_Q,0x51,16,16,XK_Q,0x0051,KeyQ,AD01,q,0x36,0xc
KEY_Q,16,ANSI_Q,0xc,0x10,0x15,0x15,20,VK_Q,0x51,16,16,XK_q,0x0071,KeyQ,AD01,q,0x36,0xc
KEY_W,17,ANSI_W,0xd,0x11,0x1d,0x1d,26,VK_W,0x57,17,17,XK_W,0x0057,KeyW,AD02,w,0x37,0xd
KEY_W,17,ANSI_W,0xd,0x11,0x1d,0x1d,26,VK_W,0x57,17,17,XK_w,0x0077,KeyW,AD02,w,0x37,0xd
KEY_E,18,ANSI_E,0xe,0x12,0x24,0x24,8,VK_E,0x45,18,18,XK_E,0x0045,KeyE,AD03,e,0x38,0xe
KEY_E,18,ANSI_E,0xe,0x12,0x24,0x24,8,VK_E,0x45,18,18,XK_e,0x0065,KeyE,AD03,e,0x38,0xe
KEY_R,19,ANSI_R,0xf,0x13,0x2d,0x2d,21,VK_R,0x52,19,19,XK_R,0x0052,KeyR,AD04,r,0x39,0xf
KEY_R,19,ANSI_R,0xf,0x13,0x2d,0x2d,21,VK_R,0x52,19,19,XK_r,0x0072,KeyR,AD04,r,0x39,0xf
KEY_T,20,ANSI_T,0x11,0x14,0x2c,0x2c,23,VK_T,0x54,20,20,XK_T,0x0054,KeyT,AD05,t,0x3a,0x11
KEY_T,20,ANSI_T,0x11,0x14,0x2c,0x2c,23,VK_T,0x54,20,20,XK_t,0x0074,KeyT,AD05,t,0x3a,0x11
KEY_Y,21,ANSI_Y,0x10,0x15,0x35,0x35,28,VK_Y,0x59,21,21,XK_Y,0x0059,KeyY,AD06,y,0x3b,0x10
KEY_Y,21,ANSI_Y,0x10,0x15,0x35,0x35,28,VK_Y,0x59,21,21,XK_y,0x0079,KeyY,AD06,y,0x3b,0x10
KEY_U,22,ANSI_U,0x20,0x16,0x3c,0x3c,24,VK_U,0x55,22,22,XK_U,0x0055,KeyU,AD07,u,0x3c,0x20
KEY_U,22,ANSI_U,0x20,0x16,0x3c,0x3c,24,VK_U,0x55,22,22,XK_u,0x0075,KeyU,AD07,u,0x3c,0x20
KEY_I,23,ANSI_I,0x22,0x17,0x43,0x43,12,VK_I,0x49,23,23,XK_I,0x0049,KeyI,AD08,i,0x3d,0x22
KEY_I,23,ANSI_I,0x22,0x17,0x43,0x43,12,VK_I,0x49,23,23,XK_i,0x0069,KeyI,AD08,i,0x3d,0x22
KEY_O,24,ANSI_O,0x1f,0x18,0x44,0x44,18,VK_O,0x4f,24,24,XK_O,0x004f,KeyO,AD09,o,0x3e,0x1f
KEY_O,24,ANSI_O,0x1f,0x18,0x44,0x44,18,VK_O,0x4f,24,24,XK_o,0x006f,KeyO,AD09,o,0x3e,0x1f
KEY_P,25,ANSI_P,0x23,0x19,0x4d,0x4d,19,VK_P,0x50,25,25,XK_P,0x0050,KeyP,AD10,p,0x3f,0x23
KEY_P,25,ANSI_P,0x23,0x19,0x4d,0x4d,19,VK_P,0x50,25,25,XK_p,0x0070,KeyP,AD10,p,0x3f,0x23
KEY_LEFTBRACE,26,ANSI_LeftBracket,0x21,0x1a,0x54,0x54,47,VK_OEM_4,0xdb,26,26,XK_bracketleft,0x005b,BracketLeft,AD11,bracket_left,0x40,0x21
KEY_LEFTBRACE,26,ANSI_LeftBracket,0x21,0x1a,0x54,0x54,47,VK_OEM_4,0xdb,26,26,XK_braceleft,0x007b,BracketLeft,AD11,bracket_left,0x40,0x21
KEY_RIGHTBRACE,27,ANSI_RightBracket,0x1e,0x1b,0x5b,0x5b,48,VK_OEM_6,0xdd,27,27,XK_bracketright,0x005d,BracketRight,AD12,bracket_right,0x41,0x1e
KEY_RIGHTBRACE,27,ANSI_RightBracket,0x1e,0x1b,0x5b,0x5b,48,VK_OEM_6,0xdd,27,27,XK_braceright,0x007d,BracketRight,AD12,bracket_right,0x41,0x1e
KEY_ENTER,28,Return,0x24,0x1c,0x5a,0x5a,40,VK_RETURN,0x0d,28,28,XK_Return,0xff0d,Enter,RTRN,ret,0x59,0x24
KEY_LEFTCTRL,29,Control,0x3b,0x1d,0x14,0x11,224,VK_LCONTROL,0xa2,29,29,XK_Control_L,0xffe3,ControlLeft,LCTL,ctrl,0x4c,0x36
KEY_LEFTCTRL,29,Control,0x3b,0x1d,0x14,0x11,224,VK_CONTROL,0x11,29,29,XK_Control_L,0xffe3,ControlLeft,LCTL,ctrl,0x4c,0x36
KEY_A,30,ANSI_A,0x0,0x1e,0x1c,0x1c,4,VK_A,0x41,30,30,XK_A,0x0041,KeyA,AC01,a,0x4d,0x0
KEY_A,30,ANSI_A,0x0,0x1e,0x1c,0x1c,4,VK_A,0x41,30,30,XK_a,0x0061,KeyA,AC01,a,0x4d,0x0
KEY_S,31,ANSI_S,0x1,0x1f,0x1b,0x1b,22,VK_S,0x53,31,31,XK_S,0x0053,KeyS,AC02,s,0x4e,0x1
KEY_S,31,ANSI_S,0x1,0x1f,0x1b,0x1b,22,VK_S,0x53,31,31,XK_s,0x0073,KeyS,AC02,s,0x4e,0x1
KEY_D,32,ANSI_D,0x2,0x20,0x23,0x23,7,VK_D,0x44,32,32,XK_D,0x0044,KeyD,AC03,d,0x4f,0x2
KEY_D,32,ANSI_D,0x2,0x20,0x23,0x23,7,VK_D,0x44,32,32,XK_d,0x0064,KeyD,AC03,d,0x4f,0x2
KEY_F,33,ANSI_F,0x3,0x21,0x2b,0x2b,9,VK_F,0x46,33,33,XK_F,0x0046,KeyF,AC04,f,0x50,0x3
KEY_F,33,ANSI_F,0x3,0x21,0x2b,0x2b,9,VK_F,0x46,33,33,XK_f,0x0066,KeyF,AC04,f,0x50,0x3
KEY_G,34,ANSI_G,0x5,0x22,0x34,0x34,10,VK_G,0x47,34,34,XK_G,0x0047,KeyG,AC05,g,0x51,0x5
KEY_G,34,ANSI_G,0x5,0x22,0x34,0x34,10,VK_G,0x47,34,34,XK_g,0x0067,KeyG,AC05,g,0x51,0x5
KEY_H,35,ANSI_H,0x4,0x23,0x33,0x33,11,VK_H,0x48,35,35,XK_H,0x0048,KeyH,AC06,h,0x52,0x4
KEY_H,35,ANSI_H,0x4,0x23,0x33,0x33,11,VK_H,0x48,35,35,XK_h,0x0068,KeyH,AC06,h,0x52,0x4
KEY_J,36,ANSI_J,0x26,0x24,0x3b,0x3b,13,VK_J,0x4a,36,36,XK_J,0x004a,KeyJ,AC07,j,0x53,0x26
KEY_J,36,ANSI_J,0x26,0x24,0x3b,0x3b,13,VK_J,0x4a,36,36,XK_j,0x006a,KeyJ,AC07,j,0x53,0x26
KEY_K,37,ANSI_K,0x28,0x25,0x42,0x42,14,VK_K,0x4b,37,37,XK_K,0x004b,KeyK,AC08,k,0x54,0x28
KEY_K,37,ANSI_K,0x28,0x25,0x42,0x42,14,VK_K,0x4b,37,37,XK_k,0x006b,KeyK,AC08,k,0x54,0x28
KEY_L,38,ANSI_L,0x25,0x26,0x4b,0x4b,15,VK_L,0x4c,38,38,XK_L,0x004c,KeyL,AC09,l,0x55,0x25
KEY_L,38,ANSI_L,0x25,0x26,0x4b,0x4b,15,VK_L,0x4c,38,38,XK_l,0x006c,KeyL,AC09,l,0x55,0x25
KEY_SEMICOLON,39,ANSI_Semicolon,0x29,0x27,0x4c,0x4c,51,VK_OEM_1,0xba,39,39,XK_semicolon,0x003b,Semicolon,AC10,semicolon,0x56,0x29
KEY_SEMICOLON,39,ANSI_Semicolon,0x29,0x27,0x4c,0x4c,51,VK_OEM_1,0xba,39,39,XK_colon,0x003a,Semicolon,AC10,semicolon,0x56,0x29
KEY_APOSTROPHE,40,ANSI_Quote,0x27,0x28,0x52,0x52,52,VK_OEM_7,0xde,40,40,XK_apostrophe,0x0027,Quote,AC11,apostrophe,0x57,0x27
KEY_APOSTROPHE,40,ANSI_Quote,0x27,0x28,0x52,0x52,52,VK_OEM_7,0xde,40,40,XK_quotedbl,0x0022,Quote,AC11,apostrophe,0x57,0x27
KEY_GRAVE,41,ANSI_Grave,0x32,0x29,0x0e,0x0e,53,VK_OEM_3,0xc0,41,41,XK_grave,0x0060,Backquote,TLDE,grave_accent,0x2a,0x32
KEY_GRAVE,41,ANSI_Grave,0x32,0x29,0x0e,0x0e,53,VK_OEM_3,0xc0,41,41,XK_grave,0x0060,Backquote,AB00,grave_accent,0x2a,0x32
KEY_GRAVE,41,ANSI_Grave,0x32,0x29,0x0e,0x0e,53,VK_OEM_3,0xc0,41,41,XK_asciitilde,0x007e,Backquote,TLDE,grave_accent,0x2a,0x32
KEY_GRAVE,41,ANSI_Grave,0x32,0x29,0x0e,0x0e,53,VK_OEM_3,0xc0,41,41,XK_asciitilde,0x007e,Backquote,AB00,grave_accent,0x2a,0x32
KEY_SHIFT,42,Shift,0x38,0x2a,0x12,0x12,225,VK_SHIFT,0x10,42,42,XK_Shift_L,0xffe1,ShiftLeft,LFSH,shift,0x63,0x38
KEY_LEFTSHIFT,42,Shift,0x38,0x2a,0x12,0x12,225,VK_LSHIFT,0xa0,42,42,XK_Shift_L,0xffe1,ShiftLeft,LFSH,shift,0x63,0x38
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,49,VK_OEM_5,0xdc,43,43,XK_backslash,0x005c,Backslash,BKSL,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,49,VK_OEM_5,0xdc,43,43,XK_backslash,0x005c,Backslash,AC12,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,49,VK_OEM_5,0xdc,43,43,XK_bar,0x007c,Backslash,BKSL,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,49,VK_OEM_5,0xdc,43,43,XK_bar,0x007c,Backslash,AC12,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,50,VK_OEM_5,0xdc,43,43,XK_backslash,0x005c,Backslash,BKSL,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,50,VK_OEM_5,0xdc,43,43,XK_backslash,0x005c,Backslash,AC12,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,50,VK_OEM_5,0xdc,43,43,XK_bar,0x007c,Backslash,BKSL,backslash,0x58,0x2a
KEY_BACKSLASH,43,ANSI_Backslash,0x2a,0x2b,0x5d,0x5c,50,VK_OEM_5,0xdc,43,43,XK_bar,0x007c,Backslash,AC12,backslash,0x58,0x2a
KEY_Z,44,ANSI_Z,0x6,0x2c,0x1a,0x1a,29,VK_Z,0x5a,44,44,XK_Z,0x005a,KeyZ,AB01,z,0x64,0x6
KEY_Z,44,ANSI_Z,0x6,0x2c,0x1a,0x1a,29,VK_Z,0x5a,44,44,XK_z,0x007a,KeyZ,AB01,z,0x64,0x6
KEY_X,45,ANSI_X,0x7,0x2d,0x22,0x22,27,VK_X,0x58,45,45,XK_X,0x0058,KeyX,AB02,x,0x65,0x7
KEY_X,45,ANSI_X,0x7,0x2d,0x22,0x22,27,VK_X,0x58,45,45,XK_x,0x0078,KeyX,AB02,x,0x65,0x7
KEY_C,46,ANSI_C,0x8,0x2e,0x21,0x21,6,VK_C,0x43,46,46,XK_C,0x0043,KeyC,AB03,c,0x66,0x8
KEY_C,46,ANSI_C,0x8,0x2e,0x21,0x21,6,VK_C,0x43,46,46,XK_c,0x0063,KeyC,AB03,c,0x66,0x8
KEY_V,47,ANSI_V,0x9,0x2f,0x2a,0x2a,25,VK_V,0x56,47,47,XK_V,0x0056,KeyV,AB04,v,0x67,0x9
KEY_V,47,ANSI_V,0x9,0x2f,0x2a,0x2a,25,VK_V,0x56,47,47,XK_v,0x0076,KeyV,AB04,v,0x67,0x9
KEY_B,48,ANSI_B,0xb,0x30,0x32,0x32,5,VK_B,0x42,48,48,XK_B,0x0042,KeyB,AB05,b,0x68,0xb
KEY_B,48,ANSI_B,0xb,0x30,0x32,0x32,5,VK_B,0x42,48,48,XK_b,0x0062,KeyB,AB05,b,0x68,0xb
KEY_N,49,ANSI_N,0x2d,0x31,0x31,0x31,17,VK_N,0x4e,49,49,XK_N,0x004e,KeyN,AB06,n,0x69,0x2d
KEY_N,49,ANSI_N,0x2d,0x31,0x31,0x31,17,VK_N,0x4e,49,49,XK_n,0x006e,KeyN,AB06,n,0x69,0x2d
KEY_M,50,ANSI_M,0x2e,0x32,0x3a,0x3a,16,VK_M,0x4d,50,50,XK_M,0x004d,KeyM,AB07,m,0x6a,0x2e
KEY_M,50,ANSI_M,0x2e,0x32,0x3a,0x3a,16,VK_M,0x4d,50,50,XK_m,0x006d,KeyM,AB07,m,0x6a,0x2e
KEY_COMMA,51,ANSI_Comma,0x2b,0x33,0x41,0x41,54,VK_OEM_COMMA,0xbc,51,51,XK_comma,0x002c,Comma,AB08,comma,0x6b,0x2b
KEY_COMMA,51,ANSI_Comma,0x2b,0x33,0x41,0x41,54,VK_OEM_COMMA,0xbc,51,51,XK_less,0x003c,Comma,AB08,comma,0x6b,0x2b
KEY_DOT,52,ANSI_Period,0x2f,0x34,0x49,0x49,55,VK_OEM_PERIOD,0xbe,52,52,XK_period,0x002e,Period,AB09,dot,0x6c,0x2f
KEY_DOT,52,ANSI_Period,0x2f,0x34,0x49,0x49,55,VK_OEM_PERIOD,0xbe,52,52,XK_greater,0x003e,Period,AB09,dot,0x6c,0x2f
KEY_SLASH,53,ANSI_Slash,0x2c,0x35,0x4a,0x4a,56,VK_OEM_2,0xbf,53,53,XK_slash,0x002f,Slash,AB10,slash,0x6d,0x2c
KEY_SLASH,53,ANSI_Slash,0x2c,0x35,0x4a,0x4a,56,VK_OEM_2,0xbf,53,53,XK_question,0x003f,Slash,AB10,slash,0x6d,0x2c
KEY_RIGHTSHIFT,54,RightShift,0x3c,0x36,0x59,0x59,229,VK_RSHIFT,0xa1,54,54,XK_Shift_R,0xffe2,ShiftRight,RTSH,shift_r,0x6e,0x7b
KEY_KPASTERISK,55,ANSI_KeypadMultiply,0x43,0x37,0x7c,0x7e,85,VK_MULTIPLY,0x6a,55,55,XK_multiply,0x00d7,NumpadMultiply,KPMU,asterisk,0x2f,0x43
KEY_KPASTERISK,55,ANSI_KeypadMultiply,0x43,0x37,0x7c,0x7e,85,VK_MULTIPLY,0x6a,55,55,XK_multiply,0x00d7,NumpadMultiply,KPMU,kp_multiply,0x2f,0x43
KEY_LEFTALT,56,Option,0x3a,0x38,0x11,0x19,226,VK_LMENU,0xa4,56,56,XK_Alt_L,0xffe9,AltLeft,LALT,alt,0x13,0x3a
KEY_LEFTALT,56,Option,0x3a,0x38,0x11,0x19,226,VK_MENU,0x12,56,56,XK_Alt_L,0xffe9,AltLeft,LALT,alt,0x13,0x3a
KEY_SPACE,57,Space,0x31,0x39,0x29,0x29,44,VK_SPACE,0x20,57,57,XK_space,0x0020,Space,SPCE,spc,0x79,0x31
KEY_CAPSLOCK,58,CapsLock,0x39,0x3a,0x58,0x14,57,VK_CAPITAL,0x14,58,58,XK_Caps_Lock,0xffe5,CapsLock,CAPS,caps_lock,0x77,0x39
KEY_F1,59,F1,0x7a,0x3b,0x05,0x07,58,VK_F1,0x70,59,59,XK_F1,0xffbe,F1,FK01,f1,0x05,0x7a
KEY_F2,60,F2,0x78,0x3c,0x06,0x0f,59,VK_F2,0x71,60,60,XK_F2,0xffbf,F2,FK02,f2,0x06,0x78
KEY_F3,61,F3,0x63,0x3d,0x04,0x17,60,VK_F3,0x72,61,61,XK_F3,0xffc0,F3,FK03,f3,0x08,0x63
KEY_F4,62,F4,0x76,0x3e,0x0c,0x1f,61,VK_F4,0x73,62,62,XK_F4,0xffc1,F4,FK04,f4,0x0a,0x76
KEY_F5,63,F5,0x60,0x3f,0x03,0x27,62,VK_F5,0x74,63,63,XK_F5,0xffc2,F5,FK05,f5,0x0c,0x60
KEY_F6,64,F6,0x61,0x40,0x0b,0x2f,63,VK_F6,0x75,64,64,XK_F6,0xffc3,F6,FK06,f6,0x0e,0x61
KEY_F7,65,F7,0x62,0x41,0x83,0x37,64,VK_F7,0x76,65,65,XK_F7,0xffc4,F7,FK07,f7,0x10,0x62
KEY_F8,66,F8,0x64,0x42,0x0a,0x3f,65,VK_F8,0x77,66,66,XK_F8,0xffc5,F8,FK08,f8,0x11,0x64
KEY_F9,67,F9,0x65,0x43,0x01,0x47,66,VK_F9,0x78,67,67,XK_F9,0xffc6,F9,FK09,f9,0x12,0x65
KEY_F10,68,F10,0x6d,0x44,0x09,0x4f,67,VK_F10,0x79,68,68,XK_F10,0xffc7,F10,FK10,f10,0x07,0x6d
KEY_NUMLOCK,69,ANSI_KeypadClear,0x47,0x45,0x77,0x76,83,VK_NUMLOCK,0x90,69,69,XK_Num_Lock,0xff7f,NumLock,NMLK,num_lock,0x62,0x47
KEY_SCROLLLOCK,70,,,0x46,0x7e,0x5f,71,VK_SCROLL,0x91,70,70,XK_Scroll_Lock,0xff14,ScrollLock,SCLK,scroll_lock,0x17,0x6b
KEY_KP7,71,ANSI_Keypad7,0x59,0x47,0x6c,0x6c,95,VK_NUMPAD7,0x67,71,71,XK_KP_7,0xffb7,Numpad7,KP7,kp_7,0x44,0x59
KEY_KP8,72,ANSI_Keypad8,0x5b,0x48,0x75,0x75,96,VK_NUMPAD8,0x68,72,72,XK_KP_8,0xffb8,Numpad8,KP8,kp_8,0x45,0x5b
KEY_KP9,73,ANSI_Keypad9,0x5c,0x49,0x7d,0x7d,97,VK_NUMPAD9,0x69,73,73,XK_KP_9,0xffb9,Numpad9,KP9,kp_9,0x46,0x5c
KEY_KPMINUS,74,ANSI_KeypadMinus,0x4e,0x4a,0x7b,0x4e,86,VK_SUBTRACT,0x6d,74,74,XK_KP_Subtract,0xffad,NumpadSubtract,KPSU,kp_subtract,0x47,0x4e
KEY_KP4,75,ANSI_Keypad4,0x56,0x4b,0x6b,0x6b,92,VK_NUMPAD4,0x64,75,75,XK_KP_4,0xffb4,Numpad4,KP4,kp_4,0x5b,0x56
KEY_KP5,76,ANSI_Keypad5,0x57,0x4c,0x73,0x73,93,VK_NUMPAD5,0x65,76,76,XK_KP_5,0xffb5,Numpad5,KP5,kp_5,0x5c,0x57
KEY_KP6,77,ANSI_Keypad6,0x58,0x4d,0x74,0x74,94,VK_NUMPAD6,0x66,77,77,XK_KP_6,0xffb6,Numpad6,KP6,kp_6,0x5d,0x58
KEY_KPPLUS,78,ANSI_KeypadPlus,0x45,0x4e,0x79,0x7c,87,VK_ADD,0x6b,78,78,XK_KP_Add,0xffab,NumpadAdd,KPAD,kp_add,0x7d,0x45
KEY_KP1,79,ANSI_Keypad1,0x53,0x4f,0x69,0x69,89,VK_NUMPAD1,0x61,79,79,XK_KP_1,0xffb1,Numpad1,KP1,kp_1,0x70,0x53
KEY_KP2,80,ANSI_Keypad2,0x54,0x50,0x72,0x72,90,VK_NUMPAD2,0x62,80,80,XK_KP_2,0xffb2,Numpad2,KP2,kp_2,0x71,0x54
KEY_KP3,81,ANSI_Keypad3,0x55,0x51,0x7a,0x7a,91,VK_NUMPAD3,0x63,81,81,XK_KP_3,0xffb3,Numpad3,KP3,kp_3,0x72,0x55
KEY_KP0,82,ANSI_Keypad0,0x52,0x52,0x70,0x70,98,VK_NUMPAD0,0x60,82,82,XK_KP_0,0xffb0,Numpad0,KP0,kp_0,0x5e,0x52
KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,0x53,0x71,0x71,99,VK_DECIMAL,0x6e,83,83,XK_KP_Decimal,0xffae,NumpadDecimal,KPDL,kp_decimal,0x32,0x41
KEY_KPDOT,83,ANSI_KeypadDecimal,0x41,0x53,0x71,0x71,99,VK_DECIMAL,0x6e,83,83,XK_KP_Decimal,0xffae,NumpadDecimal,KPDC,kp_decimal,0x32,0x41
,84,,,0x54,,,,,,,,,,,,,,
KEY_ZENKAKUHANKAKU,85,,,0x76,0x5f,,148,,,,,,,Lang5,HZTG,,,
KEY_102ND,86,,,0x56,0x61,0x13,100,VK_OEM_102,0xe2,86,86,,,IntlBackslash,LSGT,less,0x7c,
KEY_F11,87,F11,0x67,0x57,0x78,0x56,68,VK_F11,0x7a,87,87,XK_F11,0xffc8,F11,FK11,f11,0x09,0x67
KEY_F12,88,F12,0x6f,0x58,0x07,0x5e,69,VK_F12,0x7b,88,88,XK_F12,0xffc9,F12,FK12,f12,0x0b,0x6f
KEY_RO,89,JIS_Underscore,0x5e,0x73,0x51,,135,,,,,,,IntlRo,AB11,ro,,
KEY_KATAKANA,90,,,0x78,0x63,,146,VK_KANA,0x15,,,,,Katakana,KATA,,,
KEY_KATAKANA,90,,,0x78,0x63,,146,VK_KANA,0x15,,,,,Lang3,KATA,,,
KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Hiragana,HIRA,hiragana,,
KEY_HIRAGANA,91,,,0x77,0x62,0x87,147,,,,,,,Lang4,HIRA,hiragana,,
KEY_HENKAN,92,,,0x79,0x64,0x86,138,,,,,,,Convert,HENK,henkan,,
KEY_KATAKANAHIRAGANA,93,,,0x70,0x13,0x87,136,,,0xc8,0xc8,,,KanaMode,HKTG,katakanahiragana,,
KEY_MUHENKAN,94,,,0x7b,0x67,0x85,139,,,,,,,NonConvert,NFER,muhenkan,,
KEY_MUHENKAN,94,,,0x7b,0x67,0x85,139,,,,,,,NonConvert,MUHE,muhenkan,,
KEY_KPJPCOMMA,95,JIS_KeypadComma,0x5f,0x5c,0x27,,140,,,,,XK_KP_Separator,0xffac,,KPSP,,,
KEY_KPJPCOMMA,95,JIS_KeypadComma,0x5f,0x5c,0x27,,140,,,,,XK_KP_Separator,0xffac,,JPCM,,,
KEY_KPENTER,96,ANSI_KeypadEnter,0x4c,0xe01c,0xe05a,0x79,88,,,0x64,0x64,XK_KP_Enter,0xff8d,NumpadEnter,KPEN,kp_enter,0x5a,0x4c
KEY_RIGHTCTRL,97,RightControl,0x3e,0xe01d,0xe014,0x58,228,VK_RCONTROL,0xa3,0x65,0x65,XK_Control_R,0xffe4,ControlRight,RCTL,ctrl_r,0x4c,0x7d
KEY_KPSLASH,98,ANSI_KeypadDivide,0x4b,0xe035,0xe04a,0x4a,84,VK_DIVIDE,0x6f,0x68,0x68,XK_KP_Divide,0xffaf,NumpadDivide,KPDV,kp_divide,0x2e,0x4b
KEY_SYSRQ,99,,,0x54,0x7f,0x57,70,VK_SNAPSHOT,0x2c,0x67,0x67,XK_Sys_Req,0xff15,PrintScreen,PRSC,print,0x16,0x69
KEY_SYSRQ,99,,,0x54,0x7f,0x57,70,VK_SNAPSHOT,0x2c,0x67,0x67,XK_Sys_Req,0xff15,PrintScreen,SYRQ,sysrq,0x16,0x69
KEY_RIGHTALT,100,RightOption,0x3d,0xe038,0xe011,0x39,230,VK_RMENU,0xa5,0x69,0x69,XK_Alt_R,0xffea,AltRight,ALGR,alt_r,0x0d,0x7c
KEY_RIGHTALT,100,RightOption,0x3d,0xe038,0xe011,0x39,230,VK_RMENU,0xa5,0x69,0x69,XK_Alt_R,0xffea,AltRight,RALT,alt_r,0x0d,0x7c
KEY_LINEFEED,101,,,0x5b,,,,,,,,,,,LNFD,lf,0x6f,
KEY_HOME,102,Home,0x73,0xe047,0xe06c,0x6e,74,VK_HOME,0x24,0x59,0x59,XK_Home,0xff50,Home,HOME,home,0x34,0x73
KEY_UP,103,UpArrow,0x7e,0xe048,0xe075,0x63,82,VK_UP,0x26,0x5a,0x5a,XK_Up,0xff52,ArrowUp,UP,up,0x14,0x3e
KEY_PAGEUP,104,PageUp,0x74,0xe049,0xe07d,0x6f,75,VK_PRIOR,0x21,0x5b,0x5b,XK_Page_Up,0xff55,PageUp,PGUP,pgup,0x60,0x74
KEY_LEFT,105,LeftArrow,0x7b,0xe04b,0xe06b,0x61,80,VK_LEFT,0x25,0x5c,0x5c,XK_Left,0xff51,ArrowLeft,LEFT,left,0x18,0x3b
KEY_RIGHT,106,RightArrow,0x7c,0xe04d,0xe074,0x6a,79,VK_RIGHT,0x27,0x5e,0x5e,XK_Right,0xff53,ArrowRight,RGHT,right,0x1c,0x3c
KEY_END,107,End,0x77,0xe04f,0xe069,0x65,77,VK_END,0x23,0x5f,0x5f,XK_End,0xff57,End,END,end,0x4a,0x77
KEY_DOWN,108,DownArrow,0x7d,0xe050,0xe072,0x60,81,VK_DOWN,0x28,0x60,0x60,XK_Down,0xff54,ArrowDown,DOWN,down,0x1b,0x3d
KEY_PAGEDOWN,109,PageDown,0x79,0xe051,0xe07a,0x6d,78,VK_NEXT,0x22,0x61,0x61,XK_Page_Down,0xff56,PageDown,PGDN,pgdn,0x7b,0x79
KEY_INSERT,110,,,0xe052,0xe070,0x67,73,VK_INSERT,0x2d,0x62,0x62,XK_Insert,0xff63,Insert,INS,insert,0x2c,0x72
KEY_DELETE,111,ForwardDelete,0x75,0xe053,0xe071,0x64,76,VK_DELETE,0x2e,0x63,0x63,XK_Delete,0xffff,Delete,DEL,delete,0x42,0x75
KEY_DELETE,111,ForwardDelete,0x75,0xe053,0xe071,0x64,76,VK_DELETE,0x2e,0x63,0x63,XK_Delete,0xffff,Delete,DELE,,0x42,0x75
KEY_MACRO,112,,,0xe06f,0xe06f,0x8e,,,,,,,,,I120,,,
KEY_MUTE,113,Mute,0x4a,0xe020,0xe023,0x9c,127,VK_VOLUME_MUTE,0xad,,,,,AudioVolumeMute,MUTE,audiomute,,
KEY_MUTE,113,Mute,0x4a,0xe020,0xe023,0x9c,239,VK_VOLUME_MUTE,0xad,,,,,AudioVolumeMute,MUTE,audiomute,,
KEY_VOLUMEDOWN,114,VolumeDown,0x49,0xe02e,0xe021,0x9d,129,VK_VOLUME_DOWN,0xae,,,,,AudioVolumeDown,VOL-,volumedown,,
KEY_VOLUMEDOWN,114,VolumeDown,0x49,0xe02e,0xe021,0x9d,238,VK_VOLUME_DOWN,0xae,,,,,AudioVolumeDown,VOL-,volumedown,,
KEY_VOLUMEUP,115,VolumeUp,0x48,0xe030,0xe032,0x95,128,VK_VOLUME_UP,0xaf,,,,,AudioVolumeUp,VOL+,volumeup,,
KEY_VOLUMEUP,115,VolumeUp,0x48,0xe030,0xe032,0x95,237,VK_VOLUME_UP,0xaf,,,,,AudioVolumeUp,VOL+,volumeup,,
KEY_POWER,116,,,0xe05e,0xe037,,102,,,,,,,Power,POWR,power,,0x7f7f
KEY_KPEQUAL,117,ANSI_KeypadEquals,0x51,0x59,0x0f,,103,,,0x76,0x76,XK_KP_Equal,0xffbd,NumpadEqual,KPEQ,kp_equals,0x2d,0x51
KEY_KPPLUSMINUS,118,,,0xe04e,0xe079,,,,,,,,,,I126,,,
KEY_PAUSE,119,,,0xe046,0xe077,0x62,72,VK_PAUSE,0x013,0x66,0x66,XK_Pause,0xff13,Pause,PAUS,pause,0x15,0x71
KEY_SCALE,120,,,0xe00b,,,,,,,,,,,I128,,,
KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,KPCO,kp_comma,,
KEY_KPCOMMA,121,,,0x7e,0x6d,,133,VK_SEPARATOR??,0x6c,,,,,NumpadComma,I129,,,
KEY_HANGEUL,122,JIS_Kana,0x68,0x72,,,144,VK_HANGEUL,0x15,,0x71,,,Lang1,HNGL,,,
KEY_HANJA,123,JIS_Eisu,0x66,0x71,,,145,VK_HANJA,0x19,,0x72,,,Lang2,HJCV,,,
KEY_YEN,124,JIS_Yen,0x5d,0x7d,0x6a,0x5d,137,,,0x7d,0x7d,,,IntlYen,AE13,yen,,
KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LMTA,meta_l,0x78,0x37
KEY_LEFTMETA,125,Command,0x37,0xe05b,0xe01f,0x8b,227,VK_LWIN,0x5b,0x6b,0x6b,XK_Meta_L,0xffe7,MetaLeft,LWIN,meta_l,0x78,0x37
KEY_RIGHTMETA,126,RightCommand,0x36,0xe05c,0xe027,0x8c,231,VK_RWIN,0x5c,0x6c,0x6c,XK_Meta_R,0xffe8,MetaRight,RMTA,meta_r,0x7a,0x37
KEY_RIGHTMETA,126,RightCommand,0x36,0xe05c,0xe027,0x8c,231,VK_RWIN,0x5c,0x6c,0x6c,XK_Meta_R,0xffe8,MetaRight,RWIN,meta_r,0x7a,0x37
KEY_COMPOSE,127,,0x6e,0xe05d,0xe02f,0x8d,101,VK_APPS,0x5d,0x6d,0x6d,,,ContextMenu,MENU,compose,0x43,
KEY_COMPOSE,127,,0x6e,0xe05d,0xe02f,0x8d,101,VK_APPS,0x5d,0x6d,0x6d,,,ContextMenu,COMP,compose,0x43,
KEY_STOP,128,,,0xe068,0xe028,0x0a,120,VK_BROWSER_STOP,0xa9,,,,,BrowserStop,STOP,stop,0x01,
KEY_STOP,128,,,0xe068,0xe028,0x0a,243,VK_BROWSER_STOP,0xa9,,,,,BrowserStop,STOP,stop,0x01,
KEY_AGAIN,129,,,0xe005,,0x0b,121,,,,,,,Again,AGAI,again,0x03,
KEY_PROPS,130,,,0xe006,,0x0c,,,,,,,,Props,PROP,props,0x19,
KEY_UNDO,131,,,0xe007,,0x10,122,,,,,,,Undo,UNDO,undo,0x1a,
KEY_FRONT,132,,,0xe00c,,,119,,,,,,,,FRNT,front,0x31,
KEY_COPY,133,,,0xe078,,0x18,124,,,,,,,Copy,COPY,copy,0x33,
KEY_OPEN,134,,,0x64,,0x20,116,,,,,,,Open,OPEN,open,0x48,
KEY_PASTE,135,,,0x65,,0x28,125,,,,,,,Paste,PAST,paste,0x49,
KEY_FIND,136,,,0xe041,,0x30,126,,,,,,,Find,FIND,find,0x5f,
KEY_FIND,136,,,0xe041,,0x30,244,,,,,,,Find,FIND,find,0x5f,
KEY_CUT,137,,,0xe03c,,0x38,123,,,,,,,Cut,CUT,cut,0x61,
KEY_HELP,138,Help,0x72,0xe075,,0x09,117,VK_HELP,0x2f,,,XK_Help,0xff6a,Help,HELP,help,0x76,
KEY_MENU,139,,,0xe01e,,0x91,118,,,,,,,,I147,menu,,
KEY_CALC,140,,,0xe021,0xe02b,0xa3,251,,,,,,,LaunchApp2,I148,calculator,,
KEY_SETUP,141,,,0x66,,,,,,,,,,,I149,,,
KEY_SLEEP,142,,,0xe05f,0xe03f,,248,VK_SLEEP,0x5f,,,,,Sleep,I150,sleep,,
KEY_WAKEUP,143,,,0xe063,0xe05e,,,,,,,,,WakeUp,I151,wake,,
KEY_FILE,144,,,0x67,,,,,,,,,,,I152,,,
KEY_SENDFILE,145,,,0x68,,,,,,,,,,,I153,,,
KEY_DELETEFILE,146,,,0x69,,,,,,,,,,,I154,,,
KEY_XFER,147,,,0xe013,,0xa2,,,,,,,,,XFER,,,
KEY_XFER,147,,,0xe013,,0xa2,,,,,,,,,I155,,,
KEY_PROG1,148,,,0xe01f,,0xa0,,,,,,,,,I156,,,
KEY_PROG2,149,,,0xe017,,0xa1,,,,,,,,,I157,,,
KEY_WWW,150,,,0xe002,,,240,,,,,,,,I158,,,
KEY_MSDOS,151,,,0x6a,,,,,,,,,,,I159,,,
KEY_SCREENLOCK,152,,,0xe012,,0x96,249,,,,,,,,I160,,,
KEY_DIRECTION,153,,,0x6b,,,,,,,,,,,I161,,,
KEY_CYCLEWINDOWS,154,,,0xe026,,0x9b,,,,,,,,,I162,,,
KEY_MAIL,155,,,0xe06c,0xe048,,,,,,,,,LaunchMail,I163,mail,,
KEY_BOOKMARKS,156,,,0xe066,0xe018,,,,,,,,,BrowserFavorites,I164,ac_bookmarks,,
KEY_COMPUTER,157,,,0xe06b,0xe040,,,,,,,,,LaunchApp1,I165,computer,,
KEY_BACK,158,,,0xe06a,0xe038,,241,VK_BROWSER_BACK,0xa6,,,,,BrowserBack,I166,ac_back,,
KEY_FORWARD,159,,,0xe069,0xe030,,242,VK_BROWSER_FORWARD,0xa7,,,,,BrowserForward,I167,ac_forward,,
KEY_CLOSECD,160,,,0xe023,,0x9a,,,,,,,,,I168,,,
KEY_EJECTCD,161,,,0x6c,,,236,,,,,,,,I169,,,
KEY_EJECTCLOSECD,162,,,0xe07d,,,,,,,,,,Eject,I170,,,
KEY_NEXTSONG,163,,,0xe019,0xe04d,0x93,235,VK_MEDIA_NEXT_TRACK,0xb0,,,,,MediaTrackNext,I171,audionext,,
KEY_PLAYPAUSE,164,,,0xe022,0xe034,,232,VK_MEDIA_PLAY_PAUSE,0xb3,,,,,MediaPlayPause,I172,audioplay,,
KEY_PREVIOUSSONG,165,,,0xe010,0xe015,0x94,234,VK_MEDIA_PREV_TRACK,0xb1,,,,,MediaTrackPrevious,I173,audioprev,,
KEY_STOPCD,166,,,0xe024,0xe03b,0x98,233,VK_MEDIA_STOP,0xb2,,,,,MediaStop,I174,audiostop,,
KEY_RECORD,167,,,0xe031,,0x9e,,,,,,,,,I175,,,
KEY_REWIND,168,,,0xe018,,0x9f,,,,,,,,,I176,,,
KEY_PHONE,169,,,0x63,,,,,,,,,,,I177,,,
KEY_ISO,170,ISO_Section,0xa,,,,,,,,,,,,I178,,,
KEY_CONFIG,171,,,0xe001,,,,,,,,,,,I179,,,
KEY_HOMEPAGE,172,,,0xe032,0xe03a,0x97,,VK_BROWSER_HOME,0xac,,,,,BrowserHome,I180,ac_home,,
KEY_REFRESH,173,,,0xe067,0xe020,,250,VK_BROWSER_REFRESH,0xa8,,,,,BrowserRefresh,I181,ac_refresh,,
KEY_EXIT,174,,,,,,,,,,,,,,I182,,,
KEY_MOVE,175,,,,,,,,,,,,,,I183,,,
KEY_EDIT,176,,,0xe008,,,247,,,,,,,,I184,,,
KEY_SCROLLUP,177,,,0x75,,,245,,,,,,,,I185,,,
KEY_SCROLLDOWN,178,,,0xe00f,,,246,,,,,,,,I186,,,
KEY_KPLEFTPAREN,179,,,0xe076,,,182,,,,,,,NumpadParenLeft,I187,,,
KEY_KPRIGHTPAREN,180,,,0xe07b,,,183,,,,,,,NumpadParenRight,I188,,,
KEY_NEW,181,,,0xe009,,,,,,,,,,,I189,,,
KEY_REDO,182,,,0xe00a,,,,,,,,,,,I190,,,
KEY_F13,183,F13,0x69,0x5d,0x2f,0x7f,104,VK_F13,0x7c,0x6e,0x6e,,,F13,FK13,,,0x69
KEY_F14,184,F14,0x6b,0x5e,0x37,0x80,105,VK_F14,0x7d,0x6f,0x6f,,,F14,FK14,,,0x6b
KEY_F15,185,F15,0x71,0x5f,0x3f,0x81,106,VK_F15,0x7e,0x70,0x70,,,F15,FK15,,,0x71
KEY_F16,186,F16,0x6a,0x55,,0x82,107,VK_F16,0x7f,0x71,0x71,,,F16,FK16,,,
KEY_F17,187,F17,0x40,0xe003,,0x83,108,VK_F17,0x80,0x72,0x72,,,F17,FK17,,,
KEY_F18,188,F18,0x4f,0xe077,,,109,VK_F18,0x81,,,,,F18,FK18,,,
KEY_F19,189,F19,0x50,0xe004,,,110,VK_F19,0x82,,,,,F19,FK19,,,
KEY_F20,190,F20,0x5a,0x5a,,,111,VK_F20,0x83,,,,,F20,FK20,,,
KEY_F21,191,,,0x74,,,112,VK_F21,0x84,,,,,F21,FK21,,,
KEY_F22,192,,,0xe079,,,113,VK_F22,0x85,,,,,F22,FK22,,,
KEY_F23,193,,,0x6d,,,114,VK_F23,0x86,,,,,F23,FK23,,,
KEY_F24,194,,,0x6f,,,115,VK_F24,0x87,,,,,F24,FK24,,,
,195,,,0xe015,,,,,,,,,,,,,,
,196,,,0xe016,,,,,,,,,,,,,,
,197,,,0xe01a,,,,,,,,,,,,,,
,198,,,0xe01b,,,,,,,,,,,,,,
,199,,,0xe027,,,,,,,,,,,,,,
KEY_PLAYCD,200,,,0xe028,,,,,,,,,,,I208,,,
KEY_PAUSECD,201,,,0xe029,,,,,,,,,,,I209,,,
KEY_PROG3,202,,,0xe02b,,,,,,,,,,,I210,,,
KEY_PROG4,203,,,0xe02c,,,,,,,,,,,I211,,,
KEY_DASHBOARD,204,,,0xe02d,,,,,,,,,,,I212,,,
KEY_SUSPEND,205,,,0xe025,,,,,,,,,,Suspend,I213,,,
KEY_CLOSE,206,,,0xe02f,,,,,,,,,,,I214,,,
KEY_PLAY,207,,,0xe033,,,,VK_PLAY,0xfa,,,,,,I215,,,
KEY_FASTFORWARD,208,,,0xe034,,,,,,,,,,,I216,,,
KEY_BASSBOOST,209,,,0xe036,,,,,,,,,,,I217,,,
KEY_PRINT,210,,,0xe039,,,,VK_PRINT,0x2a,,,,,,I218,,,
KEY_HP,211,,,0xe03a,,,,,,,,,,,I219,,,
KEY_CAMERA,212,,,0xe03b,,,,,,,,,,,I220,,,
KEY_SOUND,213,,,0xe03d,,,,,,,,,,,I221,,,
KEY_QUESTION,214,,,0xe03e,,,,,,,,,,,I222,,,
KEY_EMAIL,215,,,0xe03f,,,,VK_LAUNCH_MAIL,0xb4,,,,,,I223,,,
KEY_CHAT,216,,,0xe040,,,,,,,,,,,I224,,,
KEY_SEARCH,217,,,0xe065,0xe010,,,VK_BROWSER_SEARCH,0xaa,,,,,BrowserSearch,I225,,,
KEY_CONNECT,218,,,0xe042,,,,,,,,,,,I226,,,
KEY_FINANCE,219,,,0xe043,,,,,,,,,,,I227,,,
KEY_SPORT,220,,,0xe044,,,,,,,,,,,I228,,,
KEY_SHOP,221,,,0xe045,,,,,,,,,,,I229,,,
KEY_ALTERASE,222,,,0xe014,,,,,,,,,,,I230,,,
KEY_CANCEL,223,,,0xe04a,,,,,,,,,,,I231,,,
KEY_BRIGHTNESSDOWN,224,,,0xe04c,,,,,,,,,,,I232,,,
KEY_BRIGHTNESSUP,225,,,0xe054,,,,,,,,,,,I233,,,
KEY_MEDIA,226,,,0xe06d,0xe050,,,,,,,,,MediaSelect,I234,mediaselect,,
KEY_SWITCHVIDEOMODE,227,,,0xe056,,,,,,,,,,,I235,,,
KEY_KBDILLUMTOGGLE,228,,,0xe057,,,,,,,,,,,I236,,,
KEY_KBDILLUMDOWN,229,,,0xe058,,,,,,,,,,,I237,,,
KEY_KBDILLUMUP,230,,,0xe059,,,,,,,,,,,I238,,,
KEY_SEND,231,,,0xe05a,,,,,,,,,,,I239,,,
KEY_REPLY,232,,,0xe064,,,,,,,,,,,I240,,,
KEY_FORWARDMAIL,233,,,0xe00e,,,,,,,,,,,I241,,,
KEY_SAVE,234,,,0xe055,,,,,,,,,,,I242,,,
KEY_DOCUMENTS,235,,,0xe070,,,,,,,,,,,I243,,,
KEY_BATTERY,236,,,0xe071,,,,,,,,,,,I244,,,
KEY_BLUETOOTH,237,,,0xe072,,,,,,,,,,,I245,,,
KEY_WLAN,238,,,0xe073,,,,,,,,,,,I246,,,
KEY_UWB,239,,,0xe074,,,,,,,,,,,I247,,,
KEY_UNKNOWN,240,,,,,,,,,,,,,,I248,,,
KEY_VIDEO_NEXT,241,,,,,,,,,,,,,,I249,,,
KEY_VIDEO_PREV,242,,,,,,,,,,,,,,I250,,,
KEY_BRIGHTNESS_CYCLE,243,,,,,,,,,,,,,,I251,,,
KEY_BRIGHTNESS_ZERO,244,,,,,,,,,,,,,,I252,,,
KEY_DISPLAY_OFF,245,,,,,,,,,,,,,,I253,,,
KEY_WIMAX,246,,,,,,,,,,,,,,,,,
,247,,,,,,,,,,,,,,,,,
,248,,,,,,,,,,,,,,,,,
,249,,,,,,,,,,,,,,,,,
,250,,,,,,,,,,,,,,,,,
,251,,,,,,,,,,,,,,,,,
,252,,,,,,,,,,,,,,,,,
,253,,,,,,,,,,,,,,,,,
,254,,,,,,,,,,,,,,,,,
,255,,,,0xe012,,,,,,,,,,,,,
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,,,XK_Select,0xff60,Select,SELE,,,
KEY_GOTO,0x162,,,,,,,,,,,,,,,,,
KEY_CLEAR,0x163,,,,,,,,,,,,,NumpadClear,CLR,,,
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,,,,,,,,,,,,,,BREA,,,
KEY_BREAK,0x19b,,,,,,,,,,,,,,BRK,,,
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,Function,0x3f,,,,,,,,,,,Fn,,,,
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,,,,,,,,,,,,,NumpadStar,,,,
KEY_NUMERIC_POUND,0x20b,,,,,,,,,,,,,NumpadHash,,,,
KEY_RFKILL,0x20c,,,,,,,,,,,,,,,,,
1 Linux Name Linux Keycode OS-X Name OS-X Keycode AT set1 keycode AT set2 keycode AT set3 keycode USB Keycodes Win32 Name Win32 Keycode Xwin XT Xfree86 KBD XT X11 keysym name X11 keysym HTML code XKB key name QEMU QKeyCode Sun KBD Apple ADB
2 KEY_RESERVED 0 0xff unmapped 0xff
3 KEY_ESC 1 Escape 0x35 0x01 0x76 0x08 41 VK_ESCAPE 0x1b 1 1 XK_Escape 0xff1b Escape ESC esc 0x1d 0x35
4 KEY_1 2 ANSI_1 0x12 0x02 0x16 0x16 30 VK_1 0x31 2 2 XK_1 0x0031 Digit1 AE01 1 0x1e 0x12
5 KEY_1 2 ANSI_1 0x12 0x02 0x16 0x16 30 VK_1 0x31 2 2 XK_exclam 0x0021 Digit1 AE01 1 0x1e 0x12
6 KEY_2 3 ANSI_2 0x13 0x03 0x1e 0x1e 31 VK_2 0x32 3 3 XK_2 0x0032 Digit2 AE02 2 0x1f 0x13
7 KEY_2 3 ANSI_2 0x13 0x03 0x1e 0x1e 31 VK_2 0x32 3 3 XK_at 0x0040 Digit2 AE02 2 0x1f 0x13
8 KEY_3 4 ANSI_3 0x14 0x04 0x26 0x26 32 VK_3 0x33 4 4 XK_3 0x0033 Digit3 AE03 3 0x20 0x14
9 KEY_3 4 ANSI_3 0x14 0x04 0x26 0x26 32 VK_3 0x33 4 4 XK_numbersign 0x0023 Digit3 AE03 3 0x20 0x14
10 KEY_4 5 ANSI_4 0x15 0x05 0x25 0x25 33 VK_4 0x34 5 5 XK_4 0x0034 Digit4 AE04 4 0x21 0x15
11 KEY_4 5 ANSI_4 0x15 0x05 0x25 0x25 33 VK_4 0x34 5 5 XK_dollar 0x0024 Digit4 AE04 4 0x21 0x15
12 KEY_5 6 ANSI_5 0x17 0x06 0x2e 0x2e 34 VK_5 0x35 6 6 XK_5 0x0035 Digit5 AE05 5 0x22 0x17
13 KEY_5 6 ANSI_5 0x17 0x06 0x2e 0x2e 34 VK_5 0x35 6 6 XK_percent 0x0025 Digit5 AE05 5 0x22 0x17
14 KEY_6 7 ANSI_6 0x16 0x07 0x36 0x36 35 VK_6 0x36 7 7 XK_6 0x0036 Digit6 AE06 6 0x23 0x16
15 KEY_6 7 ANSI_6 0x16 0x07 0x36 0x36 35 VK_6 0x36 7 7 XK_asciicircum 0x005e Digit6 AE06 6 0x23 0x16
16 KEY_7 8 ANSI_7 0x1a 0x08 0x3d 0x3d 36 VK_7 0x37 8 8 XK_7 0x0037 Digit7 AE07 7 0x24 0x1a
17 KEY_7 8 ANSI_7 0x1a 0x08 0x3d 0x3d 36 VK_7 0x37 8 8 XK_ampersand 0x0026 Digit7 AE07 7 0x24 0x1a
18 KEY_8 9 ANSI_8 0x1c 0x09 0x3e 0x3e 37 VK_8 0x38 9 9 XK_8 0x0038 Digit8 AE08 8 0x25 0x1c
19 KEY_8 9 ANSI_8 0x1c 0x09 0x3e 0x3e 37 VK_8 0x38 9 9 XK_asterisk 0x002a Digit8 AE08 8 0x25 0x1c
20 KEY_9 10 ANSI_9 0x19 0x0a 0x46 0x46 38 VK_9 0x39 10 10 XK_9 0x0039 Digit9 AE09 9 0x26 0x19
21 KEY_9 10 ANSI_9 0x19 0x0a 0x46 0x46 38 VK_9 0x39 10 10 XK_parenleft 0x0028 Digit9 AE09 9 0x26 0x19
22 KEY_0 11 ANSI_0 0x1d 0x0b 0x45 0x45 39 VK_0 0x30 11 11 XK_0 0x0030 Digit0 AE10 0 0x27 0x1d
23 KEY_0 11 ANSI_0 0x1d 0x0b 0x45 0x45 39 VK_0 0x30 11 11 XK_parenright 0x0029 Digit0 AE10 0 0x27 0x1d
24 KEY_MINUS 12 ANSI_Minus 0x1b 0x0c 0x4e 0x4e 45 VK_OEM_MINUS 0xbd 12 12 XK_minus 0x002d Minus AE11 minus 0x28 0x1b
25 KEY_MINUS 12 ANSI_Minus 0x1b 0x0c 0x4e 0x4e 45 VK_OEM_MINUS 0xbd 12 12 XK_underscore 0x005f Minus AE11 minus 0x28 0x1b
26 KEY_EQUAL 13 ANSI_Equal 0x18 0x0d 0x55 0x55 46 VK_OEM_PLUS 0xbb 13 13 XK_equal 0x003d Equal AE12 equal 0x29 0x18
27 KEY_EQUAL 13 ANSI_Equal 0x18 0x0d 0x55 0x55 46 VK_OEM_PLUS 0xbb 13 13 XK_plus 0x002b Equal AE12 equal 0x29 0x18
28 KEY_BACKSPACE 14 Delete 0x33 0x0e 0x66 0x66 42 VK_BACK 0x08 14 14 XK_BackSpace 0xff08 Backspace BKSP backspace 0x2b 0x33
29 KEY_TAB 15 Tab 0x30 0x0f 0x0d 0x0d 43 VK_TAB 0x09 15 15 XK_Tab 0xff09 Tab TAB tab 0x35 0x30
30 KEY_Q 16 ANSI_Q 0xc 0x10 0x15 0x15 20 VK_Q 0x51 16 16 XK_Q 0x0051 KeyQ AD01 q 0x36 0xc
31 KEY_Q 16 ANSI_Q 0xc 0x10 0x15 0x15 20 VK_Q 0x51 16 16 XK_q 0x0071 KeyQ AD01 q 0x36 0xc
32 KEY_W 17 ANSI_W 0xd 0x11 0x1d 0x1d 26 VK_W 0x57 17 17 XK_W 0x0057 KeyW AD02 w 0x37 0xd
33 KEY_W 17 ANSI_W 0xd 0x11 0x1d 0x1d 26 VK_W 0x57 17 17 XK_w 0x0077 KeyW AD02 w 0x37 0xd
34 KEY_E 18 ANSI_E 0xe 0x12 0x24 0x24 8 VK_E 0x45 18 18 XK_E 0x0045 KeyE AD03 e 0x38 0xe
35 KEY_E 18 ANSI_E 0xe 0x12 0x24 0x24 8 VK_E 0x45 18 18 XK_e 0x0065 KeyE AD03 e 0x38 0xe
36 KEY_R 19 ANSI_R 0xf 0x13 0x2d 0x2d 21 VK_R 0x52 19 19 XK_R 0x0052 KeyR AD04 r 0x39 0xf
37 KEY_R 19 ANSI_R 0xf 0x13 0x2d 0x2d 21 VK_R 0x52 19 19 XK_r 0x0072 KeyR AD04 r 0x39 0xf
38 KEY_T 20 ANSI_T 0x11 0x14 0x2c 0x2c 23 VK_T 0x54 20 20 XK_T 0x0054 KeyT AD05 t 0x3a 0x11
39 KEY_T 20 ANSI_T 0x11 0x14 0x2c 0x2c 23 VK_T 0x54 20 20 XK_t 0x0074 KeyT AD05 t 0x3a 0x11
40 KEY_Y 21 ANSI_Y 0x10 0x15 0x35 0x35 28 VK_Y 0x59 21 21 XK_Y 0x0059 KeyY AD06 y 0x3b 0x10
41 KEY_Y 21 ANSI_Y 0x10 0x15 0x35 0x35 28 VK_Y 0x59 21 21 XK_y 0x0079 KeyY AD06 y 0x3b 0x10
42 KEY_U 22 ANSI_U 0x20 0x16 0x3c 0x3c 24 VK_U 0x55 22 22 XK_U 0x0055 KeyU AD07 u 0x3c 0x20
43 KEY_U 22 ANSI_U 0x20 0x16 0x3c 0x3c 24 VK_U 0x55 22 22 XK_u 0x0075 KeyU AD07 u 0x3c 0x20
44 KEY_I 23 ANSI_I 0x22 0x17 0x43 0x43 12 VK_I 0x49 23 23 XK_I 0x0049 KeyI AD08 i 0x3d 0x22
45 KEY_I 23 ANSI_I 0x22 0x17 0x43 0x43 12 VK_I 0x49 23 23 XK_i 0x0069 KeyI AD08 i 0x3d 0x22
46 KEY_O 24 ANSI_O 0x1f 0x18 0x44 0x44 18 VK_O 0x4f 24 24 XK_O 0x004f KeyO AD09 o 0x3e 0x1f
47 KEY_O 24 ANSI_O 0x1f 0x18 0x44 0x44 18 VK_O 0x4f 24 24 XK_o 0x006f KeyO AD09 o 0x3e 0x1f
48 KEY_P 25 ANSI_P 0x23 0x19 0x4d 0x4d 19 VK_P 0x50 25 25 XK_P 0x0050 KeyP AD10 p 0x3f 0x23
49 KEY_P 25 ANSI_P 0x23 0x19 0x4d 0x4d 19 VK_P 0x50 25 25 XK_p 0x0070 KeyP AD10 p 0x3f 0x23
50 KEY_LEFTBRACE 26 ANSI_LeftBracket 0x21 0x1a 0x54 0x54 47 VK_OEM_4 0xdb 26 26 XK_bracketleft 0x005b BracketLeft AD11 bracket_left 0x40 0x21
51 KEY_LEFTBRACE 26 ANSI_LeftBracket 0x21 0x1a 0x54 0x54 47 VK_OEM_4 0xdb 26 26 XK_braceleft 0x007b BracketLeft AD11 bracket_left 0x40 0x21
52 KEY_RIGHTBRACE 27 ANSI_RightBracket 0x1e 0x1b 0x5b 0x5b 48 VK_OEM_6 0xdd 27 27 XK_bracketright 0x005d BracketRight AD12 bracket_right 0x41 0x1e
53 KEY_RIGHTBRACE 27 ANSI_RightBracket 0x1e 0x1b 0x5b 0x5b 48 VK_OEM_6 0xdd 27 27 XK_braceright 0x007d BracketRight AD12 bracket_right 0x41 0x1e
54 KEY_ENTER 28 Return 0x24 0x1c 0x5a 0x5a 40 VK_RETURN 0x0d 28 28 XK_Return 0xff0d Enter RTRN ret 0x59 0x24
55 KEY_LEFTCTRL 29 Control 0x3b 0x1d 0x14 0x11 224 VK_LCONTROL 0xa2 29 29 XK_Control_L 0xffe3 ControlLeft LCTL ctrl 0x4c 0x36
56 KEY_LEFTCTRL 29 Control 0x3b 0x1d 0x14 0x11 224 VK_CONTROL 0x11 29 29 XK_Control_L 0xffe3 ControlLeft LCTL ctrl 0x4c 0x36
57 KEY_A 30 ANSI_A 0x0 0x1e 0x1c 0x1c 4 VK_A 0x41 30 30 XK_A 0x0041 KeyA AC01 a 0x4d 0x0
58 KEY_A 30 ANSI_A 0x0 0x1e 0x1c 0x1c 4 VK_A 0x41 30 30 XK_a 0x0061 KeyA AC01 a 0x4d 0x0
59 KEY_S 31 ANSI_S 0x1 0x1f 0x1b 0x1b 22 VK_S 0x53 31 31 XK_S 0x0053 KeyS AC02 s 0x4e 0x1
60 KEY_S 31 ANSI_S 0x1 0x1f 0x1b 0x1b 22 VK_S 0x53 31 31 XK_s 0x0073 KeyS AC02 s 0x4e 0x1
61 KEY_D 32 ANSI_D 0x2 0x20 0x23 0x23 7 VK_D 0x44 32 32 XK_D 0x0044 KeyD AC03 d 0x4f 0x2
62 KEY_D 32 ANSI_D 0x2 0x20 0x23 0x23 7 VK_D 0x44 32 32 XK_d 0x0064 KeyD AC03 d 0x4f 0x2
63 KEY_F 33 ANSI_F 0x3 0x21 0x2b 0x2b 9 VK_F 0x46 33 33 XK_F 0x0046 KeyF AC04 f 0x50 0x3
64 KEY_F 33 ANSI_F 0x3 0x21 0x2b 0x2b 9 VK_F 0x46 33 33 XK_f 0x0066 KeyF AC04 f 0x50 0x3
65 KEY_G 34 ANSI_G 0x5 0x22 0x34 0x34 10 VK_G 0x47 34 34 XK_G 0x0047 KeyG AC05 g 0x51 0x5
66 KEY_G 34 ANSI_G 0x5 0x22 0x34 0x34 10 VK_G 0x47 34 34 XK_g 0x0067 KeyG AC05 g 0x51 0x5
67 KEY_H 35 ANSI_H 0x4 0x23 0x33 0x33 11 VK_H 0x48 35 35 XK_H 0x0048 KeyH AC06 h 0x52 0x4
68 KEY_H 35 ANSI_H 0x4 0x23 0x33 0x33 11 VK_H 0x48 35 35 XK_h 0x0068 KeyH AC06 h 0x52 0x4
69 KEY_J 36 ANSI_J 0x26 0x24 0x3b 0x3b 13 VK_J 0x4a 36 36 XK_J 0x004a KeyJ AC07 j 0x53 0x26
70 KEY_J 36 ANSI_J 0x26 0x24 0x3b 0x3b 13 VK_J 0x4a 36 36 XK_j 0x006a KeyJ AC07 j 0x53 0x26
71 KEY_K 37 ANSI_K 0x28 0x25 0x42 0x42 14 VK_K 0x4b 37 37 XK_K 0x004b KeyK AC08 k 0x54 0x28
72 KEY_K 37 ANSI_K 0x28 0x25 0x42 0x42 14 VK_K 0x4b 37 37 XK_k 0x006b KeyK AC08 k 0x54 0x28
73 KEY_L 38 ANSI_L 0x25 0x26 0x4b 0x4b 15 VK_L 0x4c 38 38 XK_L 0x004c KeyL AC09 l 0x55 0x25
74 KEY_L 38 ANSI_L 0x25 0x26 0x4b 0x4b 15 VK_L 0x4c 38 38 XK_l 0x006c KeyL AC09 l 0x55 0x25
75 KEY_SEMICOLON 39 ANSI_Semicolon 0x29 0x27 0x4c 0x4c 51 VK_OEM_1 0xba 39 39 XK_semicolon 0x003b Semicolon AC10 semicolon 0x56 0x29
76 KEY_SEMICOLON 39 ANSI_Semicolon 0x29 0x27 0x4c 0x4c 51 VK_OEM_1 0xba 39 39 XK_colon 0x003a Semicolon AC10 semicolon 0x56 0x29
77 KEY_APOSTROPHE 40 ANSI_Quote 0x27 0x28 0x52 0x52 52 VK_OEM_7 0xde 40 40 XK_apostrophe 0x0027 Quote AC11 apostrophe 0x57 0x27
78 KEY_APOSTROPHE 40 ANSI_Quote 0x27 0x28 0x52 0x52 52 VK_OEM_7 0xde 40 40 XK_quotedbl 0x0022 Quote AC11 apostrophe 0x57 0x27
79 KEY_GRAVE 41 ANSI_Grave 0x32 0x29 0x0e 0x0e 53 VK_OEM_3 0xc0 41 41 XK_grave 0x0060 Backquote TLDE grave_accent 0x2a 0x32
80 KEY_GRAVE 41 ANSI_Grave 0x32 0x29 0x0e 0x0e 53 VK_OEM_3 0xc0 41 41 XK_grave 0x0060 Backquote AB00 grave_accent 0x2a 0x32
81 KEY_GRAVE 41 ANSI_Grave 0x32 0x29 0x0e 0x0e 53 VK_OEM_3 0xc0 41 41 XK_asciitilde 0x007e Backquote TLDE grave_accent 0x2a 0x32
82 KEY_GRAVE 41 ANSI_Grave 0x32 0x29 0x0e 0x0e 53 VK_OEM_3 0xc0 41 41 XK_asciitilde 0x007e Backquote AB00 grave_accent 0x2a 0x32
83 KEY_SHIFT 42 Shift 0x38 0x2a 0x12 0x12 225 VK_SHIFT 0x10 42 42 XK_Shift_L 0xffe1 ShiftLeft LFSH shift 0x63 0x38
84 KEY_LEFTSHIFT 42 Shift 0x38 0x2a 0x12 0x12 225 VK_LSHIFT 0xa0 42 42 XK_Shift_L 0xffe1 ShiftLeft LFSH shift 0x63 0x38
85 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 49 VK_OEM_5 0xdc 43 43 XK_backslash 0x005c Backslash BKSL backslash 0x58 0x2a
86 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 49 VK_OEM_5 0xdc 43 43 XK_backslash 0x005c Backslash AC12 backslash 0x58 0x2a
87 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 49 VK_OEM_5 0xdc 43 43 XK_bar 0x007c Backslash BKSL backslash 0x58 0x2a
88 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 49 VK_OEM_5 0xdc 43 43 XK_bar 0x007c Backslash AC12 backslash 0x58 0x2a
89 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 50 VK_OEM_5 0xdc 43 43 XK_backslash 0x005c Backslash BKSL backslash 0x58 0x2a
90 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 50 VK_OEM_5 0xdc 43 43 XK_backslash 0x005c Backslash AC12 backslash 0x58 0x2a
91 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 50 VK_OEM_5 0xdc 43 43 XK_bar 0x007c Backslash BKSL backslash 0x58 0x2a
92 KEY_BACKSLASH 43 ANSI_Backslash 0x2a 0x2b 0x5d 0x5c 50 VK_OEM_5 0xdc 43 43 XK_bar 0x007c Backslash AC12 backslash 0x58 0x2a
93 KEY_Z 44 ANSI_Z 0x6 0x2c 0x1a 0x1a 29 VK_Z 0x5a 44 44 XK_Z 0x005a KeyZ AB01 z 0x64 0x6
94 KEY_Z 44 ANSI_Z 0x6 0x2c 0x1a 0x1a 29 VK_Z 0x5a 44 44 XK_z 0x007a KeyZ AB01 z 0x64 0x6
95 KEY_X 45 ANSI_X 0x7 0x2d 0x22 0x22 27 VK_X 0x58 45 45 XK_X 0x0058 KeyX AB02 x 0x65 0x7
96 KEY_X 45 ANSI_X 0x7 0x2d 0x22 0x22 27 VK_X 0x58 45 45 XK_x 0x0078 KeyX AB02 x 0x65 0x7
97 KEY_C 46 ANSI_C 0x8 0x2e 0x21 0x21 6 VK_C 0x43 46 46 XK_C 0x0043 KeyC AB03 c 0x66 0x8
98 KEY_C 46 ANSI_C 0x8 0x2e 0x21 0x21 6 VK_C 0x43 46 46 XK_c 0x0063 KeyC AB03 c 0x66 0x8
99 KEY_V 47 ANSI_V 0x9 0x2f 0x2a 0x2a 25 VK_V 0x56 47 47 XK_V 0x0056 KeyV AB04 v 0x67 0x9
100 KEY_V 47 ANSI_V 0x9 0x2f 0x2a 0x2a 25 VK_V 0x56 47 47 XK_v 0x0076 KeyV AB04 v 0x67 0x9
101 KEY_B 48 ANSI_B 0xb 0x30 0x32 0x32 5 VK_B 0x42 48 48 XK_B 0x0042 KeyB AB05 b 0x68 0xb
102 KEY_B 48 ANSI_B 0xb 0x30 0x32 0x32 5 VK_B 0x42 48 48 XK_b 0x0062 KeyB AB05 b 0x68 0xb
103 KEY_N 49 ANSI_N 0x2d 0x31 0x31 0x31 17 VK_N 0x4e 49 49 XK_N 0x004e KeyN AB06 n 0x69 0x2d
104 KEY_N 49 ANSI_N 0x2d 0x31 0x31 0x31 17 VK_N 0x4e 49 49 XK_n 0x006e KeyN AB06 n 0x69 0x2d
105 KEY_M 50 ANSI_M 0x2e 0x32 0x3a 0x3a 16 VK_M 0x4d 50 50 XK_M 0x004d KeyM AB07 m 0x6a 0x2e
106 KEY_M 50 ANSI_M 0x2e 0x32 0x3a 0x3a 16 VK_M 0x4d 50 50 XK_m 0x006d KeyM AB07 m 0x6a 0x2e
107 KEY_COMMA 51 ANSI_Comma 0x2b 0x33 0x41 0x41 54 VK_OEM_COMMA 0xbc 51 51 XK_comma 0x002c Comma AB08 comma 0x6b 0x2b
108 KEY_COMMA 51 ANSI_Comma 0x2b 0x33 0x41 0x41 54 VK_OEM_COMMA 0xbc 51 51 XK_less 0x003c Comma AB08 comma 0x6b 0x2b
109 KEY_DOT 52 ANSI_Period 0x2f 0x34 0x49 0x49 55 VK_OEM_PERIOD 0xbe 52 52 XK_period 0x002e Period AB09 dot 0x6c 0x2f
110 KEY_DOT 52 ANSI_Period 0x2f 0x34 0x49 0x49 55 VK_OEM_PERIOD 0xbe 52 52 XK_greater 0x003e Period AB09 dot 0x6c 0x2f
111 KEY_SLASH 53 ANSI_Slash 0x2c 0x35 0x4a 0x4a 56 VK_OEM_2 0xbf 53 53 XK_slash 0x002f Slash AB10 slash 0x6d 0x2c
112 KEY_SLASH 53 ANSI_Slash 0x2c 0x35 0x4a 0x4a 56 VK_OEM_2 0xbf 53 53 XK_question 0x003f Slash AB10 slash 0x6d 0x2c
113 KEY_RIGHTSHIFT 54 RightShift 0x3c 0x36 0x59 0x59 229 VK_RSHIFT 0xa1 54 54 XK_Shift_R 0xffe2 ShiftRight RTSH shift_r 0x6e 0x7b
114 KEY_KPASTERISK 55 ANSI_KeypadMultiply 0x43 0x37 0x7c 0x7e 85 VK_MULTIPLY 0x6a 55 55 XK_multiply 0x00d7 NumpadMultiply KPMU asterisk 0x2f 0x43
115 KEY_KPASTERISK 55 ANSI_KeypadMultiply 0x43 0x37 0x7c 0x7e 85 VK_MULTIPLY 0x6a 55 55 XK_multiply 0x00d7 NumpadMultiply KPMU kp_multiply 0x2f 0x43
116 KEY_LEFTALT 56 Option 0x3a 0x38 0x11 0x19 226 VK_LMENU 0xa4 56 56 XK_Alt_L 0xffe9 AltLeft LALT alt 0x13 0x3a
117 KEY_LEFTALT 56 Option 0x3a 0x38 0x11 0x19 226 VK_MENU 0x12 56 56 XK_Alt_L 0xffe9 AltLeft LALT alt 0x13 0x3a
118 KEY_SPACE 57 Space 0x31 0x39 0x29 0x29 44 VK_SPACE 0x20 57 57 XK_space 0x0020 Space SPCE spc 0x79 0x31
119 KEY_CAPSLOCK 58 CapsLock 0x39 0x3a 0x58 0x14 57 VK_CAPITAL 0x14 58 58 XK_Caps_Lock 0xffe5 CapsLock CAPS caps_lock 0x77 0x39
120 KEY_F1 59 F1 0x7a 0x3b 0x05 0x07 58 VK_F1 0x70 59 59 XK_F1 0xffbe F1 FK01 f1 0x05 0x7a
121 KEY_F2 60 F2 0x78 0x3c 0x06 0x0f 59 VK_F2 0x71 60 60 XK_F2 0xffbf F2 FK02 f2 0x06 0x78
122 KEY_F3 61 F3 0x63 0x3d 0x04 0x17 60 VK_F3 0x72 61 61 XK_F3 0xffc0 F3 FK03 f3 0x08 0x63
123 KEY_F4 62 F4 0x76 0x3e 0x0c 0x1f 61 VK_F4 0x73 62 62 XK_F4 0xffc1 F4 FK04 f4 0x0a 0x76
124 KEY_F5 63 F5 0x60 0x3f 0x03 0x27 62 VK_F5 0x74 63 63 XK_F5 0xffc2 F5 FK05 f5 0x0c 0x60
125 KEY_F6 64 F6 0x61 0x40 0x0b 0x2f 63 VK_F6 0x75 64 64 XK_F6 0xffc3 F6 FK06 f6 0x0e 0x61
126 KEY_F7 65 F7 0x62 0x41 0x83 0x37 64 VK_F7 0x76 65 65 XK_F7 0xffc4 F7 FK07 f7 0x10 0x62
127 KEY_F8 66 F8 0x64 0x42 0x0a 0x3f 65 VK_F8 0x77 66 66 XK_F8 0xffc5 F8 FK08 f8 0x11 0x64
128 KEY_F9 67 F9 0x65 0x43 0x01 0x47 66 VK_F9 0x78 67 67 XK_F9 0xffc6 F9 FK09 f9 0x12 0x65
129 KEY_F10 68 F10 0x6d 0x44 0x09 0x4f 67 VK_F10 0x79 68 68 XK_F10 0xffc7 F10 FK10 f10 0x07 0x6d
130 KEY_NUMLOCK 69 ANSI_KeypadClear 0x47 0x45 0x77 0x76 83 VK_NUMLOCK 0x90 69 69 XK_Num_Lock 0xff7f NumLock NMLK num_lock 0x62 0x47
131 KEY_SCROLLLOCK 70 0x46 0x7e 0x5f 71 VK_SCROLL 0x91 70 70 XK_Scroll_Lock 0xff14 ScrollLock SCLK scroll_lock 0x17 0x6b
132 KEY_KP7 71 ANSI_Keypad7 0x59 0x47 0x6c 0x6c 95 VK_NUMPAD7 0x67 71 71 XK_KP_7 0xffb7 Numpad7 KP7 kp_7 0x44 0x59
133 KEY_KP8 72 ANSI_Keypad8 0x5b 0x48 0x75 0x75 96 VK_NUMPAD8 0x68 72 72 XK_KP_8 0xffb8 Numpad8 KP8 kp_8 0x45 0x5b
134 KEY_KP9 73 ANSI_Keypad9 0x5c 0x49 0x7d 0x7d 97 VK_NUMPAD9 0x69 73 73 XK_KP_9 0xffb9 Numpad9 KP9 kp_9 0x46 0x5c
135 KEY_KPMINUS 74 ANSI_KeypadMinus 0x4e 0x4a 0x7b 0x4e 86 VK_SUBTRACT 0x6d 74 74 XK_KP_Subtract 0xffad NumpadSubtract KPSU kp_subtract 0x47 0x4e
136 KEY_KP4 75 ANSI_Keypad4 0x56 0x4b 0x6b 0x6b 92 VK_NUMPAD4 0x64 75 75 XK_KP_4 0xffb4 Numpad4 KP4 kp_4 0x5b 0x56
137 KEY_KP5 76 ANSI_Keypad5 0x57 0x4c 0x73 0x73 93 VK_NUMPAD5 0x65 76 76 XK_KP_5 0xffb5 Numpad5 KP5 kp_5 0x5c 0x57
138 KEY_KP6 77 ANSI_Keypad6 0x58 0x4d 0x74 0x74 94 VK_NUMPAD6 0x66 77 77 XK_KP_6 0xffb6 Numpad6 KP6 kp_6 0x5d 0x58
139 KEY_KPPLUS 78 ANSI_KeypadPlus 0x45 0x4e 0x79 0x7c 87 VK_ADD 0x6b 78 78 XK_KP_Add 0xffab NumpadAdd KPAD kp_add 0x7d 0x45
140 KEY_KP1 79 ANSI_Keypad1 0x53 0x4f 0x69 0x69 89 VK_NUMPAD1 0x61 79 79 XK_KP_1 0xffb1 Numpad1 KP1 kp_1 0x70 0x53
141 KEY_KP2 80 ANSI_Keypad2 0x54 0x50 0x72 0x72 90 VK_NUMPAD2 0x62 80 80 XK_KP_2 0xffb2 Numpad2 KP2 kp_2 0x71 0x54
142 KEY_KP3 81 ANSI_Keypad3 0x55 0x51 0x7a 0x7a 91 VK_NUMPAD3 0x63 81 81 XK_KP_3 0xffb3 Numpad3 KP3 kp_3 0x72 0x55
143 KEY_KP0 82 ANSI_Keypad0 0x52 0x52 0x70 0x70 98 VK_NUMPAD0 0x60 82 82 XK_KP_0 0xffb0 Numpad0 KP0 kp_0 0x5e 0x52
144 KEY_KPDOT 83 ANSI_KeypadDecimal 0x41 0x53 0x71 0x71 99 VK_DECIMAL 0x6e 83 83 XK_KP_Decimal 0xffae NumpadDecimal KPDL kp_decimal 0x32 0x41
145 KEY_KPDOT 83 ANSI_KeypadDecimal 0x41 0x53 0x71 0x71 99 VK_DECIMAL 0x6e 83 83 XK_KP_Decimal 0xffae NumpadDecimal KPDC kp_decimal 0x32 0x41
146 84 0x54
147 KEY_ZENKAKUHANKAKU 85 0x76 0x5f 148 Lang5 HZTG
148 KEY_102ND 86 0x56 0x61 0x13 100 VK_OEM_102 0xe2 86 86 IntlBackslash LSGT less 0x7c
149 KEY_F11 87 F11 0x67 0x57 0x78 0x56 68 VK_F11 0x7a 87 87 XK_F11 0xffc8 F11 FK11 f11 0x09 0x67
150 KEY_F12 88 F12 0x6f 0x58 0x07 0x5e 69 VK_F12 0x7b 88 88 XK_F12 0xffc9 F12 FK12 f12 0x0b 0x6f
151 KEY_RO 89 JIS_Underscore 0x5e 0x73 0x51 135 IntlRo AB11 ro
152 KEY_KATAKANA 90 0x78 0x63 146 VK_KANA 0x15 Katakana KATA
153 KEY_KATAKANA 90 0x78 0x63 146 VK_KANA 0x15 Lang3 KATA
154 KEY_HIRAGANA 91 0x77 0x62 0x87 147 Hiragana HIRA hiragana
155 KEY_HIRAGANA 91 0x77 0x62 0x87 147 Lang4 HIRA hiragana
156 KEY_HENKAN 92 0x79 0x64 0x86 138 Convert HENK henkan
157 KEY_KATAKANAHIRAGANA 93 0x70 0x13 0x87 136 0xc8 0xc8 KanaMode HKTG katakanahiragana
158 KEY_MUHENKAN 94 0x7b 0x67 0x85 139 NonConvert NFER muhenkan
159 KEY_MUHENKAN 94 0x7b 0x67 0x85 139 NonConvert MUHE muhenkan
160 KEY_KPJPCOMMA 95 JIS_KeypadComma 0x5f 0x5c 0x27 140 XK_KP_Separator 0xffac KPSP
161 KEY_KPJPCOMMA 95 JIS_KeypadComma 0x5f 0x5c 0x27 140 XK_KP_Separator 0xffac JPCM
162 KEY_KPENTER 96 ANSI_KeypadEnter 0x4c 0xe01c 0xe05a 0x79 88 0x64 0x64 XK_KP_Enter 0xff8d NumpadEnter KPEN kp_enter 0x5a 0x4c
163 KEY_RIGHTCTRL 97 RightControl 0x3e 0xe01d 0xe014 0x58 228 VK_RCONTROL 0xa3 0x65 0x65 XK_Control_R 0xffe4 ControlRight RCTL ctrl_r 0x4c 0x7d
164 KEY_KPSLASH 98 ANSI_KeypadDivide 0x4b 0xe035 0xe04a 0x4a 84 VK_DIVIDE 0x6f 0x68 0x68 XK_KP_Divide 0xffaf NumpadDivide KPDV kp_divide 0x2e 0x4b
165 KEY_SYSRQ 99 0x54 0x7f 0x57 70 VK_SNAPSHOT 0x2c 0x67 0x67 XK_Sys_Req 0xff15 PrintScreen PRSC print 0x16 0x69
166 KEY_SYSRQ 99 0x54 0x7f 0x57 70 VK_SNAPSHOT 0x2c 0x67 0x67 XK_Sys_Req 0xff15 PrintScreen SYRQ sysrq 0x16 0x69
167 KEY_RIGHTALT 100 RightOption 0x3d 0xe038 0xe011 0x39 230 VK_RMENU 0xa5 0x69 0x69 XK_Alt_R 0xffea AltRight ALGR alt_r 0x0d 0x7c
168 KEY_RIGHTALT 100 RightOption 0x3d 0xe038 0xe011 0x39 230 VK_RMENU 0xa5 0x69 0x69 XK_Alt_R 0xffea AltRight RALT alt_r 0x0d 0x7c
169 KEY_LINEFEED 101 0x5b LNFD lf 0x6f
170 KEY_HOME 102 Home 0x73 0xe047 0xe06c 0x6e 74 VK_HOME 0x24 0x59 0x59 XK_Home 0xff50 Home HOME home 0x34 0x73
171 KEY_UP 103 UpArrow 0x7e 0xe048 0xe075 0x63 82 VK_UP 0x26 0x5a 0x5a XK_Up 0xff52 ArrowUp UP up 0x14 0x3e
172 KEY_PAGEUP 104 PageUp 0x74 0xe049 0xe07d 0x6f 75 VK_PRIOR 0x21 0x5b 0x5b XK_Page_Up 0xff55 PageUp PGUP pgup 0x60 0x74
173 KEY_LEFT 105 LeftArrow 0x7b 0xe04b 0xe06b 0x61 80 VK_LEFT 0x25 0x5c 0x5c XK_Left 0xff51 ArrowLeft LEFT left 0x18 0x3b
174 KEY_RIGHT 106 RightArrow 0x7c 0xe04d 0xe074 0x6a 79 VK_RIGHT 0x27 0x5e 0x5e XK_Right 0xff53 ArrowRight RGHT right 0x1c 0x3c
175 KEY_END 107 End 0x77 0xe04f 0xe069 0x65 77 VK_END 0x23 0x5f 0x5f XK_End 0xff57 End END end 0x4a 0x77
176 KEY_DOWN 108 DownArrow 0x7d 0xe050 0xe072 0x60 81 VK_DOWN 0x28 0x60 0x60 XK_Down 0xff54 ArrowDown DOWN down 0x1b 0x3d
177 KEY_PAGEDOWN 109 PageDown 0x79 0xe051 0xe07a 0x6d 78 VK_NEXT 0x22 0x61 0x61 XK_Page_Down 0xff56 PageDown PGDN pgdn 0x7b 0x79
178 KEY_INSERT 110 0xe052 0xe070 0x67 73 VK_INSERT 0x2d 0x62 0x62 XK_Insert 0xff63 Insert INS insert 0x2c 0x72
179 KEY_DELETE 111 ForwardDelete 0x75 0xe053 0xe071 0x64 76 VK_DELETE 0x2e 0x63 0x63 XK_Delete 0xffff Delete DEL delete 0x42 0x75
180 KEY_DELETE 111 ForwardDelete 0x75 0xe053 0xe071 0x64 76 VK_DELETE 0x2e 0x63 0x63 XK_Delete 0xffff Delete DELE 0x42 0x75
181 KEY_MACRO 112 0xe06f 0xe06f 0x8e I120
182 KEY_MUTE 113 Mute 0x4a 0xe020 0xe023 0x9c 127 VK_VOLUME_MUTE 0xad AudioVolumeMute MUTE audiomute
183 KEY_MUTE 113 Mute 0x4a 0xe020 0xe023 0x9c 239 VK_VOLUME_MUTE 0xad AudioVolumeMute MUTE audiomute
184 KEY_VOLUMEDOWN 114 VolumeDown 0x49 0xe02e 0xe021 0x9d 129 VK_VOLUME_DOWN 0xae AudioVolumeDown VOL- volumedown
185 KEY_VOLUMEDOWN 114 VolumeDown 0x49 0xe02e 0xe021 0x9d 238 VK_VOLUME_DOWN 0xae AudioVolumeDown VOL- volumedown
186 KEY_VOLUMEUP 115 VolumeUp 0x48 0xe030 0xe032 0x95 128 VK_VOLUME_UP 0xaf AudioVolumeUp VOL+ volumeup
187 KEY_VOLUMEUP 115 VolumeUp 0x48 0xe030 0xe032 0x95 237 VK_VOLUME_UP 0xaf AudioVolumeUp VOL+ volumeup
188 KEY_POWER 116 0xe05e 0xe037 102 Power POWR power 0x7f7f
189 KEY_KPEQUAL 117 ANSI_KeypadEquals 0x51 0x59 0x0f 103 0x76 0x76 XK_KP_Equal 0xffbd NumpadEqual KPEQ kp_equals 0x2d 0x51
190 KEY_KPPLUSMINUS 118 0xe04e 0xe079 I126
191 KEY_PAUSE 119 0xe046 0xe077 0x62 72 VK_PAUSE 0x013 0x66 0x66 XK_Pause 0xff13 Pause PAUS pause 0x15 0x71
192 KEY_SCALE 120 0xe00b I128
193 KEY_KPCOMMA 121 0x7e 0x6d 133 VK_SEPARATOR?? 0x6c NumpadComma KPCO kp_comma
194 KEY_KPCOMMA 121 0x7e 0x6d 133 VK_SEPARATOR?? 0x6c NumpadComma I129
195 KEY_HANGEUL 122 JIS_Kana 0x68 0x72 144 VK_HANGEUL 0x15 0x71 Lang1 HNGL
196 KEY_HANJA 123 JIS_Eisu 0x66 0x71 145 VK_HANJA 0x19 0x72 Lang2 HJCV
197 KEY_YEN 124 JIS_Yen 0x5d 0x7d 0x6a 0x5d 137 0x7d 0x7d IntlYen AE13 yen
198 KEY_LEFTMETA 125 Command 0x37 0xe05b 0xe01f 0x8b 227 VK_LWIN 0x5b 0x6b 0x6b XK_Meta_L 0xffe7 MetaLeft LMTA meta_l 0x78 0x37
199 KEY_LEFTMETA 125 Command 0x37 0xe05b 0xe01f 0x8b 227 VK_LWIN 0x5b 0x6b 0x6b XK_Meta_L 0xffe7 MetaLeft LWIN meta_l 0x78 0x37
200 KEY_RIGHTMETA 126 RightCommand 0x36 0xe05c 0xe027 0x8c 231 VK_RWIN 0x5c 0x6c 0x6c XK_Meta_R 0xffe8 MetaRight RMTA meta_r 0x7a 0x37
201 KEY_RIGHTMETA 126 RightCommand 0x36 0xe05c 0xe027 0x8c 231 VK_RWIN 0x5c 0x6c 0x6c XK_Meta_R 0xffe8 MetaRight RWIN meta_r 0x7a 0x37
202 KEY_COMPOSE 127 0x6e 0xe05d 0xe02f 0x8d 101 VK_APPS 0x5d 0x6d 0x6d ContextMenu MENU compose 0x43
203 KEY_COMPOSE 127 0x6e 0xe05d 0xe02f 0x8d 101 VK_APPS 0x5d 0x6d 0x6d ContextMenu COMP compose 0x43
204 KEY_STOP 128 0xe068 0xe028 0x0a 120 VK_BROWSER_STOP 0xa9 BrowserStop STOP stop 0x01
205 KEY_STOP 128 0xe068 0xe028 0x0a 243 VK_BROWSER_STOP 0xa9 BrowserStop STOP stop 0x01
206 KEY_AGAIN 129 0xe005 0x0b 121 Again AGAI again 0x03
207 KEY_PROPS 130 0xe006 0x0c Props PROP props 0x19
208 KEY_UNDO 131 0xe007 0x10 122 Undo UNDO undo 0x1a
209 KEY_FRONT 132 0xe00c 119 FRNT front 0x31
210 KEY_COPY 133 0xe078 0x18 124 Copy COPY copy 0x33
211 KEY_OPEN 134 0x64 0x20 116 Open OPEN open 0x48
212 KEY_PASTE 135 0x65 0x28 125 Paste PAST paste 0x49
213 KEY_FIND 136 0xe041 0x30 126 Find FIND find 0x5f
214 KEY_FIND 136 0xe041 0x30 244 Find FIND find 0x5f
215 KEY_CUT 137 0xe03c 0x38 123 Cut CUT cut 0x61
216 KEY_HELP 138 Help 0x72 0xe075 0x09 117 VK_HELP 0x2f XK_Help 0xff6a Help HELP help 0x76
217 KEY_MENU 139 0xe01e 0x91 118 I147 menu
218 KEY_CALC 140 0xe021 0xe02b 0xa3 251 LaunchApp2 I148 calculator
219 KEY_SETUP 141 0x66 I149
220 KEY_SLEEP 142 0xe05f 0xe03f 248 VK_SLEEP 0x5f Sleep I150 sleep
221 KEY_WAKEUP 143 0xe063 0xe05e WakeUp I151 wake
222 KEY_FILE 144 0x67 I152
223 KEY_SENDFILE 145 0x68 I153
224 KEY_DELETEFILE 146 0x69 I154
225 KEY_XFER 147 0xe013 0xa2 XFER
226 KEY_XFER 147 0xe013 0xa2 I155
227 KEY_PROG1 148 0xe01f 0xa0 I156
228 KEY_PROG2 149 0xe017 0xa1 I157
229 KEY_WWW 150 0xe002 240 I158
230 KEY_MSDOS 151 0x6a I159
231 KEY_SCREENLOCK 152 0xe012 0x96 249 I160
232 KEY_DIRECTION 153 0x6b I161
233 KEY_CYCLEWINDOWS 154 0xe026 0x9b I162
234 KEY_MAIL 155 0xe06c 0xe048 LaunchMail I163 mail
235 KEY_BOOKMARKS 156 0xe066 0xe018 BrowserFavorites I164 ac_bookmarks
236 KEY_COMPUTER 157 0xe06b 0xe040 LaunchApp1 I165 computer
237 KEY_BACK 158 0xe06a 0xe038 241 VK_BROWSER_BACK 0xa6 BrowserBack I166 ac_back
238 KEY_FORWARD 159 0xe069 0xe030 242 VK_BROWSER_FORWARD 0xa7 BrowserForward I167 ac_forward
239 KEY_CLOSECD 160 0xe023 0x9a I168
240 KEY_EJECTCD 161 0x6c 236 I169
241 KEY_EJECTCLOSECD 162 0xe07d Eject I170
242 KEY_NEXTSONG 163 0xe019 0xe04d 0x93 235 VK_MEDIA_NEXT_TRACK 0xb0 MediaTrackNext I171 audionext
243 KEY_PLAYPAUSE 164 0xe022 0xe034 232 VK_MEDIA_PLAY_PAUSE 0xb3 MediaPlayPause I172 audioplay
244 KEY_PREVIOUSSONG 165 0xe010 0xe015 0x94 234 VK_MEDIA_PREV_TRACK 0xb1 MediaTrackPrevious I173 audioprev
245 KEY_STOPCD 166 0xe024 0xe03b 0x98 233 VK_MEDIA_STOP 0xb2 MediaStop I174 audiostop
246 KEY_RECORD 167 0xe031 0x9e I175
247 KEY_REWIND 168 0xe018 0x9f I176
248 KEY_PHONE 169 0x63 I177
249 KEY_ISO 170 ISO_Section 0xa I178
250 KEY_CONFIG 171 0xe001 I179
251 KEY_HOMEPAGE 172 0xe032 0xe03a 0x97 VK_BROWSER_HOME 0xac BrowserHome I180 ac_home
252 KEY_REFRESH 173 0xe067 0xe020 250 VK_BROWSER_REFRESH 0xa8 BrowserRefresh I181 ac_refresh
253 KEY_EXIT 174 I182
254 KEY_MOVE 175 I183
255 KEY_EDIT 176 0xe008 247 I184
256 KEY_SCROLLUP 177 0x75 245 I185
257 KEY_SCROLLDOWN 178 0xe00f 246 I186
258 KEY_KPLEFTPAREN 179 0xe076 182 NumpadParenLeft I187
259 KEY_KPRIGHTPAREN 180 0xe07b 183 NumpadParenRight I188
260 KEY_NEW 181 0xe009 I189
261 KEY_REDO 182 0xe00a I190
262 KEY_F13 183 F13 0x69 0x5d 0x2f 0x7f 104 VK_F13 0x7c 0x6e 0x6e F13 FK13 0x69
263 KEY_F14 184 F14 0x6b 0x5e 0x37 0x80 105 VK_F14 0x7d 0x6f 0x6f F14 FK14 0x6b
264 KEY_F15 185 F15 0x71 0x5f 0x3f 0x81 106 VK_F15 0x7e 0x70 0x70 F15 FK15 0x71
265 KEY_F16 186 F16 0x6a 0x55 0x82 107 VK_F16 0x7f 0x71 0x71 F16 FK16
266 KEY_F17 187 F17 0x40 0xe003 0x83 108 VK_F17 0x80 0x72 0x72 F17 FK17
267 KEY_F18 188 F18 0x4f 0xe077 109 VK_F18 0x81 F18 FK18
268 KEY_F19 189 F19 0x50 0xe004 110 VK_F19 0x82 F19 FK19
269 KEY_F20 190 F20 0x5a 0x5a 111 VK_F20 0x83 F20 FK20
270 KEY_F21 191 0x74 112 VK_F21 0x84 F21 FK21
271 KEY_F22 192 0xe079 113 VK_F22 0x85 F22 FK22
272 KEY_F23 193 0x6d 114 VK_F23 0x86 F23 FK23
273 KEY_F24 194 0x6f 115 VK_F24 0x87 F24 FK24
274 195 0xe015
275 196 0xe016
276 197 0xe01a
277 198 0xe01b
278 199 0xe027
279 KEY_PLAYCD 200 0xe028 I208
280 KEY_PAUSECD 201 0xe029 I209
281 KEY_PROG3 202 0xe02b I210
282 KEY_PROG4 203 0xe02c I211
283 KEY_DASHBOARD 204 0xe02d I212
284 KEY_SUSPEND 205 0xe025 Suspend I213
285 KEY_CLOSE 206 0xe02f I214
286 KEY_PLAY 207 0xe033 VK_PLAY 0xfa I215
287 KEY_FASTFORWARD 208 0xe034 I216
288 KEY_BASSBOOST 209 0xe036 I217
289 KEY_PRINT 210 0xe039 VK_PRINT 0x2a I218
290 KEY_HP 211 0xe03a I219
291 KEY_CAMERA 212 0xe03b I220
292 KEY_SOUND 213 0xe03d I221
293 KEY_QUESTION 214 0xe03e I222
294 KEY_EMAIL 215 0xe03f VK_LAUNCH_MAIL 0xb4 I223
295 KEY_CHAT 216 0xe040 I224
296 KEY_SEARCH 217 0xe065 0xe010 VK_BROWSER_SEARCH 0xaa BrowserSearch I225
297 KEY_CONNECT 218 0xe042 I226
298 KEY_FINANCE 219 0xe043 I227
299 KEY_SPORT 220 0xe044 I228
300 KEY_SHOP 221 0xe045 I229
301 KEY_ALTERASE 222 0xe014 I230
302 KEY_CANCEL 223 0xe04a I231
303 KEY_BRIGHTNESSDOWN 224 0xe04c I232
304 KEY_BRIGHTNESSUP 225 0xe054 I233
305 KEY_MEDIA 226 0xe06d 0xe050 MediaSelect I234 mediaselect
306 KEY_SWITCHVIDEOMODE 227 0xe056 I235
307 KEY_KBDILLUMTOGGLE 228 0xe057 I236
308 KEY_KBDILLUMDOWN 229 0xe058 I237
309 KEY_KBDILLUMUP 230 0xe059 I238
310 KEY_SEND 231 0xe05a I239
311 KEY_REPLY 232 0xe064 I240
312 KEY_FORWARDMAIL 233 0xe00e I241
313 KEY_SAVE 234 0xe055 I242
314 KEY_DOCUMENTS 235 0xe070 I243
315 KEY_BATTERY 236 0xe071 I244
316 KEY_BLUETOOTH 237 0xe072 I245
317 KEY_WLAN 238 0xe073 I246
318 KEY_UWB 239 0xe074 I247
319 KEY_UNKNOWN 240 I248
320 KEY_VIDEO_NEXT 241 I249
321 KEY_VIDEO_PREV 242 I250
322 KEY_BRIGHTNESS_CYCLE 243 I251
323 KEY_BRIGHTNESS_ZERO 244 I252
324 KEY_DISPLAY_OFF 245 I253
325 KEY_WIMAX 246
326 247
327 248
328 249
329 250
330 251
331 252
332 253
333 254
334 255 0xe012
335 BTN_MISC 0x100
336 BTN_0 0x100 VK_LBUTTON 0x01
337 BTN_1 0x101 VK_RBUTTON 0x02
338 BTN_2 0x102 VK_MBUTTON 0x04
339 BTN_3 0x103 VK_XBUTTON1 0x05
340 BTN_4 0x104 VK_XBUTTON2 0x06
341 BTN_5 0x105
342 BTN_6 0x106
343 BTN_7 0x107
344 BTN_8 0x108
345 BTN_9 0x109
346 BTN_MOUSE 0x110
347 BTN_LEFT 0x110
348 BTN_RIGHT 0x111
349 BTN_MIDDLE 0x112
350 BTN_SIDE 0x113
351 BTN_EXTRA 0x114
352 BTN_FORWARD 0x115
353 BTN_BACK 0x116
354 BTN_TASK 0x117
355 BTN_JOYSTICK 0x120
356 BTN_TRIGGER 0x120
357 BTN_THUMB 0x121
358 BTN_THUMB2 0x122
359 BTN_TOP 0x123
360 BTN_TOP2 0x124
361 BTN_PINKIE 0x125
362 BTN_BASE 0x126
363 BTN_BASE2 0x127
364 BTN_BASE3 0x128
365 BTN_BASE4 0x129
366 BTN_BASE5 0x12a
367 BTN_BASE6 0x12b
368 BTN_DEAD 0x12f
369 BTN_GAMEPAD 0x130
370 BTN_A 0x130
371 BTN_B 0x131
372 BTN_C 0x132
373 BTN_X 0x133
374 BTN_Y 0x134
375 BTN_Z 0x135
376 BTN_TL 0x136
377 BTN_TR 0x137
378 BTN_TL2 0x138
379 BTN_TR2 0x139
380 BTN_SELECT 0x13a
381 BTN_START 0x13b
382 BTN_MODE 0x13c
383 BTN_THUMBL 0x13d
384 BTN_THUMBR 0x13e
385 BTN_DIGI 0x140
386 BTN_TOOL_PEN 0x140
387 BTN_TOOL_RUBBER 0x141
388 BTN_TOOL_BRUSH 0x142
389 BTN_TOOL_PENCIL 0x143
390 BTN_TOOL_AIRBRUSH 0x144
391 BTN_TOOL_FINGER 0x145
392 BTN_TOOL_MOUSE 0x146
393 BTN_TOOL_LENS 0x147
394 BTN_TOUCH 0x14a
395 BTN_STYLUS 0x14b
396 BTN_STYLUS2 0x14c
397 BTN_TOOL_DOUBLETAP 0x14d
398 BTN_TOOL_TRIPLETAP 0x14e
399 BTN_TOOL_QUADTAP 0x14f
400 BTN_WHEEL 0x150
401 BTN_GEAR_DOWN 0x150
402 BTN_GEAR_UP 0x151
403 KEY_OK 0x160
404 KEY_SELECT 0x161 VK_SELECT 0x29 XK_Select 0xff60 Select SELE
405 KEY_GOTO 0x162
406 KEY_CLEAR 0x163 NumpadClear CLR
407 KEY_POWER2 0x164
408 KEY_OPTION 0x165
409 KEY_INFO 0x166
410 KEY_TIME 0x167
411 KEY_VENDOR 0x168
412 KEY_ARCHIVE 0x169
413 KEY_PROGRAM 0x16a
414 KEY_CHANNEL 0x16b
415 KEY_FAVORITES 0x16c VK_BROWSER_FAVOURITES 0xab
416 KEY_EPG 0x16d
417 KEY_PVR 0x16e
418 KEY_MHP 0x16f
419 KEY_LANGUAGE 0x170
420 KEY_TITLE 0x171
421 KEY_SUBTITLE 0x172
422 KEY_ANGLE 0x173
423 KEY_ZOOM 0x174 VK_ZOOM 0xfb
424 KEY_MODE 0x175
425 KEY_KEYBOARD 0x176
426 KEY_SCREEN 0x177
427 KEY_PC 0x178
428 KEY_TV 0x179
429 KEY_TV2 0x17a
430 KEY_VCR 0x17b
431 KEY_VCR2 0x17c
432 KEY_SAT 0x17d
433 KEY_SAT2 0x17e
434 KEY_CD 0x17f
435 KEY_TAPE 0x180
436 KEY_RADIO 0x181
437 KEY_TUNER 0x182
438 KEY_PLAYER 0x183
439 KEY_TEXT 0x184
440 KEY_DVD 0x185
441 KEY_AUX 0x186
442 KEY_MP3 0x187
443 KEY_AUDIO 0x188
444 KEY_VIDEO 0x189
445 KEY_DIRECTORY 0x18a
446 KEY_LIST 0x18b
447 KEY_MEMO 0x18c
448 KEY_CALENDAR 0x18d
449 KEY_RED 0x18e
450 KEY_GREEN 0x18f
451 KEY_YELLOW 0x190
452 KEY_BLUE 0x191
453 KEY_CHANNELUP 0x192
454 KEY_CHANNELDOWN 0x193
455 KEY_FIRST 0x194
456 KEY_LAST 0x195
457 KEY_AB 0x196
458 KEY_NEXT 0x197
459 KEY_RESTART 0x198
460 KEY_SLOW 0x199
461 KEY_SHUFFLE 0x19a
462 KEY_BREAK 0x19b BREA
463 KEY_BREAK 0x19b BRK
464 KEY_PREVIOUS 0x19c
465 KEY_DIGITS 0x19d
466 KEY_TEEN 0x19e
467 KEY_TWEN 0x19f
468 KEY_VIDEOPHONE 0x1a0
469 KEY_GAMES 0x1a1
470 KEY_ZOOMIN 0x1a2
471 KEY_ZOOMOUT 0x1a3
472 KEY_ZOOMRESET 0x1a4
473 KEY_WORDPROCESSOR 0x1a5
474 KEY_EDITOR 0x1a6
475 KEY_SPREADSHEET 0x1a7
476 KEY_GRAPHICSEDITOR 0x1a8
477 KEY_PRESENTATION 0x1a9
478 KEY_DATABASE 0x1aa
479 KEY_NEWS 0x1ab
480 KEY_VOICEMAIL 0x1ac
481 KEY_ADDRESSBOOK 0x1ad
482 KEY_MESSENGER 0x1ae
483 KEY_DISPLAYTOGGLE 0x1af
484 KEY_SPELLCHECK 0x1b0
485 KEY_LOGOFF 0x1b1
486 KEY_DOLLAR 0x1b2
487 KEY_EURO 0x1b3
488 KEY_FRAMEBACK 0x1b4
489 KEY_FRAMEFORWARD 0x1b5
490 KEY_CONTEXT_MENU 0x1b6
491 KEY_MEDIA_REPEAT 0x1b7
492 KEY_DEL_EOL 0x1c0
493 KEY_DEL_EOS 0x1c1
494 KEY_INS_LINE 0x1c2
495 KEY_DEL_LINE 0x1c3
496 KEY_FN 0x1d0 Function 0x3f Fn
497 KEY_FN_ESC 0x1d1
498 KEY_FN_F1 0x1d2
499 KEY_FN_F2 0x1d3
500 KEY_FN_F3 0x1d4
501 KEY_FN_F4 0x1d5
502 KEY_FN_F5 0x1d6
503 KEY_FN_F6 0x1d7
504 KEY_FN_F7 0x1d8
505 KEY_FN_F8 0x1d9
506 KEY_FN_F9 0x1da
507 KEY_FN_F10 0x1db
508 KEY_FN_F11 0x1dc
509 KEY_FN_F12 0x1dd
510 KEY_FN_1 0x1de
511 KEY_FN_2 0x1df
512 KEY_FN_D 0x1e0
513 KEY_FN_E 0x1e1
514 KEY_FN_F 0x1e2
515 KEY_FN_S 0x1e3
516 KEY_FN_B 0x1e4
517 KEY_BRL_DOT1 0x1f1
518 KEY_BRL_DOT2 0x1f2
519 KEY_BRL_DOT3 0x1f3
520 KEY_BRL_DOT4 0x1f4
521 KEY_BRL_DOT5 0x1f5
522 KEY_BRL_DOT6 0x1f6
523 KEY_BRL_DOT7 0x1f7
524 KEY_BRL_DOT8 0x1f8
525 KEY_BRL_DOT9 0x1f9
526 KEY_BRL_DOT10 0x1fa
527 KEY_NUMERIC_0 0x200
528 KEY_NUMERIC_1 0x201
529 KEY_NUMERIC_2 0x202
530 KEY_NUMERIC_3 0x203
531 KEY_NUMERIC_4 0x204
532 KEY_NUMERIC_5 0x205
533 KEY_NUMERIC_6 0x206
534 KEY_NUMERIC_7 0x207
535 KEY_NUMERIC_8 0x208
536 KEY_NUMERIC_9 0x209
537 KEY_NUMERIC_STAR 0x20a NumpadStar
538 KEY_NUMERIC_POUND 0x20b NumpadHash
539 KEY_RFKILL 0x20c

View File

@ -1 +0,0 @@
project('keycodemapdb')

View File

@ -1,11 +0,0 @@
osx2win32.*
osx2win32_name.*
osx2xkb.*
osx2xkb_name.*
html2win32.*
html2win32_name.*
osx.*
osx_name.*
stdc
stdc++
node_modules/

View File

@ -1,150 +0,0 @@
TESTS := stdc stdc++ python2 python3 javascript
check: $(TESTS)
@set -e; for fn in $(TESTS); do \
./$$fn; \
echo $$fn: OK; \
done
@echo Done.
GEN := ../tools/keymap-gen
DATA := ../data/keymaps.csv
SOURCES := $(GEN) $(DATA)
.DELETE_ON_ERROR:
stdc: stdc.c osx2win32.h osx2win32.c osx2win32_name.h osx2win32_name.c \
osx2xkb.h osx2xkb.c osx2xkb_name.h osx2xkb_name.c \
html2win32.h html2win32.c html2win32_name.h html2win32_name.c \
osx.h osx.c osx_name.h osx_name.c
$(CC) -Wall -o $@ $(filter %.c, $^)
osx2win32.c: $(SOURCES)
$(GEN) --lang stdc code-map $(DATA) osx win32 > $@
osx2win32.h: $(SOURCES)
$(GEN) --lang stdc-header code-map $(DATA) osx win32 > $@
osx2win32_name.c: $(SOURCES)
$(GEN) --lang stdc name-map $(DATA) osx win32 > $@
osx2win32_name.h: $(SOURCES)
$(GEN) --lang stdc-header name-map $(DATA) osx win32 > $@
osx2xkb.c: $(SOURCES)
$(GEN) --lang stdc code-map $(DATA) osx xkb > $@
osx2xkb.h: $(SOURCES)
$(GEN) --lang stdc-header code-map $(DATA) osx xkb > $@
osx2xkb_name.c: $(SOURCES)
$(GEN) --lang stdc name-map $(DATA) osx xkb > $@
osx2xkb_name.h: $(SOURCES)
$(GEN) --lang stdc-header name-map $(DATA) osx xkb > $@
html2win32.c: $(SOURCES)
$(GEN) --lang stdc code-map $(DATA) html win32 > $@
html2win32.h: $(SOURCES)
$(GEN) --lang stdc-header code-map $(DATA) html win32 > $@
html2win32_name.c: $(SOURCES)
$(GEN) --lang stdc name-map $(DATA) html win32 > $@
html2win32_name.h: $(SOURCES)
$(GEN) --lang stdc-header name-map $(DATA) html win32 > $@
osx.c: $(SOURCES)
$(GEN) --lang stdc code-table $(DATA) osx > $@
osx.h: $(SOURCES)
$(GEN) --lang stdc-header code-table $(DATA) osx > $@
osx_name.c: $(SOURCES)
$(GEN) --lang stdc name-table $(DATA) osx > $@
osx_name.h: $(SOURCES)
$(GEN) --lang stdc-header name-table $(DATA) osx > $@
stdc++: stdc++.cc osx2win32.hh osx2win32.cc osx2win32_name.hh osx2win32_name.cc \
osx2xkb.hh osx2xkb.cc osx2xkb_name.hh osx2xkb_name.cc \
html2win32.hh html2win32.cc html2win32_name.hh html2win32_name.cc \
osx.hh osx.cc osx_name.hh osx_name.cc
$(CXX) -Wall -std=c++11 -o $@ $(filter %.cc, $^)
osx2win32.cc: $(SOURCES)
$(GEN) --lang stdc++ code-map $(DATA) osx win32 > $@
osx2win32.hh: $(SOURCES)
$(GEN) --lang stdc++-header code-map $(DATA) osx win32 > $@
osx2win32_name.cc: $(SOURCES)
$(GEN) --lang stdc++ name-map $(DATA) osx win32 > $@
osx2win32_name.hh: $(SOURCES)
$(GEN) --lang stdc++-header name-map $(DATA) osx win32 > $@
osx2xkb.cc: $(SOURCES)
$(GEN) --lang stdc++ code-map $(DATA) osx xkb > $@
osx2xkb.hh: $(SOURCES)
$(GEN) --lang stdc++-header code-map $(DATA) osx xkb > $@
osx2xkb_name.cc: $(SOURCES)
$(GEN) --lang stdc++ name-map $(DATA) osx xkb > $@
osx2xkb_name.hh: $(SOURCES)
$(GEN) --lang stdc++-header name-map $(DATA) osx xkb > $@
html2win32.cc: $(SOURCES)
$(GEN) --lang stdc++ code-map $(DATA) html win32 > $@
html2win32.hh: $(SOURCES)
$(GEN) --lang stdc++-header code-map $(DATA) html win32 > $@
html2win32_name.cc: $(SOURCES)
$(GEN) --lang stdc++ name-map $(DATA) html win32 > $@
html2win32_name.hh: $(SOURCES)
$(GEN) --lang stdc++-header name-map $(DATA) html win32 > $@
osx.cc: $(SOURCES)
$(GEN) --lang stdc++ code-table $(DATA) osx > $@
osx.hh: $(SOURCES)
$(GEN) --lang stdc++-header code-table $(DATA) osx > $@
osx_name.cc: $(SOURCES)
$(GEN) --lang stdc++ name-table $(DATA) osx > $@
osx_name.hh: $(SOURCES)
$(GEN) --lang stdc++-header name-table $(DATA) osx > $@
python2: osx2win32.py osx2win32_name.py \
osx2xkb.py osx2xkb_name.py \
html2win32.py html2win32_name.py \
osx.py osx_name.py
osx2win32.py: $(SOURCES)
$(GEN) --lang python2 code-map $(DATA) osx win32 > $@
osx2win32_name.py: $(SOURCES)
$(GEN) --lang python2 name-map $(DATA) osx win32 > $@
osx2xkb.py: $(SOURCES)
$(GEN) --lang python2 code-map $(DATA) osx xkb > $@
osx2xkb_name.py: $(SOURCES)
$(GEN) --lang python2 name-map $(DATA) osx xkb > $@
html2win32.py: $(SOURCES)
$(GEN) --lang python2 code-map $(DATA) html win32 > $@
html2win32_name.py: $(SOURCES)
$(GEN) --lang python2 name-map $(DATA) html win32 > $@
osx.py: $(SOURCES)
$(GEN) --lang python2 code-table $(DATA) osx > $@
osx_name.py: $(SOURCES)
$(GEN) --lang python2 name-table $(DATA) osx > $@
javascript: node_modules/babel-core \
node_modules/babel-plugin-transform-es2015-modules-commonjs \
osx2win32.js osx2win32_name.js \
osx2xkb.js osx2xkb_name.js \
html2win32.js html2win32_name.js \
osx.js osx_name.js
node_modules/babel-core:
npm install babel-core
node_modules/babel-plugin-transform-es2015-modules-commonjs:
npm install babel-plugin-transform-es2015-modules-commonjs
osx2win32.js: $(SOURCES)
$(GEN) --lang js code-map $(DATA) osx win32 > $@
osx2win32_name.js: $(SOURCES)
$(GEN) --lang js name-map $(DATA) osx win32 > $@
osx2xkb.js: $(SOURCES)
$(GEN) --lang js code-map $(DATA) osx xkb > $@
osx2xkb_name.js: $(SOURCES)
$(GEN) --lang js name-map $(DATA) osx xkb > $@
html2win32.js: $(SOURCES)
$(GEN) --lang js code-map $(DATA) html win32 > $@
html2win32_name.js: $(SOURCES)
$(GEN) --lang js name-map $(DATA) html win32 > $@
osx.js: $(SOURCES)
$(GEN) --lang js code-table $(DATA) osx > $@
osx_name.js: $(SOURCES)
$(GEN) --lang js name-table $(DATA) osx > $@
clean:
rm -rf node_modules
rm -f osx2win32.*
rm -f osx2win32_name.*
rm -f osx2xkb.*
rm -f osx2xkb_name.*
rm -f html2win32.*
rm -f html2win32_name.*
rm -f osx.*
rm -f osx_name.*
rm -f stdc stdc++

View File

@ -1,53 +0,0 @@
#!/usr/bin/env node
/*
* Keycode Map Generator JavaScript Tests
*
* Copyright 2017 Pierre Ossman for Cendio AB
*
* This file is dual license under the terms of the GPLv2 or later
* and 3-clause BSD licenses.
*/
"use strict";
var assert = require('assert');
var babel = require('babel-core');
var fs = require('fs');
function include(fn) {
var options = {
plugins: ["transform-es2015-modules-commonjs"]
};
var code = babel.transformFileSync(fn, options).code;
fs.writeFileSync("." + fn + "_nodejs.js", code);
var imp = require("./." + fn + "_nodejs.js");
fs.unlinkSync("./." + fn + "_nodejs.js");
return imp
}
var code_map_osx_to_win32 = include("osx2win32.js").default;
var name_map_osx_to_win32 = include("osx2win32_name.js").default;
var code_map_osx_to_xkb = include("osx2xkb.js").default;
var name_map_osx_to_xkb = include("osx2xkb_name.js").default;
var code_map_html_to_win32 = include("html2win32.js").default;
var name_map_html_to_win32 = include("html2win32_name.js").default;
var code_table_osx = include("osx.js").default;
var name_table_osx = include("osx_name.js").default;
assert.equal(code_map_osx_to_win32[0x1d], 0x30);
assert.equal(name_map_osx_to_win32[0x1d], "VK_0");
assert.equal(code_map_osx_to_xkb[0x1d], "AE10");
assert.equal(name_map_osx_to_xkb[0x1d], "AE10");
assert.equal(code_map_html_to_win32["ControlLeft"], 0x11);
assert.equal(name_map_html_to_win32["ControlLeft"], "VK_CONTROL");
assert.equal(code_table_osx[0x1d], 0x3b);
assert.equal(name_table_osx[0x1d], "Control");

View File

@ -1,3 +0,0 @@
#!/bin/sh
python ./test.py

View File

@ -1,3 +0,0 @@
#!/bin/sh
python3 ./test.py

View File

@ -1,40 +0,0 @@
/*
* Keycode Map Generator C++ Tests
*
* Copyright 2017 Pierre Ossman for Cendio AB
*
* This file is dual license under the terms of the GPLv2 or later
* and 3-clause BSD licenses.
*/
#include <assert.h>
#include <string.h>
#include "osx2win32.hh"
#include "osx2win32_name.hh"
#include "osx2xkb.hh"
#include "osx2xkb_name.hh"
#include "html2win32.hh"
#include "html2win32_name.hh"
#include "osx.hh"
#include "osx_name.hh"
int main(int argc, char** argv)
{
assert(code_map_osx_to_win32[0x1d] == 0x30);
assert(strcmp(name_map_osx_to_win32[0x1d], "VK_0") == 0);
assert(strcmp(code_map_osx_to_xkb[0x1d], "AE10") == 0);
assert(strcmp(name_map_osx_to_xkb[0x1d], "AE10") == 0);
assert(code_map_html_to_win32.at("ControlLeft") == 0x11);
assert(strcmp(name_map_html_to_win32.at("ControlLeft"), "VK_CONTROL") == 0);
assert(code_table_osx[0x1d] == 0x3b);
assert(strcmp(name_table_osx[0x1d], "Control") == 0);
return 0;
}

View File

@ -1,64 +0,0 @@
/*
* Keycode Map Generator C Tests
*
* Copyright 2017 Pierre Ossman for Cendio AB
*
* This file is dual license under the terms of the GPLv2 or later
* and 3-clause BSD licenses.
*/
#include <assert.h>
#include <string.h>
#include "osx2win32.h"
#include "osx2win32_name.h"
#include "osx2xkb.h"
#include "osx2xkb_name.h"
#include "html2win32.h"
#include "html2win32_name.h"
#include "osx.h"
#include "osx_name.h"
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0]))
int main(int argc, char** argv)
{
unsigned i;
assert(code_map_osx_to_win32_len == ARRAY_SIZE(code_map_osx_to_win32));
assert(code_map_osx_to_win32[0x1d] == 0x30);
assert(name_map_osx_to_win32_len == ARRAY_SIZE(name_map_osx_to_win32));
assert(strcmp(name_map_osx_to_win32[0x1d], "VK_0") == 0);
assert(code_map_osx_to_xkb_len == ARRAY_SIZE(code_map_osx_to_xkb));
assert(strcmp(code_map_osx_to_xkb[0x1d], "AE10") == 0);
assert(name_map_osx_to_xkb_len == ARRAY_SIZE(name_map_osx_to_xkb));
assert(strcmp(name_map_osx_to_xkb[0x1d], "AE10") == 0);
assert(code_map_html_to_win32_len == ARRAY_SIZE(code_map_html_to_win32));
for (i = 0;i < code_map_html_to_win32_len;i++) {
if (strcmp(code_map_html_to_win32[i].from, "ControlLeft") == 0) {
assert(code_map_html_to_win32[i].to == 0x11);
break;
}
}
assert(i != code_map_html_to_win32_len);
assert(name_map_html_to_win32_len == ARRAY_SIZE(name_map_html_to_win32));
for (i = 0;i < name_map_html_to_win32_len;i++) {
if (strcmp(name_map_html_to_win32[i].from, "ControlLeft") == 0) {
assert(strcmp(name_map_html_to_win32[i].to, "VK_CONTROL") == 0);
break;
}
}
assert(i != name_map_html_to_win32_len);
assert(code_table_osx_len == ARRAY_SIZE(code_table_osx));
assert(code_table_osx[0x1d] == 0x3b);
assert(name_table_osx_len == ARRAY_SIZE(name_table_osx));
assert(strcmp(name_table_osx[0x1d], "Control") == 0);
return 0;
}

View File

@ -1,30 +0,0 @@
# Keycode Map Generator Python Tests
#
# Copyright 2017 Pierre Ossman for Cendio AB
#
# This file is dual license under the terms of the GPLv2 or later
# and 3-clause BSD licenses.
import osx2win32
import osx2win32_name
import osx2xkb
import osx2xkb_name
import html2win32
import html2win32_name
import osx
import osx_name
assert osx2win32.code_map_osx_to_win32[0x1d] == 0x30
assert osx2win32_name.name_map_osx_to_win32[0x1d] == "VK_0"
assert osx2xkb.code_map_osx_to_xkb[0x1d] == "AE10"
assert osx2xkb_name.name_map_osx_to_xkb[0x1d] == "AE10"
assert html2win32.code_map_html_to_win32["ControlLeft"] == 0x11
assert html2win32_name.name_map_html_to_win32["ControlLeft"] == "VK_CONTROL"
assert osx.code_table_osx[0x1d] == 0x3b;
assert osx_name.name_table_osx[0x1d] == "Control";

View File

@ -1,20 +0,0 @@
argparse is (c) 2006-2009 Steven J. Bethard <steven.bethard@gmail.com>.
The argparse module was contributed to Python as of Python 2.7 and thus
was licensed under the Python license. Same license applies to all files in
the argparse package project.
For details about the Python License, please see doc/Python-License.txt.
History
-------
Before (and including) argparse 1.1, the argparse package was licensed under
Apache License v2.0.
After argparse 1.1, all project files from the argparse project were deleted
due to license compatibility issues between Apache License 2.0 and GNU GPL v2.
The project repository then had a clean start with some files taken from
Python 2.7.1, so definitely all files are under Python License now.

View File

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff