replace std::variant::index
This commit is contained in:
parent
6ccf6cebd1
commit
d798bbf037
@ -349,7 +349,11 @@ public:
|
|||||||
//! Get the scancode of the corresponding keycode.
|
//! Get the scancode of the corresponding keycode.
|
||||||
virtual u32 getScancodeFromKey(const KeyCode &key) const
|
virtual u32 getScancodeFromKey(const KeyCode &key) const
|
||||||
{
|
{
|
||||||
return key.index() == 0 ? std::get<EKEY_CODE>(key) : KEY_KEY_CODES_COUNT + std::get<wchar_t>(key);
|
if (const auto *keycode = std::get_if<EKEY_CODE>(&key))
|
||||||
|
// treat KEY_UNKNOWN and KEY_KEY_CODES_COUNT as the same and return 0.
|
||||||
|
return KeyCode::isValid(*keycode) ? *keycode : 0;
|
||||||
|
const auto keychar = std::get<wchar_t>(key);
|
||||||
|
return keychar == 0 ? 0 : KEY_KEY_CODES_COUNT + keychar;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Get the keycode of the corresponding scancode.
|
//! Get the keycode of the corresponding scancode.
|
||||||
|
@ -223,10 +223,9 @@ int CIrrDeviceSDL::findCharToPassToIrrlicht(uint32_t sdlKey, EKEY_CODE irrlichtK
|
|||||||
u32 CIrrDeviceSDL::getScancodeFromKey(const KeyCode &key) const
|
u32 CIrrDeviceSDL::getScancodeFromKey(const KeyCode &key) const
|
||||||
{
|
{
|
||||||
u32 keynum = 0;
|
u32 keynum = 0;
|
||||||
if (key.index() == 0) {
|
if (const auto *keycode = std::get_if<EKEY_CODE>(&key)) {
|
||||||
auto keycode = std::get<EKEY_CODE>(key);
|
|
||||||
for (const auto &entry: KeyMap) {
|
for (const auto &entry: KeyMap) {
|
||||||
if (entry.second == keycode) {
|
if (entry.second == *keycode) {
|
||||||
keynum = entry.first;
|
keynum = entry.first;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,9 @@ static const table_key &lookup_keykey(irr::EKEY_CODE key)
|
|||||||
static const table_key &lookup_scancode(const u32 scancode)
|
static const table_key &lookup_scancode(const u32 scancode)
|
||||||
{
|
{
|
||||||
auto key = RenderingEngine::get_raw_device()->getKeyFromScancode(scancode);
|
auto key = RenderingEngine::get_raw_device()->getKeyFromScancode(scancode);
|
||||||
return key.index() == 0 ? lookup_keykey(std::get<irr::EKEY_CODE>(key)) : lookup_keychar(std::get<wchar_t>(key));
|
return std::holds_alternative<EKEY_CODE>(key) ?
|
||||||
|
lookup_keykey(std::get<irr::EKEY_CODE>(key)) :
|
||||||
|
lookup_keychar(std::get<wchar_t>(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyPress::KeyPress(std::string_view name)
|
KeyPress::KeyPress(std::string_view name)
|
||||||
|
Loading…
Reference in New Issue
Block a user