Last active
September 25, 2024 02:29
-
-
Save niun/acc0451bd6bd62192d6561c3b75b5cd8 to your computer and use it in GitHub Desktop.
Convert windows keyboard XML files from kbdlayout.info to Vial keymap python files
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
"""Example result of vial_import_win_layout.py""" | |
keymap = { | |
"KC_1": '! ¹\n1 ¡', # Keyboard 1 and Bang, Win: VK_1, AT-101 position: 2 | |
"KC_2": '@ \n2 ²', # Keyboard 2 and At, Win: VK_2, AT-101 position: 3 | |
"KC_3": '# \n3 ³', # Keyboard 3 And Hash, Win: VK_3, AT-101 position: 4 | |
"KC_4": '$ £\n4 ¤', # Keyboard 4 and Dollar, Win: VK_4, AT-101 position: 5 | |
"KC_5": '% \n5 €', # Keyboard 5 and Percent, Win: VK_5, AT-101 position: 6 | |
"KC_6": '^ \n6 ¼', # Keyboard 6 and Caret, Win: VK_6, AT-101 position: 7 | |
"KC_7": '& \n7 ½', # Keyboard 7 and Ampersand, Win: VK_7, AT-101 position: 8 | |
"KC_8": '* \n8 ¾', # Keyboard 8 and Star, Win: VK_8, AT-101 position: 9 | |
"KC_9": '( \n9 ‘', # Keyboard 9 and Left Bracket, Win: VK_9, AT-101 position: 10 | |
"KC_0": ') \n0 ’', # Keyboard 0 and Right Bracket, Win: VK_0, AT-101 position: 11 | |
"KC_MINUS": '_ \n- ¥', # Keyboard Dash and Underscore, Win: VK_OEM_MINUS, AT-101 position: 12 | |
"KC_EQUAL": '+ ÷\n= ×', # Keyboard Equals and Plus, Win: VK_OEM_PLUS, AT-101 position: 13 | |
"KC_BSPACE": ' \n␡ ', # Keyboard Delete, Win: VK_BACK, AT-101 position: 15 | |
"KC_Q": 'Q Ä\nq ä', # Keyboard Q, Win: VK_Q, AT-101 position: 17 | |
"KC_W": 'W Å\nw å', # Keyboard W, Win: VK_W, AT-101 position: 18 | |
"KC_E": 'E É\ne é', # Keyboard E, Win: VK_E, AT-101 position: 19 | |
"KC_R": 'R \nr ®', # Keyboard R, Win: VK_R, AT-101 position: 20 | |
"KC_T": 'T Þ\nt þ', # Keyboard T, Win: VK_T, AT-101 position: 21 | |
"KC_Y": 'Y Ü\ny ü', # Keyboard Y, Win: VK_Y, AT-101 position: 22 | |
"KC_U": 'U Ú\nu ú', # Keyboard U, Win: VK_U, AT-101 position: 23 | |
"KC_I": 'I Í\ni í', # Keyboard I, Win: VK_I, AT-101 position: 24 | |
"KC_O": 'O Ó\no ó', # Keyboard O, Win: VK_O, AT-101 position: 25 | |
"KC_P": 'P Ö\np ö', # Keyboard P, Win: VK_P, AT-101 position: 26 | |
"KC_LBRACKET": '{ \n[ «', # Keyboard Left Brace, Win: VK_OEM_4, AT-101 position: 27 | |
"KC_RBRACKET": '} \n] »', # Keyboard Right Brace, Win: VK_OEM_6, AT-101 position: 28 | |
"KC_A": 'A Á\na á', # Keyboard A, Win: VK_A, AT-101 position: 31 | |
"KC_S": 'S §\ns ß', # Keyboard S, Win: VK_S, AT-101 position: 32 | |
"KC_D": 'D Ð\nd ð', # Keyboard D, Win: VK_D, AT-101 position: 33 | |
"KC_F": 'F \nf ', # Keyboard F, Win: VK_F, AT-101 position: 34 | |
"KC_G": 'G \ng ', # Keyboard G, Win: VK_G, AT-101 position: 35 | |
"KC_H": 'H \nh ', # Keyboard H, Win: VK_H, AT-101 position: 36 | |
"KC_J": 'J \nj ', # Keyboard J, Win: VK_J, AT-101 position: 37 | |
"KC_K": 'K \nk ', # Keyboard K, Win: VK_K, AT-101 position: 38 | |
"KC_L": 'L Ø\nl ø', # Keyboard L, Win: VK_L, AT-101 position: 39 | |
"KC_SCOLON": ': °\n; ¶', # Keyboard SemiColon and Colon, Win: VK_OEM_1, AT-101 position: 40 | |
"KC_QUOTE": '" ¨\n\' ´', # Keyboard Apostrophe and Double Quotation Mark, Win: VK_OEM_7, AT-101 position: 41 | |
"KC_GRAVE": '~ \n` ', # Keyboard Grave Accent and Tilde, Win: VK_OEM_3, AT-101 position: 1 | |
"KC_NONUS_HASH": '| ¦\n\\ ¬', # Keyboard Non-US, Win: VK_OEM_5, AT-101 position: 42 | |
"KC_Z": 'Z Æ\nz æ', # Keyboard Z, Win: VK_Z, AT-101 position: 46 | |
"KC_X": 'X \nx ', # Keyboard X, Win: VK_X, AT-101 position: 47 | |
"KC_C": 'C ¢\nc ©', # Keyboard C, Win: VK_C, AT-101 position: 48 | |
"KC_V": 'V \nv ', # Keyboard V, Win: VK_V, AT-101 position: 49 | |
"KC_B": 'B \nb ', # Keyboard B, Win: VK_B, AT-101 position: 50 | |
"KC_N": 'N Ñ\nn ñ', # Keyboard N, Win: VK_N, AT-101 position: 51 | |
"KC_M": 'M \nm µ', # Keyboard M, Win: VK_M, AT-101 position: 52 | |
"KC_COMMA": '< Ç\n, ç', # Keyboard Comma, Win: VK_OEM_COMMA, AT-101 position: 53 | |
"KC_DOT": '> \n. ', # Keyboard Period, Win: VK_OEM_PERIOD, AT-101 position: 54 | |
"KC_SLASH": '? \n/ ¿', # Keyboard QuestionMark, Win: VK_OEM_2, AT-101 position: 55 | |
"KC_KP_ASTERISK": '* \n* ', # Keypad Star, Win: VK_MULTIPLY, AT-101 position: 100 | |
"KC_SPACE": '␣ \n␣ ', # Keyboard Spacebar, Win: VK_SPACE, AT-101 position: 61 | |
"KC_KP_7": ' \n7 ', # Keypad 7 and Home, Win: VK_HOME, AT-101 position: 91 | |
"KC_KP_8": ' \n8 ', # Keypad 8 and Up Arrow, Win: VK_UP, AT-101 position: 96 | |
"KC_KP_9": ' \n9 ', # Keypad 9 and PageUp, Win: VK_PRIOR, AT-101 position: 101 | |
"KC_KP_MINUS": '- \n- ', # Keypad Dash, Win: VK_SUBTRACT, AT-101 position: 105 | |
"KC_KP_4": ' \n4 ', # Keypad 4 and Left Arrow, Win: VK_LEFT, AT-101 position: 92 | |
"KC_KP_5": ' \n5 ', # Keypad 5, Win: VK_CLEAR, AT-101 position: 97 | |
"KC_KP_6": ' \n6 ', # Keypad 6 and Right Arrow, Win: VK_RIGHT, AT-101 position: 102 | |
"KC_KP_PLUS": '+ \n+ ', # Keypad Plus, Win: VK_ADD, AT-101 position: 106 | |
"KC_KP_1": ' \n1 ', # Keypad 1 and End, Win: VK_END, AT-101 position: 93 | |
"KC_KP_2": ' \n2 ', # Keypad 2 and Down Arrow, Win: VK_DOWN, AT-101 position: 98 | |
"KC_KP_3": ' \n3 ', # Keypad 3 and PageDn, Win: VK_NEXT, AT-101 position: 103 | |
"KC_KP_0": ' \n0 ', # Keypad 0 and Insert, Win: VK_INSERT, AT-101 position: 99 | |
"KC_KP_DOT": ' \n. ', # Keypad Period, Win: VK_DELETE, AT-101 position: 104 | |
"KC_NONUS_BSLASH": '| \n\\ ', # Keyboard Non-US Slash Bar, Win: VK_OEM_102, AT-101 position: 45 | |
"KC_KP_SLASH": '/ \n/ ', # Keypad Forward Slash, Win: VK_DIVIDE, AT-101 position: 95 | |
"KC_RALT": 'AltGr', | |
"RALT(kc)": 'AltGr\n(kc)', | |
"RALT_T(kc)": 'AltGr_T\n(kc)', | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Convert layouts files like http://kbdlayout.info/KBDUSX/download/xml | |
to keymap python files used in the python sources of Vial | |
(https://github.com/vial-kb/vial-gui). | |
This script needs to be put in the vial-gui src/main/python directory | |
together with the win_to_hid.json file so the script is able to import | |
the keycodes module from vial-gui. | |
""" | |
from typing import NamedTuple | |
import sys | |
import xml.etree.ElementTree as ET | |
import json | |
import html | |
import argparse | |
from pathlib import Path | |
from keycodes.keycodes import Keycode | |
SCRIPT_DIR = Path(__file__).parent | |
WIN_TO_HID_FILE = SCRIPT_DIR / "win_to_hid.json" | |
def normalize_code(num: str|int) -> str: | |
if isinstance(num, int): | |
return f"{num:04X}" | |
if isinstance(num, str): | |
inum = int(num, base=16) | |
return f"{inum:04X}" | |
def make_printable(text: str) -> str: | |
text = html.unescape(text) | |
printable = "" | |
for c in text: | |
if ord(c) == 0x20: | |
printable += chr(0x2423) | |
elif c.isprintable(): | |
printable += c | |
elif ord(c) < 0x20: | |
printable += chr(0x2400 + ord(c)) | |
elif ord(c) == 127: | |
printable += chr(0x2421) | |
return printable | |
class KeyLabel(NamedTuple): | |
ll: str | |
lr: str | |
ul: str | |
ur: str | |
def get_chr_pos(modifiers: str) -> int: | |
pos = 0 | |
if modifiers == "WITHOUT": | |
return pos | |
mods = set(modifiers.split()) | |
if len({"VK_SHIFT", "VK_CAPITAL"}.intersection(mods)) == 1: | |
pos += 2 | |
if {"VK_CONTROL", "VK_MENU"}.issubset(mods): | |
pos += 1 | |
return pos | |
def get_key_label(key_results: list[ET.Element]) -> KeyLabel | None: | |
label_matrix = [" ", " ", " ", " "] | |
for result_elem in key_results: | |
modifiers = result_elem.attrib.get("With", "WITHOUT") | |
if 'Text' in result_elem.attrib: | |
text = result_elem.attrib['Text'] | |
else: | |
dead_key = result_elem.find("DeadKeyTable") | |
if dead_key is None: | |
continue | |
text = dead_key.attrib.get("Accent") | |
if text is None: | |
continue | |
label_matrix[get_chr_pos(modifiers)] = make_printable(text) | |
if "".join(label_matrix).strip(): | |
return KeyLabel(*label_matrix) | |
return None | |
def main(): | |
parser = argparse.ArgumentParser( | |
description="Convert windows keynboard layout xml file from" | |
"kbdlayout.info to a vial keymap python file") | |
parser.add_argument('xml_file', help='Input xml file location', type=Path) | |
args = parser.parse_args() | |
assert isinstance(args.xml_file, Path) | |
if not args.xml_file.exists(): | |
sys.exit(f"Given xml file '{args.xml_file}' does not exist.") | |
infilepath = args.xml_file | |
outfilepath = infilepath.with_suffix(".py") | |
# Load Windows Scancode => HID ID conversion table: | |
with WIN_TO_HID_FILE.open("r", encoding="utf-8") as infile: | |
key_data = json.load(infile) | |
win_codes = key_data['win_scan_codes'] | |
# Load Windows Keyboard layout definition file: | |
tree = ET.parse(infilepath) | |
root = tree.getroot() | |
altgr = root.attrib.get('RightAltIsAltGr', 'false').lower() == "true" | |
print(root.tag, f"- AltGr: {altgr}") | |
key_root = root.find("PhysicalKeys") | |
if key_root is None: | |
sys.exit(f"Unable to find physical key definitions in file {infilepath}.") | |
# Assemble Keymap: | |
class KeyMapEntry(NamedTuple): | |
qmk_id: str | |
label: str | |
comment: str = "" | |
keys: list[KeyMapEntry] = [] | |
for key in key_root.findall("./PK[@SC]"): | |
attribs = key.attrib | |
vk_id = attribs.get("VK", "") | |
key_results = key.findall("./Result") | |
if not list(key_results): | |
continue | |
key_label = get_key_label(key_results) | |
if key_label is None: | |
continue | |
hid_key = win_codes[normalize_code(attribs['SC'])] | |
hid_id = int(hid_key['hid_id'], base=16) | |
qmk_id = Keycode.serialize(hid_id) | |
label_text = f"{key_label.ul} {key_label.ur}\n{key_label.ll} {key_label.lr}" | |
comment = f"{hid_key['hid_name']}, Win: {vk_id}, AT-101 position: {hid_key['loc']}" | |
keys.append(KeyMapEntry(qmk_id, label_text, comment)) | |
print(attribs['SC'], vk_id, f"==> {qmk_id}:") | |
print(" ╭──────╮") | |
print(f" │ {key_label.ul} {key_label.ur} │") | |
print(f" │ {key_label.ll} {key_label.lr} │") | |
print(" ╰──────╯\n") | |
if altgr: | |
keys.append(KeyMapEntry("KC_RALT", "AltGr")) | |
keys.append(KeyMapEntry("RALT(kc)", "AltGr\n(kc)")) | |
keys.append(KeyMapEntry("RALT_T(kc)", "AltGr_T\n(kc)")) | |
# Write Keymap to file: | |
with outfilepath.open('w', encoding='utf-8') as outf: | |
outf.write("# coding: utf-8\n\n") | |
outf.write("keymap = {\n") | |
for key in keys: | |
comment = f" # {key.comment}" if key.comment else "" | |
outf.write(f' "{key.qmk_id}": {repr(key.label)},{comment}\n') | |
outf.write("}") | |
if __name__ == "__main__": | |
main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"purpose": "Windows Keyboard scancodes mapped to USB HID Usage Name and ID", | |
"source_url": "https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#scan-codes", | |
"fieldnames": { | |
"hid_page_name": "HID Usage Page Name", | |
"hid_name": "HID Usage Name", | |
"hid_page": "HID Usage Page", | |
"hid_id": "HID Usage ID", | |
"win_sc": "Scan 1 Make", | |
"loc": "Key Location" | |
}, | |
"win_scan_codes": { | |
"E05E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Power", | |
"hid_page": "0x0007", | |
"hid_id": "0x0066", | |
"win_sc": "0xE05E", | |
"loc": "" | |
}, | |
"E05F": { | |
"hid_page_name": "Generic Desktop", | |
"hid_name": "System Sleep", | |
"hid_page": "0x0001", | |
"hid_id": "0x0082", | |
"win_sc": "0xE05F", | |
"loc": "" | |
}, | |
"E063": { | |
"hid_page_name": "Generic Desktop", | |
"hid_name": "System Wake Up", | |
"hid_page": "0x0001", | |
"hid_id": "0x0083", | |
"win_sc": "0xE063", | |
"loc": "" | |
}, | |
"00FF": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "ErrorRollOver", | |
"hid_page": "0x0007", | |
"hid_id": "0x0001", | |
"win_sc": "0x00FF", | |
"loc": "" | |
}, | |
"001E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard A", | |
"hid_page": "0x0007", | |
"hid_id": "0x0004", | |
"win_sc": "0x001E", | |
"loc": "31" | |
}, | |
"0030": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard B", | |
"hid_page": "0x0007", | |
"hid_id": "0x0005", | |
"win_sc": "0x0030", | |
"loc": "50" | |
}, | |
"002E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard C", | |
"hid_page": "0x0007", | |
"hid_id": "0x0006", | |
"win_sc": "0x002E", | |
"loc": "48" | |
}, | |
"0020": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard D", | |
"hid_page": "0x0007", | |
"hid_id": "0x0007", | |
"win_sc": "0x0020", | |
"loc": "33" | |
}, | |
"0012": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard E", | |
"hid_page": "0x0007", | |
"hid_id": "0x0008", | |
"win_sc": "0x0012", | |
"loc": "19" | |
}, | |
"0021": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F", | |
"hid_page": "0x0007", | |
"hid_id": "0x0009", | |
"win_sc": "0x0021", | |
"loc": "34" | |
}, | |
"0022": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard G", | |
"hid_page": "0x0007", | |
"hid_id": "0x000A", | |
"win_sc": "0x0022", | |
"loc": "35" | |
}, | |
"0023": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard H", | |
"hid_page": "0x0007", | |
"hid_id": "0x000B", | |
"win_sc": "0x0023", | |
"loc": "36" | |
}, | |
"0017": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard I", | |
"hid_page": "0x0007", | |
"hid_id": "0x000C", | |
"win_sc": "0x0017", | |
"loc": "24" | |
}, | |
"0024": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard J", | |
"hid_page": "0x0007", | |
"hid_id": "0x000D", | |
"win_sc": "0x0024", | |
"loc": "37" | |
}, | |
"0025": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard K", | |
"hid_page": "0x0007", | |
"hid_id": "0x000E", | |
"win_sc": "0x0025", | |
"loc": "38" | |
}, | |
"0026": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard L", | |
"hid_page": "0x0007", | |
"hid_id": "0x000F", | |
"win_sc": "0x0026", | |
"loc": "39" | |
}, | |
"0032": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard M", | |
"hid_page": "0x0007", | |
"hid_id": "0x0010", | |
"win_sc": "0x0032", | |
"loc": "52" | |
}, | |
"0031": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard N", | |
"hid_page": "0x0007", | |
"hid_id": "0x0011", | |
"win_sc": "0x0031", | |
"loc": "51" | |
}, | |
"0018": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard O", | |
"hid_page": "0x0007", | |
"hid_id": "0x0012", | |
"win_sc": "0x0018", | |
"loc": "25" | |
}, | |
"0019": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard P", | |
"hid_page": "0x0007", | |
"hid_id": "0x0013", | |
"win_sc": "0x0019", | |
"loc": "26" | |
}, | |
"0010": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Q", | |
"hid_page": "0x0007", | |
"hid_id": "0x0014", | |
"win_sc": "0x0010", | |
"loc": "17" | |
}, | |
"0013": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard R", | |
"hid_page": "0x0007", | |
"hid_id": "0x0015", | |
"win_sc": "0x0013", | |
"loc": "20" | |
}, | |
"001F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard S", | |
"hid_page": "0x0007", | |
"hid_id": "0x0016", | |
"win_sc": "0x001F", | |
"loc": "32" | |
}, | |
"0014": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard T", | |
"hid_page": "0x0007", | |
"hid_id": "0x0017", | |
"win_sc": "0x0014", | |
"loc": "21" | |
}, | |
"0016": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard U", | |
"hid_page": "0x0007", | |
"hid_id": "0x0018", | |
"win_sc": "0x0016", | |
"loc": "23" | |
}, | |
"002F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard V", | |
"hid_page": "0x0007", | |
"hid_id": "0x0019", | |
"win_sc": "0x002F", | |
"loc": "49" | |
}, | |
"0011": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard W", | |
"hid_page": "0x0007", | |
"hid_id": "0x001A", | |
"win_sc": "0x0011", | |
"loc": "18" | |
}, | |
"002D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard X", | |
"hid_page": "0x0007", | |
"hid_id": "0x001B", | |
"win_sc": "0x002D", | |
"loc": "47" | |
}, | |
"0015": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Y", | |
"hid_page": "0x0007", | |
"hid_id": "0x001C", | |
"win_sc": "0x0015", | |
"loc": "22" | |
}, | |
"002C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Z", | |
"hid_page": "0x0007", | |
"hid_id": "0x001D", | |
"win_sc": "0x002C", | |
"loc": "46" | |
}, | |
"0002": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 1 and Bang", | |
"hid_page": "0x0007", | |
"hid_id": "0x001E", | |
"win_sc": "0x0002", | |
"loc": "2" | |
}, | |
"0003": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 2 and At", | |
"hid_page": "0x0007", | |
"hid_id": "0x001F", | |
"win_sc": "0x0003", | |
"loc": "3" | |
}, | |
"0004": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 3 And Hash", | |
"hid_page": "0x0007", | |
"hid_id": "0x0020", | |
"win_sc": "0x0004", | |
"loc": "4" | |
}, | |
"0005": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 4 and Dollar", | |
"hid_page": "0x0007", | |
"hid_id": "0x0021", | |
"win_sc": "0x0005", | |
"loc": "5" | |
}, | |
"0006": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 5 and Percent", | |
"hid_page": "0x0007", | |
"hid_id": "0x0022", | |
"win_sc": "0x0006", | |
"loc": "6" | |
}, | |
"0007": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 6 and Caret", | |
"hid_page": "0x0007", | |
"hid_id": "0x0023", | |
"win_sc": "0x0007", | |
"loc": "7" | |
}, | |
"0008": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 7 and Ampersand", | |
"hid_page": "0x0007", | |
"hid_id": "0x0024", | |
"win_sc": "0x0008", | |
"loc": "8" | |
}, | |
"0009": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 8 and Star", | |
"hid_page": "0x0007", | |
"hid_id": "0x0025", | |
"win_sc": "0x0009", | |
"loc": "9" | |
}, | |
"000A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 9 and Left Bracket", | |
"hid_page": "0x0007", | |
"hid_id": "0x0026", | |
"win_sc": "0x000A", | |
"loc": "10" | |
}, | |
"000B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard 0 and Right Bracket", | |
"hid_page": "0x0007", | |
"hid_id": "0x0027", | |
"win_sc": "0x000B", | |
"loc": "11" | |
}, | |
"001C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Return Enter", | |
"hid_page": "0x0007", | |
"hid_id": "0x0028", | |
"win_sc": "0x001C", | |
"loc": "43" | |
}, | |
"0001": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Escape", | |
"hid_page": "0x0007", | |
"hid_id": "0x0029", | |
"win_sc": "0x0001", | |
"loc": "110" | |
}, | |
"000E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Delete", | |
"hid_page": "0x0007", | |
"hid_id": "0x002A", | |
"win_sc": "0x000E", | |
"loc": "15" | |
}, | |
"000F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Tab", | |
"hid_page": "0x0007", | |
"hid_id": "0x002B", | |
"win_sc": "0x000F", | |
"loc": "16" | |
}, | |
"0039": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Spacebar", | |
"hid_page": "0x0007", | |
"hid_id": "0x002C", | |
"win_sc": "0x0039", | |
"loc": "61" | |
}, | |
"000C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Dash and Underscore", | |
"hid_page": "0x0007", | |
"hid_id": "0x002D", | |
"win_sc": "0x000C", | |
"loc": "12" | |
}, | |
"000D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Equals and Plus", | |
"hid_page": "0x0007", | |
"hid_id": "0x002E", | |
"win_sc": "0x000D", | |
"loc": "13" | |
}, | |
"001A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Left Brace", | |
"hid_page": "0x0007", | |
"hid_id": "0x002F", | |
"win_sc": "0x001A", | |
"loc": "27" | |
}, | |
"001B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Right Brace", | |
"hid_page": "0x0007", | |
"hid_id": "0x0030", | |
"win_sc": "0x001B", | |
"loc": "28" | |
}, | |
"002B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Non-US", | |
"hid_page": "0x0007", | |
"hid_id": "0x0032", | |
"win_sc": "0x002B", | |
"loc": "42" | |
}, | |
"0027": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard SemiColon and Colon", | |
"hid_page": "0x0007", | |
"hid_id": "0x0033", | |
"win_sc": "0x0027", | |
"loc": "40" | |
}, | |
"0028": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Apostrophe and Double Quotation Mark", | |
"hid_page": "0x0007", | |
"hid_id": "0x0034", | |
"win_sc": "0x0028", | |
"loc": "41" | |
}, | |
"0029": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Grave Accent and Tilde", | |
"hid_page": "0x0007", | |
"hid_id": "0x0035", | |
"win_sc": "0x0029", | |
"loc": "1" | |
}, | |
"0033": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Comma", | |
"hid_page": "0x0007", | |
"hid_id": "0x0036", | |
"win_sc": "0x0033", | |
"loc": "53" | |
}, | |
"0034": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Period", | |
"hid_page": "0x0007", | |
"hid_id": "0x0037", | |
"win_sc": "0x0034", | |
"loc": "54" | |
}, | |
"0035": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard QuestionMark", | |
"hid_page": "0x0007", | |
"hid_id": "0x0038", | |
"win_sc": "0x0035", | |
"loc": "55" | |
}, | |
"003A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Caps Lock", | |
"hid_page": "0x0007", | |
"hid_id": "0x0039", | |
"win_sc": "0x003A", | |
"loc": "30" | |
}, | |
"003B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F1", | |
"hid_page": "0x0007", | |
"hid_id": "0x003A", | |
"win_sc": "0x003B", | |
"loc": "112" | |
}, | |
"003C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F2", | |
"hid_page": "0x0007", | |
"hid_id": "0x003B", | |
"win_sc": "0x003C", | |
"loc": "113" | |
}, | |
"003D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F3", | |
"hid_page": "0x0007", | |
"hid_id": "0x003C", | |
"win_sc": "0x003D", | |
"loc": "114" | |
}, | |
"003E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F4", | |
"hid_page": "0x0007", | |
"hid_id": "0x003D", | |
"win_sc": "0x003E", | |
"loc": "115" | |
}, | |
"003F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F5", | |
"hid_page": "0x0007", | |
"hid_id": "0x003E", | |
"win_sc": "0x003F", | |
"loc": "116" | |
}, | |
"0040": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F6", | |
"hid_page": "0x0007", | |
"hid_id": "0x003F", | |
"win_sc": "0x0040", | |
"loc": "117" | |
}, | |
"0041": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F7", | |
"hid_page": "0x0007", | |
"hid_id": "0x0040", | |
"win_sc": "0x0041", | |
"loc": "118" | |
}, | |
"0042": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F8", | |
"hid_page": "0x0007", | |
"hid_id": "0x0041", | |
"win_sc": "0x0042", | |
"loc": "119" | |
}, | |
"0043": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F9", | |
"hid_page": "0x0007", | |
"hid_id": "0x0042", | |
"win_sc": "0x0043", | |
"loc": "120" | |
}, | |
"0044": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F10", | |
"hid_page": "0x0007", | |
"hid_id": "0x0043", | |
"win_sc": "0x0044", | |
"loc": "121" | |
}, | |
"0057": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F11", | |
"hid_page": "0x0007", | |
"hid_id": "0x0044", | |
"win_sc": "0x0057", | |
"loc": "122" | |
}, | |
"0058": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F12", | |
"hid_page": "0x0007", | |
"hid_id": "0x0045", | |
"win_sc": "0x0058", | |
"loc": "123" | |
}, | |
"E037": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard PrintScreen", | |
"hid_page": "0x0007", | |
"hid_id": "0x0046", | |
"win_sc": "0xE037" | |
}, | |
"0046": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Scroll Lock", | |
"hid_page": "0x0007", | |
"hid_id": "0x0047", | |
"win_sc": "0x0046", | |
"loc": "125" | |
}, | |
"E11D45": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Pause", | |
"hid_page": "0x0007", | |
"hid_id": "0x0048", | |
"win_sc": "0xE11D45" | |
}, | |
"E052": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Insert", | |
"hid_page": "0x0007", | |
"hid_id": "0x0049", | |
"win_sc": "0xE052", | |
"loc": "75" | |
}, | |
"E047": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Home", | |
"hid_page": "0x0007", | |
"hid_id": "0x004A", | |
"win_sc": "0xE047", | |
"loc": "80" | |
}, | |
"E049": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard PageUp", | |
"hid_page": "0x0007", | |
"hid_id": "0x004B", | |
"win_sc": "0xE049", | |
"loc": "85" | |
}, | |
"E053": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Delete Forward", | |
"hid_page": "0x0007", | |
"hid_id": "0x004C", | |
"win_sc": "0xE053", | |
"loc": "76" | |
}, | |
"E04F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard End", | |
"hid_page": "0x0007", | |
"hid_id": "0x004D", | |
"win_sc": "0xE04F", | |
"loc": "81" | |
}, | |
"E051": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard PageDown", | |
"hid_page": "0x0007", | |
"hid_id": "0x004E", | |
"win_sc": "0xE051", | |
"loc": "86" | |
}, | |
"E04D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard RightArrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x004F", | |
"win_sc": "0xE04D", | |
"loc": "89" | |
}, | |
"E04B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LeftArrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x0050", | |
"win_sc": "0xE04B", | |
"loc": "79" | |
}, | |
"E050": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard DownArrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x0051", | |
"win_sc": "0xE050", | |
"loc": "84" | |
}, | |
"E048": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard UpArrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x0052", | |
"win_sc": "0xE048", | |
"loc": "83" | |
}, | |
"0045": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Num Lock and Clear", | |
"hid_page": "0x0007", | |
"hid_id": "0x0053", | |
"win_sc": "0x0045" | |
}, | |
"E035": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Forward Slash", | |
"hid_page": "0x0007", | |
"hid_id": "0x0054", | |
"win_sc": "0xE035", | |
"loc": "95" | |
}, | |
"0037": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Star", | |
"hid_page": "0x0007", | |
"hid_id": "0x0055", | |
"win_sc": "0x0037", | |
"loc": "100" | |
}, | |
"004A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Dash", | |
"hid_page": "0x0007", | |
"hid_id": "0x0056", | |
"win_sc": "0x004A", | |
"loc": "105" | |
}, | |
"004E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Plus", | |
"hid_page": "0x0007", | |
"hid_id": "0x0057", | |
"win_sc": "0x004E", | |
"loc": "106" | |
}, | |
"E01C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad ENTER", | |
"hid_page": "0x0007", | |
"hid_id": "0x0058", | |
"win_sc": "0xE01C", | |
"loc": "108" | |
}, | |
"004F": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 1 and End", | |
"hid_page": "0x0007", | |
"hid_id": "0x0059", | |
"win_sc": "0x004F", | |
"loc": "93" | |
}, | |
"0050": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 2 and Down Arrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x005A", | |
"win_sc": "0x0050", | |
"loc": "98" | |
}, | |
"0051": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 3 and PageDn", | |
"hid_page": "0x0007", | |
"hid_id": "0x005B", | |
"win_sc": "0x0051", | |
"loc": "103" | |
}, | |
"004B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 4 and Left Arrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x005C", | |
"win_sc": "0x004B", | |
"loc": "92" | |
}, | |
"004C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 5", | |
"hid_page": "0x0007", | |
"hid_id": "0x005D", | |
"win_sc": "0x004C", | |
"loc": "97" | |
}, | |
"004D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 6 and Right Arrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x005E", | |
"win_sc": "0x004D", | |
"loc": "102" | |
}, | |
"0047": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 7 and Home", | |
"hid_page": "0x0007", | |
"hid_id": "0x005F", | |
"win_sc": "0x0047", | |
"loc": "91" | |
}, | |
"0048": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 8 and Up Arrow", | |
"hid_page": "0x0007", | |
"hid_id": "0x0060", | |
"win_sc": "0x0048", | |
"loc": "96" | |
}, | |
"0049": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 9 and PageUp", | |
"hid_page": "0x0007", | |
"hid_id": "0x0061", | |
"win_sc": "0x0049", | |
"loc": "101" | |
}, | |
"0052": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad 0 and Insert", | |
"hid_page": "0x0007", | |
"hid_id": "0x0062", | |
"win_sc": "0x0052", | |
"loc": "99" | |
}, | |
"0053": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Period", | |
"hid_page": "0x0007", | |
"hid_id": "0x0063", | |
"win_sc": "0x0053", | |
"loc": "104" | |
}, | |
"0056": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Non-US Slash Bar", | |
"hid_page": "0x0007", | |
"hid_id": "0x0064", | |
"win_sc": "0x0056", | |
"loc": "45" | |
}, | |
"E05D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Application", | |
"hid_page": "0x0007", | |
"hid_id": "0x0065", | |
"win_sc": "0xE05D", | |
"loc": "129" | |
}, | |
"0059": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Equals", | |
"hid_page": "0x0007", | |
"hid_id": "0x0067", | |
"win_sc": "0x0059", | |
"loc": "" | |
}, | |
"0064": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F13", | |
"hid_page": "0x0007", | |
"hid_id": "0x0068", | |
"win_sc": "0x0064", | |
"loc": "" | |
}, | |
"0065": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F14", | |
"hid_page": "0x0007", | |
"hid_id": "0x0069", | |
"win_sc": "0x0065", | |
"loc": "" | |
}, | |
"0066": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F15", | |
"hid_page": "0x0007", | |
"hid_id": "0x006A", | |
"win_sc": "0x0066", | |
"loc": "" | |
}, | |
"0067": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F16", | |
"hid_page": "0x0007", | |
"hid_id": "0x006B", | |
"win_sc": "0x0067", | |
"loc": "" | |
}, | |
"0068": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F17", | |
"hid_page": "0x0007", | |
"hid_id": "0x006C", | |
"win_sc": "0x0068", | |
"loc": "" | |
}, | |
"0069": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F18", | |
"hid_page": "0x0007", | |
"hid_id": "0x006D", | |
"win_sc": "0x0069", | |
"loc": "" | |
}, | |
"006A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F19", | |
"hid_page": "0x0007", | |
"hid_id": "0x006E", | |
"win_sc": "0x006A", | |
"loc": "" | |
}, | |
"006B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F20", | |
"hid_page": "0x0007", | |
"hid_id": "0x006F", | |
"win_sc": "0x006B", | |
"loc": "" | |
}, | |
"006C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F21", | |
"hid_page": "0x0007", | |
"hid_id": "0x0070", | |
"win_sc": "0x006C", | |
"loc": "" | |
}, | |
"006D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F22", | |
"hid_page": "0x0007", | |
"hid_id": "0x0071", | |
"win_sc": "0x006D", | |
"loc": "" | |
}, | |
"006E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard F23", | |
"hid_page": "0x0007", | |
"hid_id": "0x0072", | |
"win_sc": "0x006E", | |
"loc": "" | |
}, | |
"0076": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LANG5", | |
"hid_page": "0x0007", | |
"hid_id": "0x0094", | |
"win_sc": "0x0076", | |
"loc": "" | |
}, | |
"007E": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keypad Comma", | |
"hid_page": "0x0007", | |
"hid_id": "0x0085", | |
"win_sc": "0x007E", | |
"loc": "107 *Note 4" | |
}, | |
"0073": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International1", | |
"hid_page": "0x0007", | |
"hid_id": "0x0087", | |
"win_sc": "0x0073", | |
"loc": "56 *Note 4, 5" | |
}, | |
"0070": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International2", | |
"hid_page": "0x0007", | |
"hid_id": "0x0088", | |
"win_sc": "0x0070", | |
"loc": "133 *Note 5" | |
}, | |
"007D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International3", | |
"hid_page": "0x0007", | |
"hid_id": "0x0089", | |
"win_sc": "0x007D", | |
"loc": "14 *Note 5" | |
}, | |
"0079": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International4", | |
"hid_page": "0x0007", | |
"hid_id": "0x008A", | |
"win_sc": "0x0079", | |
"loc": "132 *Note 5" | |
}, | |
"007B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International5", | |
"hid_page": "0x0007", | |
"hid_id": "0x008B", | |
"win_sc": "0x007B", | |
"loc": "131 *Note 5" | |
}, | |
"005C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard International6", | |
"hid_page": "0x0007", | |
"hid_id": "0x008C", | |
"win_sc": "0x005C", | |
"loc": "" | |
}, | |
"0072": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LANG1", | |
"hid_page": "0x0007", | |
"hid_id": "0x0090", | |
"win_sc": "0x0072 *Note 6" | |
}, | |
"0071": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LANG2", | |
"hid_page": "0x0007", | |
"hid_id": "0x0091", | |
"win_sc": "0x0071 *Note 6" | |
}, | |
"0078": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LANG3", | |
"hid_page": "0x0007", | |
"hid_id": "0x0092", | |
"win_sc": "0x0078", | |
"loc": "" | |
}, | |
"0077": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LANG4", | |
"hid_page": "0x0007", | |
"hid_id": "0x0093", | |
"win_sc": "0x0077", | |
"loc": "" | |
}, | |
"001D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LeftControl", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E0", | |
"win_sc": "0x001D", | |
"loc": "58" | |
}, | |
"002A": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LeftShift", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E1", | |
"win_sc": "0x002A", | |
"loc": "44" | |
}, | |
"0038": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard LeftAlt", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E2", | |
"win_sc": "0x0038", | |
"loc": "60" | |
}, | |
"E05B": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Left GUI", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E3", | |
"win_sc": "0xE05B", | |
"loc": "127" | |
}, | |
"E01D": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard RightControl", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E4", | |
"win_sc": "0xE01D", | |
"loc": "64" | |
}, | |
"0036": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard RightShift", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E5", | |
"win_sc": "0x0036", | |
"loc": "57" | |
}, | |
"E038": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard RightAlt", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E6", | |
"win_sc": "0xE038", | |
"loc": "62" | |
}, | |
"E05C": { | |
"hid_page_name": "Keyboard/Keypad", | |
"hid_name": "Keyboard Right GUI", | |
"hid_page": "0x0007", | |
"hid_id": "0x00E7", | |
"win_sc": "0xE05C", | |
"loc": "128" | |
}, | |
"E019": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Scan Next Track", | |
"hid_page": "0x000C", | |
"hid_id": "0x00B5", | |
"win_sc": "0xE019", | |
"loc": "" | |
}, | |
"E010": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Scan Previous Track", | |
"hid_page": "0x000C", | |
"hid_id": "0x00B6", | |
"win_sc": "0xE010", | |
"loc": "" | |
}, | |
"E024": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Stop", | |
"hid_page": "0x000C", | |
"hid_id": "0x00B7", | |
"win_sc": "0xE024", | |
"loc": "" | |
}, | |
"E022": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Play/Pause", | |
"hid_page": "0x000C", | |
"hid_id": "0x00CD", | |
"win_sc": "0xE022", | |
"loc": "" | |
}, | |
"E020": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Mute", | |
"hid_page": "0x000C", | |
"hid_id": "0x00E2", | |
"win_sc": "0xE020", | |
"loc": "" | |
}, | |
"E030": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Volume Increment", | |
"hid_page": "0x000C", | |
"hid_id": "0x00E9", | |
"win_sc": "0xE030", | |
"loc": "" | |
}, | |
"E02E": { | |
"hid_page_name": "Consumer", | |
"hid_name": "Volume Decrement", | |
"hid_page": "0x000C", | |
"hid_id": "0x00EA", | |
"win_sc": "0xE02E", | |
"loc": "" | |
}, | |
"E06D": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AL Consumer Control Configuration", | |
"hid_page": "0x000C", | |
"hid_id": "0x0183", | |
"win_sc": "0xE06D", | |
"loc": "" | |
}, | |
"E06C": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AL Email Reader", | |
"hid_page": "0x000C", | |
"hid_id": "0x018A", | |
"win_sc": "0xE06C", | |
"loc": "" | |
}, | |
"E021": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AL Calculator", | |
"hid_page": "0x000C", | |
"hid_id": "0x0192", | |
"win_sc": "0xE021", | |
"loc": "" | |
}, | |
"E06B": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AL Local Machine Browser", | |
"hid_page": "0x000C", | |
"hid_id": "0x0194", | |
"win_sc": "0xE06B", | |
"loc": "" | |
}, | |
"E065": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Search", | |
"hid_page": "0x000C", | |
"hid_id": "0x0221", | |
"win_sc": "0xE065", | |
"loc": "" | |
}, | |
"E032": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Home", | |
"hid_page": "0x000C", | |
"hid_id": "0x0223", | |
"win_sc": "0xE032", | |
"loc": "" | |
}, | |
"E06A": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Back", | |
"hid_page": "0x000C", | |
"hid_id": "0x0224", | |
"win_sc": "0xE06A", | |
"loc": "" | |
}, | |
"E069": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Forward", | |
"hid_page": "0x000C", | |
"hid_id": "0x0225", | |
"win_sc": "0xE069", | |
"loc": "" | |
}, | |
"E068": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Stop", | |
"hid_page": "0x000C", | |
"hid_id": "0x0226", | |
"win_sc": "0xE068", | |
"loc": "" | |
}, | |
"E067": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Refresh", | |
"hid_page": "0x000C", | |
"hid_id": "0x0227", | |
"win_sc": "0xE067", | |
"loc": "" | |
}, | |
"E066": { | |
"hid_page_name": "Consumer", | |
"hid_name": "AC Bookmarks", | |
"hid_page": "0x000C", | |
"hid_id": "0x022A", | |
"win_sc": "0xE066", | |
"loc": "" | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment