blob: 94281e4bcf979ab0b063f77242c234ff261ee16f [file] [log] [blame] [edit]
#ifndef _RIVE_FOCUSABLE_HPP_
#define _RIVE_FOCUSABLE_HPP_
#include "rive/enum_bitset.hpp"
namespace rive
{
enum class KeyModifiers : uint8_t
{
none = 0,
shift = 1 << 0,
ctrl = 1 << 1,
alt = 1 << 2,
meta = 1 << 3
};
inline KeyModifiers operator|(const KeyModifiers& a, const KeyModifiers& b)
{
return (KeyModifiers)((uint8_t)a | (uint8_t)b);
}
inline KeyModifiers operator&(const KeyModifiers& a, const KeyModifiers& b)
{
return (KeyModifiers)((uint8_t)a & (uint8_t)b);
}
enum class Key : uint16_t
{
space = 32,
apostrophe = 39, // '
comma = 44, // ,
minus = 45, // -
period = 46, // .
slash = 47, // /
key0 = 48,
key1 = 49,
key2 = 50,
key3 = 51,
key4 = 52,
key5 = 53,
key6 = 54,
key7 = 55,
key8 = 56,
key9 = 57,
semicolon = 59, // ;
equal = 61, // =
a = 65,
b = 66,
c = 67,
d = 68,
e = 69,
f = 70,
g = 71,
h = 72,
i = 73,
j = 74,
k = 75,
l = 76,
m = 77,
n = 78,
o = 79,
p = 80,
q = 81,
r = 82,
s = 83,
t = 84,
u = 85,
v = 86,
w = 87,
x = 88,
y = 89,
z = 90,
leftBracket = 91, // [
backslash = 92, // "\"
rightBracket = 93, // ]
graveAccent = 96, // `
world1 = 161, // non-US #1
world2 = 162, // non-US #2
escape = 256,
enter = 257,
tab = 258,
backspace = 259,
insert = 260,
deleteKey = 261,
right = 262,
left = 263,
down = 264,
up = 265,
pageUp = 266,
pageDown = 267,
home = 268,
end = 269,
capsLock = 280,
scrollLock = 281,
numLock = 282,
printScreen = 283,
pause = 284,
f1 = 290,
f2 = 291,
f3 = 292,
f4 = 293,
f5 = 294,
f6 = 295,
f7 = 296,
f8 = 297,
f9 = 298,
f10 = 299,
f11 = 300,
f12 = 301,
f13 = 302,
f14 = 303,
f15 = 304,
f16 = 305,
f17 = 306,
f18 = 307,
f19 = 308,
f20 = 309,
f21 = 310,
f22 = 311,
f23 = 312,
f24 = 313,
f25 = 314,
kp0 = 320,
kp1 = 321,
kp2 = 322,
kp3 = 323,
kp4 = 324,
kp5 = 325,
kp6 = 326,
kp7 = 327,
kp8 = 328,
kp9 = 329,
kpDecimal = 330,
kpDivide = 331,
kpMultiply = 332,
kpSubtract = 333,
kpAdd = 334,
kpEnter = 335,
kpEqual = 336,
leftShift = 340,
leftControl = 341,
leftAlt = 342,
leftSuper = 343,
rightShift = 344,
rightControl = 345,
rightAlt = 346,
rightSuper = 347,
menu = 348,
};
class Focusable
{
public:
virtual bool keyInput(Key value,
KeyModifiers modifiers,
bool isPressed,
bool isRepeat) = 0;
virtual bool textInput(const std::string& text) = 0;
};
} // namespace rive
#endif