diff --git a/src/device_controller/keyboard_converter.h b/src/device_controller/keyboard_converter.h index 59622d9..676d070 100644 --- a/src/device_controller/keyboard_converter.h +++ b/src/device_controller/keyboard_converter.h @@ -247,21 +247,121 @@ std::map CGKeyCodeToVkCode = { // Windows vkCode to X11 KeySym std::map vkCodeToX11KeySym = { - {0x41, 0x0041}, {0x42, 0x0042}, {0x43, 0x0043}, {0x44, 0x0044}, - {0x45, 0x0045}, {0x46, 0x0046}, {0x47, 0x0047}, {0x48, 0x0048}, - {0x49, 0x0049}, {0x4A, 0x004A}, {0x4B, 0x004B}, {0x4C, 0x004C}, - {0x4D, 0x004D}, {0x4E, 0x004E}, {0x4F, 0x004F}, {0x50, 0x0050}, - {0x51, 0x0051}, {0x52, 0x0052}, {0x53, 0x0053}, {0x54, 0x0054}, - {0x55, 0x0055}, {0x56, 0x0056}, {0x57, 0x0057}, {0x58, 0x0058}, - {0x59, 0x0059}, {0x5A, 0x005A}, {0x30, 0x0030}, {0x31, 0x0031}, - {0x32, 0x0032}, {0x33, 0x0033}, {0x34, 0x0034}, {0x35, 0x0035}, - {0x36, 0x0036}, {0x37, 0x0037}, {0x38, 0x0038}, {0x39, 0x0039}, - {0x1B, 0xFF1B}, {0x0D, 0xFF0D}, {0x20, 0x0020}, {0x08, 0xFF08}, - {0x09, 0xFF09}, {0x25, 0xFF51}, {0x27, 0xFF53}, {0x26, 0xFF52}, - {0x28, 0xFF54}, {0x70, 0xFFBE}, {0x71, 0xFFBF}, {0x72, 0xFFC0}, - {0x73, 0xFFC1}, {0x74, 0xFFC2}, {0x75, 0xFFC3}, {0x76, 0xFFC4}, - {0x77, 0xFFC5}, {0x78, 0xFFC6}, {0x79, 0xFFC7}, {0x7A, 0xFFC8}, + // A-Z + {0x41, 0x0041}, // A + {0x42, 0x0042}, // B + {0x43, 0x0043}, // C + {0x44, 0x0044}, // D + {0x45, 0x0045}, // E + {0x46, 0x0046}, // F + {0x47, 0x0047}, // G + {0x48, 0x0048}, // H + {0x49, 0x0049}, // I + {0x4A, 0x004A}, // J + {0x4B, 0x004B}, // K + {0x4C, 0x004C}, // L + {0x4D, 0x004D}, // M + {0x4E, 0x004E}, // N + {0x4F, 0x004F}, // O + {0x50, 0x0050}, // P + {0x51, 0x0051}, // Q + {0x52, 0x0052}, // R + {0x53, 0x0053}, // S + {0x54, 0x0054}, // T + {0x55, 0x0055}, // U + {0x56, 0x0056}, // V + {0x57, 0x0057}, // W + {0x58, 0x0058}, // X + {0x59, 0x0059}, // Y + {0x5A, 0x005A}, // Z + + // 0-9 + {0x30, 0x0030}, // 0 + {0x31, 0x0031}, // 1 + {0x32, 0x0032}, // 2 + {0x33, 0x0033}, // 3 + {0x34, 0x0034}, // 4 + {0x35, 0x0035}, // 5 + {0x36, 0x0036}, // 6 + {0x37, 0x0037}, // 7 + {0x38, 0x0038}, // 8 + {0x39, 0x0039}, // 9 + + // F1-F12 + {0x70, 0xFFBE}, + {0x71, 0xFFBF}, + {0x72, 0xFFC0}, + {0x73, 0xFFC1}, + {0x74, 0xFFC2}, + {0x75, 0xFFC3}, + {0x76, 0xFFC4}, + {0x77, 0xFFC5}, + {0x78, 0xFFC6}, + {0x79, 0xFFC7}, + {0x7A, 0xFFC8}, {0x7B, 0xFFC9}, + + // control keys + {0x1B, 0xFF1B}, // Escape + {0x0D, 0xFF0D}, // Enter + {0x20, 0x0020}, // Space + + {0x08, 0xFF08}, // Backspace + {0x09, 0xFF09}, // Tab + {0x2C, 0xFD1D}, // Print Screen + {0x2D, 0xFF63}, // Insert + {0x2E, 0xFFFF}, // Delete + {0x24, 0xFF50}, // Home + {0x23, 0xFF57}, // End + {0x21, 0xFF55}, // Page Up + {0x22, 0xFF56}, // Page Down + + // arrow keys + {0x25, 0xFF51}, // Left Arrow + {0x27, 0xFF53}, // Right Arrow + {0x26, 0xFF52}, // Up Arrow + {0x28, 0xFF54}, // Down Arrow + + // numpad + {0x60, 0x0030}, // Numpad 0 + {0x61, 0x0031}, // Numpad 1 + {0x62, 0x0032}, // Numpad 2 + {0x63, 0x0033}, // Numpad 3 + {0x64, 0x0034}, // Numpad 4 + {0x65, 0x0035}, // Numpad 5 + {0x66, 0x0036}, // Numpad 6 + {0x67, 0x0037}, // Numpad 7 + {0x68, 0x0038}, // Numpad 8 + {0x69, 0x0039}, // Numpad 9 + {0x6E, 0x003A}, // Numpad . + {0x6F, 0x002F}, // Numpad / + {0x6A, 0x002A}, // Numpad * + {0x6D, 0x002D}, // Numpad - + {0x6B, 0x002B}, // Numpad + + + // symbol keys + {0xBA, 0x003B}, // ; (Semicolon) + {0xDE, 0x0027}, // ' (Quote) + {0xC0, 0x007E}, // ` (Grave) + {0xBC, 0x002C}, // , (Comma) + {0xBE, 0x002E}, // . (Period) + {0xBF, 0x002F}, // / (Slash) + {0xDC, 0x005C}, // \ (Backslash) + {0xDB, 0x005B}, // [ (Left Bracket) + {0xDD, 0x005D}, // ] (Right Bracket) + {0xBD, 0x002D}, // - (Minus) + {0xBB, 0x003D}, // = (Equals) + + // modifier keys + {0x14, 0xFFE5}, // Caps Lock + {0xA0, 0xFFE1}, // Shift (Left) + {0xA1, 0xFFE2}, // Shift (Right) + {0xA2, 0xFFE3}, // Ctrl (Left) + {0xA3, 0xFFE4}, // Ctrl (Right) + {0xA4, 0xFFE9}, // Alt (Left) + {0xA5, 0xFFEA}, // Alt (Right) + {0x5B, 0xFFEB}, // Left Command (Windows key) + {0x5C, 0xFFEC}, // Right Command }; // X11 KeySym to Windows vkCode @@ -275,21 +375,120 @@ std::map x11KeySymToVkCode = []() { // macOS CGKeyCode to X11 KeySym std::map cgKeyCodeToX11KeySym = { - {0x00, 0x0041}, {0x0B, 0x0042}, {0x08, 0x0043}, {0x02, 0x0044}, - {0x0E, 0x0045}, {0x03, 0x0046}, {0x05, 0x0047}, {0x04, 0x0048}, - {0x22, 0x0049}, {0x26, 0x004A}, {0x28, 0x004B}, {0x25, 0x004C}, - {0x2E, 0x004D}, {0x2D, 0x004E}, {0x1F, 0x004F}, {0x23, 0x0050}, - {0x0C, 0x0051}, {0x0F, 0x0052}, {0x01, 0x0053}, {0x11, 0x0054}, - {0x20, 0x0055}, {0x09, 0x0056}, {0x0D, 0x0057}, {0x07, 0x0058}, - {0x10, 0x0059}, {0x06, 0x005A}, {0x12, 0x0031}, {0x13, 0x0032}, - {0x14, 0x0033}, {0x15, 0x0034}, {0x17, 0x0035}, {0x16, 0x0036}, - {0x1A, 0x0037}, {0x1C, 0x0038}, {0x19, 0x0039}, {0x1D, 0x0030}, - {0x35, 0xFF1B}, {0x24, 0xFF0D}, {0x31, 0x0020}, {0x33, 0xFF08}, - {0x30, 0xFF09}, {0x7B, 0xFF51}, {0x7C, 0xFF53}, {0x7E, 0xFF52}, - {0x7D, 0xFF54}, {0x7A, 0xFFBE}, {0x78, 0xFFBF}, {0x63, 0xFFC0}, - {0x76, 0xFFC1}, {0x60, 0xFFC2}, {0x61, 0xFFC3}, {0x62, 0xFFC4}, - {0x64, 0xFFC5}, {0x65, 0xFFC6}, {0x6D, 0xFFC7}, {0x67, 0xFFC8}, - {0x6F, 0xFFC9}, + // A-Z + {0x00, 0x0041}, // A + {0x0B, 0x0042}, // B + {0x08, 0x0043}, // C + {0x02, 0x0044}, // D + {0x0E, 0x0045}, // E + {0x03, 0x0046}, // F + {0x05, 0x0047}, // G + {0x04, 0x0048}, // H + {0x22, 0x0049}, // I + {0x26, 0x004A}, // J + {0x28, 0x004B}, // K + {0x25, 0x004C}, // L + {0x2E, 0x004D}, // M + {0x2D, 0x004E}, // N + {0x1F, 0x004F}, // O + {0x23, 0x0050}, // P + {0x0C, 0x0051}, // Q + {0x0F, 0x0052}, // R + {0x01, 0x0053}, // S + {0x11, 0x0054}, // T + {0x20, 0x0055}, // U + {0x09, 0x0056}, // V + {0x0D, 0x0057}, // W + {0x07, 0x0058}, // X + {0x10, 0x0059}, // Y + {0x06, 0x005A}, // Z + + // 0-9 + {0x1D, 0x0030}, + {0x12, 0x0031}, + {0x13, 0x0032}, + {0x14, 0x0033}, + {0x15, 0x0034}, + {0x17, 0x0035}, + {0x16, 0x0036}, + {0x1A, 0x0037}, + {0x1C, 0x0038}, + {0x19, 0x0039}, + + // F1-F12 + {0x7A, 0xFFBE}, // F1 + {0x78, 0xFFBF}, // F2 + {0x63, 0xFFC0}, // F3 + {0x76, 0xFFC1}, // F4 + {0x60, 0xFFC2}, // F5 + {0x61, 0xFFC3}, // F6 + {0x62, 0xFFC4}, // F7 + {0x64, 0xFFC5}, // F8 + {0x65, 0xFFC6}, // F9 + {0x6D, 0xFFC7}, // F10 + {0x67, 0xFFC8}, // F11 + {0x6F, 0xFFC9}, // F12 + + // control keys + {0x35, 0xFF1B}, // Escape + {0x24, 0xFF0D}, // Enter + {0x31, 0x0020}, // Space + {0x33, 0xFF08}, // Backspace + {0x30, 0xFF09}, // Tab + {0x74, 0xFD1D}, // Print Screen + {0x72, 0xFF63}, // Insert + {0x75, 0xFFFF}, // Delete + {0x73, 0xFF50}, // Home + {0x77, 0xFF57}, // End + {0x79, 0xFF55}, // Page Up + {0x7A, 0xFF56}, // Page Down + + // arrow keys + {0x7B, 0xFF51}, // Left Arrow + {0x7C, 0xFF53}, // Right Arrow + {0x7E, 0xFF52}, // Up Arrow + {0x7D, 0xFF54}, // Down Arrow + + // numpad + {0x52, 0x0030}, // Numpad 0 + {0x53, 0x0031}, // Numpad 1 + {0x54, 0x0032}, // Numpad 2 + {0x55, 0x0033}, // Numpad 3 + {0x56, 0x0034}, // Numpad 4 + {0x57, 0x0035}, // Numpad 5 + {0x58, 0x0036}, // Numpad 6 + {0x59, 0x0037}, // Numpad 7 + {0x5B, 0x0038}, // Numpad 8 + {0x5C, 0x0039}, // Numpad 9 + {0x41, 0x003A}, // Numpad . + {0x4B, 0x002F}, // Numpad / + {0x43, 0x002A}, // Numpad * + {0x4E, 0x002D}, // Numpad - + {0x45, 0x002B}, // Numpad + + + // symbol keys + {0x29, 0x003B}, // ; (Semicolon) + {0x27, 0x0027}, // ' (Quote) + {0x32, 0x007E}, // ` (Backtick) + {0x2B, 0x002C}, // , (Comma) + {0x2F, 0x002E}, // . (Period) + {0x2C, 0x002F}, // / (Slash) + {0x2A, 0x005C}, // \ (Backslash) + {0x21, 0x005B}, // [ (Left Bracket) + {0x1E, 0x005D}, // ] (Right Bracket) + {0x1B, 0x002D}, // - (Minus) + {0x18, 0x003D}, // = (Equals) + + // modifier keys + {0x39, 0xFFE5}, // Caps Lock + {0x38, 0xFFE1}, // Shift (Left) + {0x3C, 0xFFE2}, // Shift (Right) + {0x3B, 0xFFE3}, // Control (Left) + {0x3E, 0xFFE4}, // Control (Right) + {0x3A, 0xFFE9}, // Alt (Left) + {0x3D, 0xFFEA}, // Alt (Right) + {0x37, 0xFFEB}, // Left Command (Windows key) + {0x36, 0xFFEC}, // Right Command }; // X11 KeySym to macOS CGKeyCode