1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-11 13:10:58 +00:00

Cleanup and unify keyboard input.

- Unify keycode values (secondary label printed on a key), remove unused hardcoded Latin-1 codes.
- Unify IME behaviour, add inline composition string display on Windows and X11.
- Add key_label (localized label printed on a key) value to the key events, and allow mapping actions to the unshifted Unicode events.
- Add support for physical keyboard (Bluetooth or Sidecar) handling on iOS.
- Add support for media key handling on macOS.

Co-authored-by: Raul Santos <raulsntos@gmail.com>
This commit is contained in:
bruvzg
2022-12-11 01:21:22 +02:00
parent 9937915ad7
commit daad4aed62
61 changed files with 4464 additions and 3655 deletions

View File

@@ -274,14 +274,9 @@ void register_global_constants() {
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_7);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_8);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KP_9);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, SUPER_L);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, SUPER_R);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MENU);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, HYPER_L);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, HYPER_R);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, HYPER);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, HELP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, DIRECTION_L);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, DIRECTION_R);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BACK);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, FORWARD);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, STOP);
@@ -289,11 +284,6 @@ void register_global_constants() {
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, VOLUMEDOWN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, VOLUMEMUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, VOLUMEUP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BASSBOOST);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BASSUP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BASSDOWN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, TREBLEUP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, TREBLEDOWN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MEDIAPLAY);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MEDIASTOP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MEDIAPREVIOUS);
@@ -392,72 +382,12 @@ void register_global_constants() {
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BAR);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BRACERIGHT);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ASCIITILDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, NOBREAKSPACE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, EXCLAMDOWN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, CENT);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, STERLING);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, CURRENCY);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, YEN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, BROKENBAR);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, SECTION);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, DIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, COPYRIGHT);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ORDFEMININE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, GUILLEMOTLEFT);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, NOTSIGN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, HYPHEN);
BIND_CORE_ENUM_CLASS_CONSTANT_CUSTOM(Key, KEY_REGISTERED, KEY_REGISTERED);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MACRON);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, DEGREE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, PLUSMINUS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, TWOSUPERIOR);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, THREESUPERIOR);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MU);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, PARAGRAPH);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, PERIODCENTERED);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, CEDILLA);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ONESUPERIOR);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MASCULINE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, GUILLEMOTRIGHT);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ONEQUARTER);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ONEHALF);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, THREEQUARTERS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, QUESTIONDOWN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, AGRAVE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, AACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ACIRCUMFLEX);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ATILDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ADIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ARING);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, AE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, CCEDILLA);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, EGRAVE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, EACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ECIRCUMFLEX);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, EDIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, IGRAVE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, IACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ICIRCUMFLEX);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, IDIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ETH);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, NTILDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, OGRAVE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, OACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, OCIRCUMFLEX);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, OTILDE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, ODIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, MULTIPLY);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, OOBLIQUE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, UGRAVE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, UACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, UCIRCUMFLEX);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, UDIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, YACUTE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, THORN);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, SSHARP);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, DIVISION);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, YDIAERESIS);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, GLOBE);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, KEYBOARD);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, JIS_EISU);
BIND_CORE_ENUM_CLASS_CONSTANT(Key, KEY, JIS_KANA);
BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(KeyModifierMask, KEY_CODE_MASK, CODE_MASK);
BIND_CORE_BITFIELD_CLASS_FLAG_CUSTOM(KeyModifierMask, KEY_MODIFIER_MASK, MODIFIER_MASK);