Visual Computing Library
Loading...
Searching...
No Matches
input.h
1/*****************************************************************************
2 * VCLib *
3 * Visual Computing Library *
4 * *
5 * Copyright(C) 2021-2025 *
6 * Visual Computing Lab *
7 * ISTI - Italian National Research Council *
8 * *
9 * All rights reserved. *
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the Mozilla Public License Version 2.0 as published *
13 * by the Mozilla Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 * This program is distributed in the hope that it will be useful, *
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
19 * Mozilla Public License Version 2.0 *
20 * (https://www.mozilla.org/en-US/MPL/2.0/) for more details. *
21 ****************************************************************************/
22
23#ifndef VCL_RENDER_INPUT_H
24#define VCL_RENDER_INPUT_H
25
26#include <vclib/space/core/bit_set.h>
27
28namespace vcl {
29
31{
32 enum Enum {
33 LEFT = 0,
34 RIGHT = 1,
35 MIDDLE = 2,
36 NO_BUTTON = 3,
37 };
38};
39
41{
42 enum Enum {
43 SHIFT = 0,
44 CONTROL = 1,
45 ALT = 2,
46 SUPER = 3,
47 NO_MODIFIER = 4,
48 };
49};
50
52
53struct Key
54{
55 enum Enum {
56 SPACE = 0x20,
57
58 _0 = 0x30,
59 _1 = 0x31,
60 _2 = 0x32,
61 _3 = 0x33,
62 _4 = 0x34,
63 _5 = 0x35,
64 _6 = 0x36,
65 _7 = 0x37,
66 _8 = 0x38,
67 _9 = 0x39,
68
69 A = 0x41,
70 B = 0x42,
71 C = 0x43,
72 D = 0x44,
73 E = 0x45,
74 F = 0x46,
75 G = 0x47,
76 H = 0x48,
77 I = 0x49,
78 J = 0x4a,
79 K = 0x4b,
80 L = 0x4c,
81 M = 0x4d,
82 N = 0x4e,
83 O = 0x4f,
84 P = 0x50,
85 Q = 0x51,
86 R = 0x52,
87 S = 0x53,
88 T = 0x54,
89 U = 0x55,
90 V = 0x56,
91 W = 0x57,
92 X = 0x58,
93 Y = 0x59,
94 Z = 0x5a,
95
96 LEFT = 0x01000012,
97 UP = 0x01000013,
98 RIGHT = 0x01000014,
99 DOWN = 0x01000015,
100
101 SHIFT = 0x01000020, // modifiers
102 CONTROL = 0x01000021,
103 SUPER = 0x01000022,
104 ALT = 0x01000023,
105
106 CAPS_LOCK = 0x01000024,
107 NUM_LOCK = 0x01000025,
108 SCROLL_LOCK = 0x01000026,
109
110 F1 = 0x01000030,
111 F2 = 0x01000031,
112 F3 = 0x01000032,
113 F4 = 0x01000033,
114 F5 = 0x01000034,
115 F6 = 0x01000035,
116 F7 = 0x01000036,
117 F8 = 0x01000037,
118 F9 = 0x01000038,
119 F10 = 0x01000039,
120 F11 = 0x0100003a,
121 F12 = 0x0100003b,
122
123 NP_0 = 0x010000a2,
124 NP_1 = 0x010000a3,
125 NP_2 = 0x010000a4,
126 NP_3 = 0x010000a5,
127 NP_4 = 0x010000a6,
128 NP_5 = 0x010000a7,
129 NP_6 = 0x010000a8,
130 NP_7 = 0x010000a9,
131 NP_8 = 0x010000aa,
132 NP_9 = 0x010000ab,
133
134 UNKNOWN = 0x01ffffff
135 };
136};
137
138inline bool isModifierKey(Key::Enum key)
139{
140 return key == Key::SHIFT || key == Key::CONTROL || key == Key::SUPER ||
141 key == Key::ALT;
142}
143
144inline Key::Enum modifierToKey(KeyModifier::Enum modifier)
145{
146 switch (modifier) {
147 case KeyModifier::SHIFT: return Key::SHIFT;
148 case KeyModifier::CONTROL: return Key::CONTROL;
149 case KeyModifier::SUPER: return Key::SUPER;
150 case KeyModifier::ALT: return Key::ALT;
151 default: return Key::UNKNOWN;
152 }
153}
154
155inline KeyModifier::Enum keyToModifier(Key::Enum key)
156{
157 switch (key) {
158 case Key::SHIFT: return KeyModifier::SHIFT;
159 case Key::CONTROL: return KeyModifier::CONTROL;
160 case Key::SUPER: return KeyModifier::SUPER;
161 case Key::ALT: return KeyModifier::ALT;
162 default: return KeyModifier::NO_MODIFIER;
163 }
164}
165
166} // namespace vcl
167
168#endif // VCL_RENDER_INPUT_H
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
Definition input.h:41
Definition input.h:54
Definition input.h:31