mirror of
https://github.com/luanti-org/luanti.git
synced 2025-07-02 16:38:41 +00:00
SDL: Use scancodes for keybindings (#14964)
Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com> Co-authored-by: sfan5 <sfan5@live.de> Co-authored-by: SmallJoker <SmallJoker@users.noreply.github.com>
This commit is contained in:
parent
e0378737b7
commit
cc65c8bd70
13 changed files with 509 additions and 369 deletions
|
@ -3,6 +3,7 @@
|
|||
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
||||
|
||||
#pragma once
|
||||
#include <variant>
|
||||
|
||||
namespace irr
|
||||
{
|
||||
|
@ -182,4 +183,30 @@ enum EKEY_CODE
|
|||
KEY_KEY_CODES_COUNT = 0x100 // this is not a key, but the amount of keycodes there are.
|
||||
};
|
||||
|
||||
// A Keycode is either a character produced by the key or one of Irrlicht's codes (EKEY_CODE)
|
||||
class Keycode : public std::variant<EKEY_CODE, wchar_t> {
|
||||
using super = std::variant<EKEY_CODE, wchar_t>;
|
||||
public:
|
||||
Keycode() : Keycode(KEY_KEY_CODES_COUNT, L'\0') {}
|
||||
|
||||
Keycode(EKEY_CODE code, wchar_t ch)
|
||||
{
|
||||
emplace(code, ch);
|
||||
}
|
||||
|
||||
using super::emplace;
|
||||
void emplace(EKEY_CODE code, wchar_t ch)
|
||||
{
|
||||
if (isValid(code))
|
||||
emplace<EKEY_CODE>(code);
|
||||
else
|
||||
emplace<wchar_t>(ch);
|
||||
}
|
||||
|
||||
static bool isValid(EKEY_CODE code)
|
||||
{
|
||||
return code > 0 && code < KEY_KEY_CODES_COUNT;
|
||||
}
|
||||
};
|
||||
|
||||
} // end namespace irr
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue