Merge pull request #26729 from bruvzg/macos_num_fix
[macOS] Fixes NumPad keys detection, adds some missing key mappings.
This commit is contained in:
commit
83cb9284f5
1 changed files with 50 additions and 15 deletions
|
@ -765,9 +765,41 @@ static void _mouseDownEvent(NSEvent *event, int index, int mask, bool pressed) {
|
|||
[super updateTrackingAreas];
|
||||
}
|
||||
|
||||
static bool isNumpadKey(unsigned int key) {
|
||||
|
||||
static const unsigned int table[] = {
|
||||
0x41, /* kVK_ANSI_KeypadDecimal */
|
||||
0x43, /* kVK_ANSI_KeypadMultiply */
|
||||
0x45, /* kVK_ANSI_KeypadPlus */
|
||||
0x47, /* kVK_ANSI_KeypadClear */
|
||||
0x4b, /* kVK_ANSI_KeypadDivide */
|
||||
0x4c, /* kVK_ANSI_KeypadEnter */
|
||||
0x4e, /* kVK_ANSI_KeypadMinus */
|
||||
0x51, /* kVK_ANSI_KeypadEquals */
|
||||
0x52, /* kVK_ANSI_Keypad0 */
|
||||
0x53, /* kVK_ANSI_Keypad1 */
|
||||
0x54, /* kVK_ANSI_Keypad2 */
|
||||
0x55, /* kVK_ANSI_Keypad3 */
|
||||
0x56, /* kVK_ANSI_Keypad4 */
|
||||
0x57, /* kVK_ANSI_Keypad5 */
|
||||
0x58, /* kVK_ANSI_Keypad6 */
|
||||
0x59, /* kVK_ANSI_Keypad7 */
|
||||
0x5b, /* kVK_ANSI_Keypad8 */
|
||||
0x5c, /* kVK_ANSI_Keypad9 */
|
||||
0x5f, /* kVK_JIS_KeypadComma */
|
||||
0x00
|
||||
};
|
||||
for (int i = 0; table[i] != 0; i++) {
|
||||
if (key == table[i])
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Translates a OS X keycode to a Godot keycode
|
||||
//
|
||||
static int translateKey(unsigned int key) {
|
||||
|
||||
// Keyboard symbol translation table
|
||||
static const unsigned int table[128] = {
|
||||
/* 00 */ KEY_A,
|
||||
|
@ -780,7 +812,7 @@ static int translateKey(unsigned int key) {
|
|||
/* 07 */ KEY_X,
|
||||
/* 08 */ KEY_C,
|
||||
/* 09 */ KEY_V,
|
||||
/* 0a */ KEY_UNKNOWN,
|
||||
/* 0a */ KEY_SECTION, /* ISO Section */
|
||||
/* 0b */ KEY_B,
|
||||
/* 0c */ KEY_Q,
|
||||
/* 0d */ KEY_W,
|
||||
|
@ -834,7 +866,7 @@ static int translateKey(unsigned int key) {
|
|||
/* 3d */ KEY_ALT,
|
||||
/* 3e */ KEY_CONTROL,
|
||||
/* 3f */ KEY_UNKNOWN, /* Function */
|
||||
/* 40 */ KEY_UNKNOWN,
|
||||
/* 40 */ KEY_UNKNOWN, /* F17 */
|
||||
/* 41 */ KEY_KP_PERIOD,
|
||||
/* 42 */ KEY_UNKNOWN,
|
||||
/* 43 */ KEY_KP_MULTIPLY,
|
||||
|
@ -842,16 +874,16 @@ static int translateKey(unsigned int key) {
|
|||
/* 45 */ KEY_KP_ADD,
|
||||
/* 46 */ KEY_UNKNOWN,
|
||||
/* 47 */ KEY_NUMLOCK, /* Really KeypadClear... */
|
||||
/* 48 */ KEY_UNKNOWN, /* VolumeUp */
|
||||
/* 49 */ KEY_UNKNOWN, /* VolumeDown */
|
||||
/* 4a */ KEY_UNKNOWN, /* Mute */
|
||||
/* 48 */ KEY_VOLUMEUP, /* VolumeUp */
|
||||
/* 49 */ KEY_VOLUMEDOWN, /* VolumeDown */
|
||||
/* 4a */ KEY_VOLUMEMUTE, /* Mute */
|
||||
/* 4b */ KEY_KP_DIVIDE,
|
||||
/* 4c */ KEY_KP_ENTER,
|
||||
/* 4d */ KEY_UNKNOWN,
|
||||
/* 4e */ KEY_KP_SUBTRACT,
|
||||
/* 4f */ KEY_UNKNOWN,
|
||||
/* 50 */ KEY_UNKNOWN,
|
||||
/* 51 */ KEY_EQUAL, //wtf equal?
|
||||
/* 4f */ KEY_UNKNOWN, /* F18 */
|
||||
/* 50 */ KEY_UNKNOWN, /* F19 */
|
||||
/* 51 */ KEY_EQUAL, /* KeypadEqual */
|
||||
/* 52 */ KEY_KP_0,
|
||||
/* 53 */ KEY_KP_1,
|
||||
/* 54 */ KEY_KP_2,
|
||||
|
@ -860,27 +892,27 @@ static int translateKey(unsigned int key) {
|
|||
/* 57 */ KEY_KP_5,
|
||||
/* 58 */ KEY_KP_6,
|
||||
/* 59 */ KEY_KP_7,
|
||||
/* 5a */ KEY_UNKNOWN,
|
||||
/* 5a */ KEY_UNKNOWN, /* F20 */
|
||||
/* 5b */ KEY_KP_8,
|
||||
/* 5c */ KEY_KP_9,
|
||||
/* 5d */ KEY_UNKNOWN,
|
||||
/* 5e */ KEY_UNKNOWN,
|
||||
/* 5f */ KEY_UNKNOWN,
|
||||
/* 5d */ KEY_YEN, /* JIS Yen */
|
||||
/* 5e */ KEY_UNDERSCORE, /* JIS Underscore */
|
||||
/* 5f */ KEY_COMMA, /* JIS KeypadComma */
|
||||
/* 60 */ KEY_F5,
|
||||
/* 61 */ KEY_F6,
|
||||
/* 62 */ KEY_F7,
|
||||
/* 63 */ KEY_F3,
|
||||
/* 64 */ KEY_F8,
|
||||
/* 65 */ KEY_F9,
|
||||
/* 66 */ KEY_UNKNOWN,
|
||||
/* 66 */ KEY_UNKNOWN, /* JIS Eisu */
|
||||
/* 67 */ KEY_F11,
|
||||
/* 68 */ KEY_UNKNOWN,
|
||||
/* 68 */ KEY_UNKNOWN, /* JIS Kana */
|
||||
/* 69 */ KEY_F13,
|
||||
/* 6a */ KEY_F16,
|
||||
/* 6b */ KEY_F14,
|
||||
/* 6c */ KEY_UNKNOWN,
|
||||
/* 6d */ KEY_F10,
|
||||
/* 6e */ KEY_UNKNOWN,
|
||||
/* 6e */ KEY_MENU,
|
||||
/* 6f */ KEY_F12,
|
||||
/* 70 */ KEY_UNKNOWN,
|
||||
/* 71 */ KEY_F15,
|
||||
|
@ -971,6 +1003,9 @@ static const _KeyCodeMap _keycodes[55] = {
|
|||
|
||||
static int remapKey(unsigned int key) {
|
||||
|
||||
if (isNumpadKey(key))
|
||||
return translateKey(key);
|
||||
|
||||
TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource();
|
||||
if (!currentKeyboard)
|
||||
return translateKey(key);
|
||||
|
|
Loading…
Reference in a new issue