diff options
| author | Juan Linietsky | 2017-11-21 14:25:09 -0300 |
|---|---|---|
| committer | GitHub | 2017-11-21 14:25:09 -0300 |
| commit | 30dadb12281924ccb59efc8df4b3b9ee68c6e3a4 (patch) | |
| tree | 3ce30ebc24eeaa39ba673d46d330673a838e99ad /core/os/keyboard.cpp | |
| parent | 20b07a1fb55c31d326c3f9c36d1276eb1bcf15e6 (diff) | |
| parent | 524ffc971239e4826a2ee8e3df1d9af800ed5bba (diff) | |
| download | godot-30dadb12281924ccb59efc8df4b3b9ee68c6e3a4.tar.gz godot-30dadb12281924ccb59efc8df4b3b9ee68c6e3a4.tar.zst godot-30dadb12281924ccb59efc8df4b3b9ee68c6e3a4.zip | |
Diffstat (limited to 'core/os/keyboard.cpp')
| -rw-r--r-- | core/os/keyboard.cpp | 43 |
1 files changed, 35 insertions, 8 deletions
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp index edf4f3e2f..dead3b6ac 100644 --- a/core/os/keyboard.cpp +++ b/core/os/keyboard.cpp @@ -60,7 +60,11 @@ static const _KeyCodeText _keycodes[] = { {KEY_PAGEDOWN ,"PageDown"}, {KEY_SHIFT ,"Shift"}, {KEY_CONTROL ,"Control"}, +#ifdef OSX_ENABLED + {KEY_META ,"Command"}, +#else {KEY_META ,"Meta"}, +#endif {KEY_ALT ,"Alt"}, {KEY_CAPSLOCK ,"CapsLock"}, {KEY_NUMLOCK ,"NumLock"}, @@ -390,14 +394,22 @@ bool keycode_has_unicode(uint32_t p_keycode) { String keycode_get_string(uint32_t p_code) { String codestr; - if (p_code & KEY_MASK_SHIFT) - codestr += "Shift+"; - if (p_code & KEY_MASK_ALT) - codestr += "Alt+"; - if (p_code & KEY_MASK_CTRL) - codestr += "Ctrl+"; - if (p_code & KEY_MASK_META) - codestr += "Meta+"; + if (p_code & KEY_MASK_SHIFT) { + codestr += find_keycode_name(KEY_SHIFT); + codestr += "+"; + } + if (p_code & KEY_MASK_ALT) { + codestr += find_keycode_name(KEY_ALT); + codestr += "+"; + } + if (p_code & KEY_MASK_CTRL) { + codestr += find_keycode_name(KEY_CONTROL); + codestr += "+"; + } + if (p_code & KEY_MASK_META) { + codestr += find_keycode_name(KEY_META); + codestr += "+"; + } p_code &= KEY_CODE_MASK; @@ -433,6 +445,21 @@ int find_keycode(const String &p_code) { return 0; } +const char *find_keycode_name(int p_keycode) { + + const _KeyCodeText *kct = &_keycodes[0]; + + while (kct->text) { + + if (kct->code == p_keycode) { + return kct->text; + } + kct++; + } + + return ""; +} + struct _KeyCodeReplace { int from; int to; |
