Commit | Line | Data |
---|---|---|
d42e7319 JB |
1 | /* |
2 | * Copyright (C) 2013 Canonical Ltd | |
3 | * | |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
5 | * you may not use this file except in compliance with the License. | |
6 | * You may obtain a copy of the License at | |
7 | * | |
8 | * http://www.apache.org/licenses/LICENSE-2.0 | |
9 | * | |
10 | * Unless required by applicable law or agreed to in writing, software | |
11 | * distributed under the License is distributed on an "AS IS" BASIS, | |
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
13 | * See the License for the specific language governing permissions and | |
14 | * limitations under the License. | |
15 | * | |
16 | * Authored by: Thomas Voss <thomas.voss@canonical.com> | |
17 | */ | |
18 | ||
19 | #ifndef INPUT_STACK_COMPATIBILITY_LAYER_FLAGS_KEY_H_ | |
20 | #define INPUT_STACK_COMPATIBILITY_LAYER_FLAGS_KEY_H_ | |
21 | ||
22 | #ifdef __cplusplus | |
23 | extern "C" { | |
24 | #endif | |
25 | ||
26 | /* | |
27 | * Key states (may be returned by queries about the current state of a | |
28 | * particular key code, scan code or switch). | |
29 | */ | |
30 | enum { | |
31 | /* The key state is unknown or the requested key itself is not supported. */ | |
32 | ICSL_KEY_STATE_UNKNOWN = -1, | |
33 | ||
34 | /* The key is up. */ | |
35 | ICSL_KEY_STATE_UP = 0, | |
36 | ||
37 | /* The key is down. */ | |
38 | ICSL_KEY_STATE_DOWN = 1, | |
39 | ||
40 | /* The key is down but is a virtual key press that is being emulated by the system. */ | |
41 | ICSL_KEY_STATE_VIRTUAL = 2 | |
42 | }; | |
43 | ||
44 | /* | |
45 | * Meta key / modifer state. | |
46 | */ | |
47 | enum | |
48 | { | |
49 | /* No meta keys are pressed. */ | |
50 | ISCL_META_NONE = 0, | |
51 | ||
52 | /* This mask is used to check whether one of the ALT meta keys is pressed. */ | |
53 | ISCL_META_ALT_ON = 0x02, | |
54 | ||
55 | /* This mask is used to check whether the left ALT meta key is pressed. */ | |
56 | ISCL_META_ALT_LEFT_ON = 0x10, | |
57 | ||
58 | /* This mask is used to check whether the right ALT meta key is pressed. */ | |
59 | ISCL_META_ALT_RIGHT_ON = 0x20, | |
60 | ||
61 | /* This mask is used to check whether one of the SHIFT meta keys is pressed. */ | |
62 | ISCL_META_SHIFT_ON = 0x01, | |
63 | ||
64 | /* This mask is used to check whether the left SHIFT meta key is pressed. */ | |
65 | ISCL_META_SHIFT_LEFT_ON = 0x40, | |
66 | ||
67 | /* This mask is used to check whether the right SHIFT meta key is pressed. */ | |
68 | ISCL_META_SHIFT_RIGHT_ON = 0x80, | |
69 | ||
70 | /* This mask is used to check whether the SYM meta key is pressed. */ | |
71 | ISCL_META_SYM_ON = 0x04, | |
72 | ||
73 | /* This mask is used to check whether the FUNCTION meta key is pressed. */ | |
74 | ISCL_META_FUNCTION_ON = 0x08, | |
75 | ||
76 | /* This mask is used to check whether one of the CTRL meta keys is pressed. */ | |
77 | ISCL_META_CTRL_ON = 0x1000, | |
78 | ||
79 | /* This mask is used to check whether the left CTRL meta key is pressed. */ | |
80 | ISCL_META_CTRL_LEFT_ON = 0x2000, | |
81 | ||
82 | /* This mask is used to check whether the right CTRL meta key is pressed. */ | |
83 | ISCL_META_CTRL_RIGHT_ON = 0x4000, | |
84 | ||
85 | /* This mask is used to check whether one of the META meta keys is pressed. */ | |
86 | ISCL_META_META_ON = 0x10000, | |
87 | ||
88 | /* This mask is used to check whether the left META meta key is pressed. */ | |
89 | ISCL_META_META_LEFT_ON = 0x20000, | |
90 | ||
91 | /* This mask is used to check whether the right META meta key is pressed. */ | |
92 | ISCL_META_META_RIGHT_ON = 0x40000, | |
93 | ||
94 | /* This mask is used to check whether the CAPS LOCK meta key is on. */ | |
95 | ISCL_META_CAPS_LOCK_ON = 0x100000, | |
96 | ||
97 | /* This mask is used to check whether the NUM LOCK meta key is on. */ | |
98 | ISCL_META_NUM_LOCK_ON = 0x200000, | |
99 | ||
100 | /* This mask is used to check whether the SCROLL LOCK meta key is on. */ | |
101 | ISCL_META_SCROLL_LOCK_ON = 0x400000, | |
102 | }; | |
103 | ||
104 | /* | |
105 | * Key event actions. | |
106 | */ | |
107 | enum | |
108 | { | |
109 | /* The key has been pressed down. */ | |
110 | ISCL_KEY_EVENT_ACTION_DOWN = 0, | |
111 | ||
112 | /* The key has been released. */ | |
113 | ISCL_KEY_EVENT_ACTION_UP = 1, | |
114 | ||
115 | /* Multiple duplicate key events have occurred in a row, or a complex string is | |
116 | * being delivered. The repeat_count property of the key event contains the number | |
117 | * of times the given key code should be executed. | |
118 | */ | |
119 | ISCL_KEY_EVENT_ACTION_MULTIPLE = 2 | |
120 | }; | |
121 | ||
122 | /* | |
123 | * Key event flags. | |
124 | */ | |
125 | enum | |
126 | { | |
127 | /* This mask is set if the device woke because of this key event. */ | |
128 | ISCL_KEY_EVENT_FLAG_WOKE_HERE = 0x1, | |
129 | ||
130 | /* This mask is set if the key event was generated by a software keyboard. */ | |
131 | ISCL_KEY_EVENT_FLAG_SOFT_KEYBOARD = 0x2, | |
132 | ||
133 | /* This mask is set if we don't want the key event to cause us to leave touch mode. */ | |
134 | ISCL_KEY_EVENT_FLAG_KEEP_TOUCH_MODE = 0x4, | |
135 | ||
136 | /* This mask is set if an event was known to come from a trusted part | |
137 | * of the system. That is, the event is known to come from the user, | |
138 | * and could not have been spoofed by a third party component. */ | |
139 | ISCL_KEY_EVENT_FLAG_FROM_SYSTEM = 0x8, | |
140 | ||
141 | /* This mask is used for compatibility, to identify enter keys that are | |
142 | * coming from an IME whose enter key has been auto-labelled "next" or | |
143 | * "done". This allows TextView to dispatch these as normal enter keys | |
144 | * for old applications, but still do the appropriate action when | |
145 | * receiving them. */ | |
146 | ISCL_KEY_EVENT_FLAG_EDITOR_ACTION = 0x10, | |
147 | ||
148 | /* When associated with up key events, this indicates that the key press | |
149 | * has been canceled. Typically this is used with virtual touch screen | |
150 | * keys, where the user can slide from the virtual key area on to the | |
151 | * display: in that case, the application will receive a canceled up | |
152 | * event and should not perform the action normally associated with the | |
153 | * key. Note that for this to work, the application can not perform an | |
154 | * action for a key until it receives an up or the long press timeout has | |
155 | * expired. */ | |
156 | ISCL_KEY_EVENT_FLAG_CANCELED = 0x20, | |
157 | ||
158 | /* This key event was generated by a virtual (on-screen) hard key area. | |
159 | * Typically this is an area of the touchscreen, outside of the regular | |
160 | * display, dedicated to "hardware" buttons. */ | |
161 | ISCL_KEY_EVENT_FLAG_VIRTUAL_HARD_KEY = 0x40, | |
162 | ||
163 | /* This flag is set for the first key repeat that occurs after the | |
164 | * long press timeout. */ | |
165 | ISCL_KEY_EVENT_FLAG_LONG_PRESS = 0x80, | |
166 | ||
167 | /* Set when a key event has ISCL_KEY_EVENT_FLAG_CANCELED set because a long | |
168 | * press action was executed while it was down. */ | |
169 | ISCL_KEY_EVENT_FLAG_CANCELED_LONG_PRESS = 0x100, | |
170 | ||
171 | /* Set for ISCL_KEY_EVENT_ACTION_UP when this event's key code is still being | |
172 | * tracked from its initial down. That is, somebody requested that tracking | |
173 | * started on the key down and a long press has not caused | |
174 | * the tracking to be canceled. */ | |
175 | ISCL_KEY_EVENT_FLAG_TRACKING = 0x200, | |
176 | ||
177 | /* Set when a key event has been synthesized to implement default behavior | |
178 | * for an event that the application did not handle. | |
179 | * Fallback key events are generated by unhandled trackball motions | |
180 | * (to emulate a directional keypad) and by certain unhandled key presses | |
181 | * that are declared in the key map (such as special function numeric keypad | |
182 | * keys when numlock is off). */ | |
183 | ISCL_KEY_EVENT_FLAG_FALLBACK = 0x400, | |
184 | }; | |
185 | ||
186 | #ifdef __cplusplus | |
187 | } | |
188 | #endif | |
189 | ||
190 | #endif // INPUT_STACK_COMPATIBILITY_LAYER_FLAGS_KEY_H_ |