Use Key enum instead of plain integers

This commit is contained in:
Aaron Franke
2021-06-20 13:12:33 -04:00
parent 18bd0fee5a
commit fa3a32a2d6
43 changed files with 173 additions and 102 deletions

View File

@ -46,6 +46,7 @@ enum {
};
enum Key {
KEY_NONE = 0,
/* CURSOR/FUNCTION/BROWSER/MULTIMEDIA/MISC KEYS */
KEY_ESCAPE = SPKEY | 0x01,
KEY_TAB = SPKEY | 0x02,
@ -314,6 +315,52 @@ enum KeyModifierMask {
// bit 31 can't be used because variant uses regular 32 bits int as datatype
};
// To avoid having unnecessary operators, only define the ones that are needed.
inline Key operator-(uint32_t a, Key b) {
return (Key)(a - (uint32_t)b);
}
inline Key &operator-=(Key &a, int b) {
return (Key &)((int &)a -= b);
}
inline Key operator+(Key a, Key b) {
return (Key)((int)a - (int)b);
}
inline Key &operator|=(Key &a, Key b) {
return (Key &)((int &)a |= (int)b);
}
inline Key &operator|=(Key &a, KeyModifierMask b) {
return (Key &)((int &)a |= (int)b);
}
inline Key operator|(Key a, KeyModifierMask b) {
return (Key)((int)a | (int)b);
}
inline Key operator&(Key a, KeyModifierMask b) {
return (Key)((int)a & (int)b);
}
inline Key operator+(KeyModifierMask a, Key b) {
return (Key)((int)a + (int)b);
}
inline Key operator|(KeyModifierMask a, Key b) {
return (Key)((int)a | (int)b);
}
inline KeyModifierMask operator+(KeyModifierMask a, KeyModifierMask b) {
return (KeyModifierMask)((int)a + (int)b);
}
inline KeyModifierMask operator|(KeyModifierMask a, KeyModifierMask b) {
return (KeyModifierMask)((int)a | (int)b);
}
String keycode_get_string(uint32_t p_code);
bool keycode_has_unicode(uint32_t p_keycode);
int find_keycode(const String &p_code);