vigilem-evdev 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/ext/Rakefile +31 -0
  4. data/ext/rake_helper.rb +10 -0
  5. data/lib/vigilem/_evdev.rb +24 -0
  6. data/lib/vigilem/evdev.rb +14 -0
  7. data/lib/vigilem/evdev/at_exit.rb +8 -0
  8. data/lib/vigilem/evdev/context_filter.rb +92 -0
  9. data/lib/vigilem/evdev/demultiplexer.rb +26 -0
  10. data/lib/vigilem/evdev/device.rb +182 -0
  11. data/lib/vigilem/evdev/device_capabilities.rb +53 -0
  12. data/lib/vigilem/evdev/dom.rb +8 -0
  13. data/lib/vigilem/evdev/dom/adapter.rb +87 -0
  14. data/lib/vigilem/evdev/dom/code_values_tables.rb +172 -0
  15. data/lib/vigilem/evdev/dom/input_event_converter.rb +329 -0
  16. data/lib/vigilem/evdev/dom/input_event_utils.rb +48 -0
  17. data/lib/vigilem/evdev/dom/key_values_tables.rb +248 -0
  18. data/lib/vigilem/evdev/dom/kp_table.rb +52 -0
  19. data/lib/vigilem/evdev/focus_context_filter.rb +124 -0
  20. data/lib/vigilem/evdev/input_system_handler.rb +69 -0
  21. data/lib/vigilem/evdev/key_map_cache.rb +64 -0
  22. data/lib/vigilem/evdev/multiplexer.rb +73 -0
  23. data/lib/vigilem/evdev/system.rb +17 -0
  24. data/lib/vigilem/evdev/system/input.rb +1053 -0
  25. data/lib/vigilem/evdev/system/input/event.rb +4 -0
  26. data/lib/vigilem/evdev/system/input/input_event.rb +33 -0
  27. data/lib/vigilem/evdev/system/int.rb +9 -0
  28. data/lib/vigilem/evdev/system/ioctl.rb +143 -0
  29. data/lib/vigilem/evdev/system/keymap_loaders.rb +89 -0
  30. data/lib/vigilem/evdev/system/keymap_loaders/dumpkeys_loader.rb +98 -0
  31. data/lib/vigilem/evdev/system/keymap_loaders/kmap_loader.rb +74 -0
  32. data/lib/vigilem/evdev/system/posix_types.rb +5 -0
  33. data/lib/vigilem/evdev/system/time.rb +21 -0
  34. data/lib/vigilem/evdev/transfer_agent.rb +40 -0
  35. data/lib/vigilem/evdev/version.rb +5 -0
  36. data/lib/vigilem/evdev/vty_context_filter.rb +216 -0
  37. data/spec/after_each_example_group.rb +29 -0
  38. data/spec/delete_test_cache_after_group.rb +26 -0
  39. data/spec/spec_helper.rb +30 -0
  40. data/spec/vigilem/_evdev_spec.rb +11 -0
  41. data/spec/vigilem/evdev/context_filter_spec.rb +114 -0
  42. data/spec/vigilem/evdev/demultiplexer_spec.rb +44 -0
  43. data/spec/vigilem/evdev/device_capabilities_spec.rb +0 -0
  44. data/spec/vigilem/evdev/device_spec.rb +97 -0
  45. data/spec/vigilem/evdev/dom/adapter_spec.rb +5 -0
  46. data/spec/vigilem/evdev/dom/input_event_converter_spec.rb +253 -0
  47. data/spec/vigilem/evdev/dom/input_event_utils_spec.rb +23 -0
  48. data/spec/vigilem/evdev/focus_context_filter_spec.rb +112 -0
  49. data/spec/vigilem/evdev/input_system_handler_spec.rb +146 -0
  50. data/spec/vigilem/evdev/key_map_cache_spec.rb +65 -0
  51. data/spec/vigilem/evdev/multiplexer_spec.rb +55 -0
  52. data/spec/vigilem/evdev/system/input/input_event_spec.rb +33 -0
  53. data/spec/vigilem/evdev/system/input_spec.rb +274 -0
  54. data/spec/vigilem/evdev/system/int_spec.rb +30 -0
  55. data/spec/vigilem/evdev/system/ioctl_spec.rb +206 -0
  56. data/spec/vigilem/evdev/system/keymap_loaders/dumpkeys_loader_spec.rb +5 -0
  57. data/spec/vigilem/evdev/system/keymap_loaders/kmap_loader_spec.rb +24 -0
  58. data/spec/vigilem/evdev/system/keymap_loaders_spec.rb +22 -0
  59. data/spec/vigilem/evdev/system/posix_types_spec.rb +15 -0
  60. data/spec/vigilem/evdev/system/time_spec.rb +18 -0
  61. data/spec/vigilem/evdev/transfer_agent_spec.rb +57 -0
  62. data/spec/vigilem/evdev/vty_context_filter_spec.rb +282 -0
  63. metadata +286 -0
@@ -0,0 +1,69 @@
1
+ require 'vigilem/core/input_system_handler'
2
+
3
+ require 'vigilem/core/eventable'
4
+
5
+ require 'vigilem/evdev/system'
6
+
7
+ module Vigilem
8
+ module Evdev
9
+ #
10
+ # Handles input from Evdev InputSystem
11
+ class InputSystemHandler
12
+
13
+ include Core::InputSystemHandler
14
+
15
+ include Core::Eventable
16
+
17
+ #
18
+ # @param [Array] devices
19
+ # @return
20
+ def initialize(*devices)
21
+ self.class.lazy_require
22
+ initialize_input_system_handler
23
+
24
+ self.context_filters.concat([VTYContextFilter.new, FocusContextFilter.new_if_installed].compact)
25
+
26
+ @transfer_agent = Evdev::TransferAgent.acquire(:inputs => devices, :outputs => {self.buffer => {:func => :concat}})
27
+
28
+ @source = @transfer_agent
29
+
30
+ @link = self.buffer
31
+ end
32
+
33
+ #
34
+ # @return [TrueClass || FalseClass]
35
+ def self.lazy_require
36
+ unless @loaded
37
+ require 'vigilem/evdev/at_exit'
38
+ require 'vigilem/evdev/vty_context_filter'
39
+ require 'vigilem/evdev/focus_context_filter'
40
+ require 'vigilem/evdev/transfer_agent'
41
+ @loaded = true
42
+ end
43
+ @loaded
44
+ end
45
+
46
+ #
47
+ # @return [Array]
48
+ def context_filters
49
+ @context_filters ||= []
50
+ end
51
+
52
+ #
53
+ # @param [Integer] num, defaults to 1
54
+ # @return [Array<InputEvent>]
55
+ def read_many_nonblock(max_number_of_events=1)
56
+ synchronize {
57
+ raise ArgumentError, "max_number_of_events cannot be <= than 0:`#{max_number_of_events}'" if max_number_of_events.to_i <= 0
58
+ transfer_agent.relay(max_number_of_events) if buffer.empty?
59
+ events = buffer.shift(max_number_of_events)
60
+ context_filters.reduce(events) {|memo, ctx| ctx.process(*memo) }
61
+ }
62
+ end
63
+
64
+ private
65
+
66
+ attr_reader :transfer_agent
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,64 @@
1
+ require 'vigilem/_evdev'
2
+
3
+ require 'vigilem/support/key_map'
4
+
5
+ module Vigilem
6
+ module Evdev
7
+ #
8
+ #
9
+ module KeyMapCache
10
+
11
+ attr_accessor :key_map
12
+
13
+ attr_writer :default_filename, :default_path
14
+
15
+ #
16
+ # @return [String]
17
+ def default_filename
18
+ @default_filename ||= 'key_map_cache'
19
+ end
20
+
21
+ #
22
+ # @return [String]
23
+ def default_path
24
+ @default_path ||= begin
25
+ path = Vigilem::Evdev.data_dir
26
+ Dir.mkdir(path) unless test ?d, path
27
+ File.join(path, default_filename)
28
+ end
29
+ end
30
+
31
+ #
32
+ # @return [TrueClass || FalseClass]
33
+ def exists?
34
+ File.exists? default_path
35
+ end
36
+
37
+ #
38
+ # @param [String] path
39
+ # @return
40
+ def dump(key_map, path=default_path)
41
+ File.open(path, 'w') {|f| f.write(Marshal.dump(key_map)) }
42
+ end
43
+
44
+ #
45
+ # @param [String] path
46
+ # @return [KeyMap || nil]
47
+ def restore(path=default_path)
48
+ key_map = Marshal.restore(File.binread(path))
49
+ end
50
+
51
+ alias_method :cache, :dump
52
+
53
+ #
54
+ # @todo call KeymapLoaders
55
+ #def build
56
+ #
57
+ #end
58
+
59
+
60
+ extend self
61
+
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,73 @@
1
+ require 'vigilem/core/multiplexer'
2
+
3
+ require 'vigilem/core/buffer'
4
+
5
+ require 'vigilem/evdev/system/input/input_event'
6
+
7
+ module Vigilem
8
+ module Evdev
9
+ #
10
+ #
11
+ class Multiplexer
12
+
13
+ include Core::Multiplexer
14
+
15
+ Input = System::Input
16
+
17
+ InputEvent = Input::InputEvent
18
+
19
+ #
20
+ # [#from_string, #time, #size]
21
+ attr_reader :event_type
22
+
23
+ #
24
+ # @param [Array || IO] in_ios_or_arrays
25
+ # @param [Array || IO] out
26
+ def initialize(in_ios_or_arrays, out=nil)
27
+ @event_type = InputEvent
28
+ initialize_multiplexer(in_ios_or_arrays, out)
29
+ end
30
+
31
+ # calls the inputs and returns the converted array
32
+ # @param [Integer] num, how much to read from each stream
33
+ # @return [Array<InputEvent>]
34
+ def sweep(num)
35
+ [*ready?].map do |input|
36
+ begin
37
+ event_ary = [*if input.respond_to? :read_nonblock
38
+ events = event_type.from_string(input.read_nonblock(num * event_type.size))
39
+ events
40
+ else
41
+ input.slice!(num)
42
+ end]
43
+ event_ary.each do |event|
44
+ # @fixme kludge, &block?
45
+ if input.respond_to? :leds? and input.leds? and input.respond_to? :led_bits
46
+ event.leds = input.led_bits
47
+ end
48
+ event.metadata[:source] = input
49
+ end
50
+ rescue EOFError, Errno::EAGAIN => e
51
+
52
+ end
53
+ end.flatten.compact.sort {|a,b| a.time.to_f <=> b.time.to_f }
54
+ end
55
+
56
+ class << self
57
+ # @param [Array]
58
+ # @return [Evdev::Multiplexer]
59
+ def acquire(inputs=[])
60
+ if not @multiplexer
61
+ @multiplexer ||= new(inputs)
62
+ else
63
+ @multiplexer.add_inputs(*inputs)
64
+ @multiplexer
65
+ end
66
+ end
67
+
68
+ private :new
69
+ end
70
+
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,17 @@
1
+ require 'vigilem/core/system'
2
+
3
+ require 'vigilem/evdev/system/keymap_loaders'
4
+
5
+ module Vigilem
6
+ module Evdev
7
+ #
8
+ #
9
+ module System
10
+ include Core::System
11
+ extend Core::System
12
+ end
13
+ end
14
+ end
15
+
16
+ require 'vigilem/evdev/system/input'
17
+ require 'vigilem/evdev/system/ioctl'
@@ -0,0 +1,1053 @@
1
+ require 'vigilem/ffi'
2
+
3
+ require 'vigilem/evdev/system/int'
4
+
5
+ require 'vigilem/evdev/system/posix_types'
6
+
7
+ require 'vigilem/evdev/system/ioctl'
8
+
9
+ module Vigilem
10
+ module Evdev
11
+ module System
12
+ # @see http://lxr.free-electrons.com/source/include/linux/input.h?v=3.3
13
+ # @see http://lxr.free-electrons.com/source/include/linux/input.h
14
+ # @see http://lxr.free-electrons.com/source/include/uapi/linux/input.h
15
+ # @todo the formatting of this file is off
16
+ # @todo some of the items can be changed to FFI
17
+ # @todo consider the possibility of switching to RubyInline? - @see IOCTL.rb
18
+ module Input
19
+
20
+ include IOCTL
21
+ extend IOCTL
22
+
23
+ extend ::FFI::Library
24
+
25
+ # this is compatible to more, just haven't validated
26
+ def self.kernel_version
27
+ %w(3.16)
28
+ end
29
+
30
+ #
31
+ class FFTrigger < ::VFFIStruct
32
+ layout :button, :__u16,
33
+ :interval, :__u16
34
+ end
35
+
36
+ #
37
+ class FFReplay < ::VFFIStruct
38
+ layout :length, :__u16,
39
+ :delay, :__u16
40
+ end
41
+
42
+ #
43
+ class FFEnvelope < ::VFFIStruct
44
+ layout :attack_length, :__u16,
45
+ :attack_level, :__u16,
46
+ :fade_length, :__u16,
47
+ :fade_level, :__u16
48
+ end
49
+
50
+ #
51
+ class FFPeriodicEffect < ::VFFIStruct
52
+ packed = 4
53
+ layout :waveform, :__u16,
54
+ :period, :__u16,
55
+ :magnitude, :__s16,
56
+ :offset, :__s16,
57
+ :phase, :__u16,
58
+ :envelope, FFEnvelope, #:ff_envelope,
59
+ :custom_len, :__u32,
60
+ :custom_data, :pointer #:__s16
61
+ end
62
+
63
+ #
64
+ class FFEffect < ::VFFIStruct
65
+ layout_with_methods :type, :__u16,
66
+ :id, :__s16,
67
+ :direction, :__u16,
68
+ :trigger, FFTrigger, #:ff_trigger,
69
+ :replay, FFReplay, #:ff_replay,
70
+ :u, FFPeriodicEffect #:ff_periodic_effect
71
+ end
72
+
73
+ # these will be phased out and replaced by FFI
74
+ module Macros
75
+
76
+ def ff_effect
77
+ FFEffect
78
+ end
79
+
80
+ def _u8
81
+ @_u8 = 'C'
82
+ end
83
+
84
+ def _u16
85
+ @_u16= 'S'
86
+ end
87
+
88
+ def _u32
89
+ @_u32 ||= 'L'
90
+ end
91
+
92
+ def _s16
93
+ @_s16 ||= 's'
94
+ end
95
+
96
+ def struct_input_id
97
+ @struct_input_id ||= _u16 + '4'
98
+ end
99
+
100
+ def input_keymap_entry
101
+ @input_keymap_entry ||= _u8 + _u8 + _u16 + _u32 + (_u8 * 32)
102
+ end
103
+
104
+ def unsigned_int_2
105
+ @unsigned_int_2 ||= 'ii'
106
+ end
107
+
108
+ def int
109
+ @int ||= 'i'
110
+ end
111
+
112
+ def EVIOCGVERSION; _IOR('E', 0x01, int);end #/* get driver version */
113
+ def EVIOCGID; _IOR('E', 0x02, struct_input_id);end #/* get device ID */
114
+ def EVIOCGREP; _IOR('E', 0x03, unsigned_int_2);end #/* get repeat settings */
115
+ def EVIOCSREP; _IOW('E', 0x03, unsigned_int_2);end #/* set repeat settings */
116
+
117
+ def EVIOCGKEYCODE; _IOR('E', 0x04, unsigned_int_2);end #/* get keycode */
118
+ def EVIOCGKEYCODE_V2; _IOR('E', 0x04, input_keymap_entry);end
119
+ def EVIOCSKEYCODE; _IOW('E', 0x04, unsigned_int_2);end #/* set keycode */
120
+ def EVIOCSKEYCODE_V2; _IOW('E', 0x04, input_keymap_entry);end
121
+
122
+ def EVIOCGNAME(len); _IOC(_IOC_READ, 'E', 0x06, len);end #/* get device name */
123
+ def EVIOCGPHYS(len); _IOC(_IOC_READ, 'E', 0x07, len);end #/* get physical location */
124
+ def EVIOCGUNIQ(len); _IOC(_IOC_READ, 'E', 0x08, len);end #/* get unique identifier */
125
+ def EVIOCGPROP(len); _IOC(_IOC_READ, 'E', 0x09, len);end #/* get device properties */
126
+
127
+ def EVIOCGMTSLOTS(len); _IOC(_IOC_READ, 'E', 0x0a, len);end
128
+
129
+ def EVIOCGKEY(len); _IOC(_IOC_READ, 'E', 0x18, len);end #/* get global key state */
130
+ def EVIOCGLED(len); _IOC(_IOC_READ, 'E', 0x19, len);end #/* get all LEDs */
131
+ def EVIOCGSND(len); _IOC(_IOC_READ, 'E', 0x1a, len);end #/* get all sounds status */
132
+
133
+ def EVIOCGSW(len); _IOC(_IOC_READ, 'E', 0x1b, len);end #/* get all switch states */
134
+ def EVIOCGBIT(evtype, len=255); _IOC(_IOC_READ, 'E', 0x20 + evtype, len);end #/* get event bits */
135
+ def EVIOCGABS(abs); _IOR('E', 0x40 + abs, INT5);end #/* get abs value/limits */
136
+
137
+ def EVIOCSABS(abs); _IOW('E', 0xc0 + (abs), input_absinfo);end #/* set abs value/limits */
138
+
139
+ def EVIOCSFF; _IOC(_IOC_WRITE, 'E', 0x80, _size_of(ff_effect));end #/* send a force effect to a force feedback device */
140
+ def EVIOCRMFF; _IOW('E', 0x81, int);end #/* Erase a force effect */
141
+ def EVIOCGEFFECTS; _IOR('E', 0x84, int);end #/* Report number of effects playable at the same time */
142
+
143
+ def EVIOCGRAB; _IOW('E', 0x90, int);end #/* Grab/Release device */
144
+ def EVIOCREVOKE; _IOW('E', 0x91, int);end #/* Revoke device access */
145
+
146
+ def EVIOCSCLOCKID; _IOW('E', 0xa0, int);end #/* Set clockid to be used for timestamps */
147
+ end
148
+
149
+ include Macros
150
+ extend Macros
151
+
152
+ =begin
153
+ /*
154
+ * Device properties and quirks
155
+ */
156
+ =end
157
+ module DeviceProperties
158
+ INPUT_PROP_POINTER = 0x00 # /* needs a pointer */
159
+ INPUT_PROP_DIRECT = 0x01 # /* direct input devices */
160
+ INPUT_PROP_BUTTONPAD = 0x02 # /* has button(s) under pad */
161
+ INPUT_PROP_SEMI_MT = 0x03 # /* touch rectangle only */
162
+
163
+ INPUT_PROP_MAX = 0x1f
164
+ INPUT_PROP_CNT = (INPUT_PROP_MAX + 1)
165
+ end
166
+ include DeviceProperties
167
+ =begin
168
+ /*
169
+ * Event types
170
+ */
171
+ =end
172
+ module EventTypes
173
+ EV_SYN = 0x00
174
+ EV_KEY = 0x01
175
+ EV_REL = 0x02
176
+ EV_ABS = 0x03
177
+ EV_MSC = 0x04
178
+ EV_SW = 0x05
179
+ EV_LED = 0x11
180
+ EV_SND = 0x12
181
+ EV_REP = 0x14
182
+ EV_FF = 0x15
183
+ EV_PWR = 0x16
184
+ EV_FF_STATUS = 0x17
185
+ EV_MAX = 0x1f
186
+ EV_CNT = (EV_MAX+1)
187
+ end
188
+ include EventTypes
189
+ =begin
190
+ #
191
+ * Synchronization events.
192
+ */
193
+ =end
194
+ module SynchronizationEvents
195
+ SYN_REPORT = 0
196
+ SYN_CONFIG = 1
197
+ SYN_MT_REPORT = 2
198
+ SYN_DROPPED = 3
199
+ SYN_MAX = 0xf
200
+ SYN_CNT = (SYN_MAX+1)
201
+ end
202
+ include SynchronizationEvents
203
+ =begin
204
+ /*
205
+ * Keys and buttons
206
+ *
207
+ * Most of the keys/buttons are modeled after USB HUT = 1.12
208
+ * (see http://www.usb.org/developers/hidpage).
209
+ * Abbreviations in the comments:
210
+ * AC - Application Control
211
+ * AL - Application Launch Button
212
+ * SC - System Control
213
+ */
214
+ =end
215
+ module KeysAndButtons
216
+ KEY_RESERVED = 0
217
+ KEY_ESC = 1
218
+ KEY_1 = 2
219
+ KEY_2 = 3
220
+ KEY_3 = 4
221
+ KEY_4 = 5
222
+ KEY_5 = 6
223
+ KEY_6 = 7
224
+ KEY_7 = 8
225
+ KEY_8 = 9
226
+ KEY_9 = 10
227
+ KEY_0 = 11
228
+ KEY_MINUS = 12
229
+ KEY_EQUAL = 13
230
+ KEY_BACKSPACE = 14
231
+ KEY_TAB = 15
232
+ KEY_Q = 16
233
+ KEY_W = 17
234
+ KEY_E = 18
235
+ KEY_R = 19
236
+ KEY_T = 20
237
+ KEY_Y = 21
238
+ KEY_U = 22
239
+ KEY_I = 23
240
+ KEY_O = 24
241
+ KEY_P = 25
242
+ KEY_LEFTBRACE = 26
243
+ KEY_RIGHTBRACE = 27
244
+ KEY_ENTER = 28
245
+ KEY_LEFTCTRL = 29
246
+ KEY_A = 30
247
+ KEY_S = 31
248
+ KEY_D = 32
249
+ KEY_F = 33
250
+ KEY_G = 34
251
+ KEY_H = 35
252
+ KEY_J = 36
253
+ KEY_K = 37
254
+ KEY_L = 38
255
+ KEY_SEMICOLON = 39
256
+ KEY_APOSTROPHE = 40
257
+ KEY_GRAVE = 41
258
+ KEY_LEFTSHIFT = 42
259
+ KEY_BACKSLASH = 43
260
+ KEY_Z = 44
261
+ KEY_X = 45
262
+ KEY_C = 46
263
+ KEY_V = 47
264
+ KEY_B = 48
265
+ KEY_N = 49
266
+ KEY_M = 50
267
+ KEY_COMMA = 51
268
+ KEY_DOT = 52
269
+ KEY_SLASH = 53
270
+ KEY_RIGHTSHIFT = 54
271
+ KEY_KPASTERISK = 55
272
+ KEY_LEFTALT = 56
273
+ KEY_SPACE = 57
274
+ KEY_CAPSLOCK = 58
275
+ KEY_F1 = 59
276
+ KEY_F2 = 60
277
+ KEY_F3 = 61
278
+ KEY_F4 = 62
279
+ KEY_F5 = 63
280
+ KEY_F6 = 64
281
+ KEY_F7 = 65
282
+ KEY_F8 = 66
283
+ KEY_F9 = 67
284
+ KEY_F10 = 68
285
+ KEY_NUMLOCK = 69
286
+ KEY_SCROLLLOCK = 70
287
+ KEY_KP7 = 71
288
+ KEY_KP8 = 72
289
+ KEY_KP9 = 73
290
+ KEY_KPMINUS = 74
291
+ KEY_KP4 = 75
292
+ KEY_KP5 = 76
293
+ KEY_KP6 = 77
294
+ KEY_KPPLUS = 78
295
+ KEY_KP1 = 79
296
+ KEY_KP2 = 80
297
+ KEY_KP3 = 81
298
+ KEY_KP0 = 82
299
+ KEY_KPDOT = 83
300
+
301
+ KEY_ZENKAKUHANKAKU = 85
302
+ KEY_102ND = 86
303
+ KEY_F11 = 87
304
+ KEY_F12 = 88
305
+ KEY_RO = 89
306
+ KEY_KATAKANA = 90
307
+ KEY_HIRAGANA = 91
308
+ KEY_HENKAN = 92
309
+ KEY_KATAKANAHIRAGANA = 93
310
+ KEY_MUHENKAN = 94
311
+ KEY_KPJPCOMMA = 95
312
+ KEY_KPENTER = 96
313
+ KEY_RIGHTCTRL = 97
314
+ KEY_KPSLASH = 98
315
+ KEY_SYSRQ = 99
316
+ KEY_RIGHTALT = 100
317
+ KEY_LINEFEED = 101
318
+ KEY_HOME = 102
319
+ KEY_UP = 103
320
+ KEY_PAGEUP = 104
321
+ KEY_LEFT = 105
322
+ KEY_RIGHT = 106
323
+ KEY_END = 107
324
+ KEY_DOWN = 108
325
+ KEY_PAGEDOWN = 109
326
+ KEY_INSERT = 110
327
+ KEY_DELETE = 111
328
+ KEY_MACRO = 112
329
+ KEY_MUTE = 113
330
+ KEY_VOLUMEDOWN = 114
331
+ KEY_VOLUMEUP = 115
332
+ KEY_POWER = 116 # /* SC System Power Down */
333
+ KEY_KPEQUAL = 117
334
+ KEY_KPPLUSMINUS = 118
335
+ KEY_PAUSE = 119
336
+ KEY_SCALE = 120 # /* AL Compiz Scale (Expose) */
337
+
338
+ KEY_KPCOMMA = 121
339
+ KEY_HANGEUL = 122
340
+ KEY_HANGUEL = KEY_HANGEUL
341
+ KEY_HANJA = 123
342
+ KEY_YEN = 124
343
+ KEY_LEFTMETA = 125
344
+ KEY_RIGHTMETA = 126
345
+ KEY_COMPOSE = 127
346
+
347
+ KEY_STOP = 128 # /* AC Stop */
348
+ KEY_AGAIN = 129
349
+ KEY_PROPS = 130 # /* AC Properties */
350
+ KEY_UNDO = 131 # /* AC Undo */
351
+ KEY_FRONT = 132
352
+ KEY_COPY = 133 # /* AC Copy */
353
+ KEY_OPEN = 134 # /* AC Open */
354
+ KEY_PASTE = 135 # /* AC Paste */
355
+ KEY_FIND = 136 # /* AC Search */
356
+ KEY_CUT = 137 # /* AC Cut */
357
+ KEY_HELP = 138 # /* AL Integrated Help Center */
358
+ KEY_MENU = 139 # /* Menu (show menu) */
359
+ KEY_CALC = 140 # /* AL Calculator */
360
+ KEY_SETUP = 141
361
+ KEY_SLEEP = 142 # /* SC System Sleep */
362
+ KEY_WAKEUP = 143 # /* System Wake Up */
363
+ KEY_FILE = 144 # /* AL Local Machine Browser */
364
+ KEY_SENDFILE = 145
365
+ KEY_DELETEFILE = 146
366
+ KEY_XFER = 147
367
+ KEY_PROG1 = 148
368
+ KEY_PROG2 = 149
369
+ KEY_WWW = 150 # /* AL Internet Browser */
370
+ KEY_MSDOS = 151
371
+ KEY_COFFEE = 152 # /* AL Terminal Lock/Screensaver */
372
+ KEY_SCREENLOCK = KEY_COFFEE
373
+ KEY_DIRECTION = 153
374
+ KEY_CYCLEWINDOWS = 154
375
+ KEY_MAIL = 155
376
+ KEY_BOOKMARKS = 156 # /* AC Bookmarks */
377
+ KEY_COMPUTER = 157
378
+ KEY_BACK = 158 # /* AC Back */
379
+ KEY_FORWARD = 159 # /* AC Forward */
380
+ KEY_CLOSECD = 160
381
+ KEY_EJECTCD = 161
382
+ KEY_EJECTCLOSECD = 162
383
+ KEY_NEXTSONG = 163
384
+ KEY_PLAYPAUSE = 164
385
+ KEY_PREVIOUSSONG = 165
386
+ KEY_STOPCD = 166
387
+ KEY_RECORD = 167
388
+ KEY_REWIND = 168
389
+ KEY_PHONE = 169 # /* Media Select Telephone */
390
+ KEY_ISO = 170
391
+ KEY_CONFIG = 171 # /* AL Consumer Control Configuration */
392
+ KEY_HOMEPAGE = 172 # /* AC Home */
393
+ KEY_REFRESH = 173 # /* AC Refresh */
394
+ KEY_EXIT = 174 # /* AC Exit */
395
+ KEY_MOVE = 175
396
+ KEY_EDIT = 176
397
+ KEY_SCROLLUP = 177
398
+ KEY_SCROLLDOWN = 178
399
+ KEY_KPLEFTPAREN = 179
400
+ KEY_KPRIGHTPAREN = 180
401
+ KEY_NEW = 181 # /* AC New */
402
+ KEY_REDO = 182 # /* AC Redo/Repeat */
403
+
404
+ KEY_F13 = 183
405
+ KEY_F14 = 184
406
+ KEY_F15 = 185
407
+ KEY_F16 = 186
408
+ KEY_F17 = 187
409
+ KEY_F18 = 188
410
+ KEY_F19 = 189
411
+ KEY_F20 = 190
412
+ KEY_F21 = 191
413
+ KEY_F22 = 192
414
+ KEY_F23 = 193
415
+ KEY_F24 = 194
416
+
417
+ KEY_PLAYCD = 200
418
+ KEY_PAUSECD = 201
419
+ KEY_PROG3 = 202
420
+ KEY_PROG4 = 203
421
+ KEY_DASHBOARD = 204 # /* AL Dashboard */
422
+ KEY_SUSPEND = 205
423
+ KEY_CLOSE = 206 # /* AC Close */
424
+ KEY_PLAY = 207
425
+ KEY_FASTFORWARD = 208
426
+ KEY_BASSBOOST = 209
427
+ KEY_PRINT = 210 # /* AC Print */
428
+ KEY_HP = 211
429
+ KEY_CAMERA = 212
430
+ KEY_SOUND = 213
431
+ KEY_QUESTION = 214
432
+ KEY_EMAIL = 215
433
+ KEY_CHAT = 216
434
+ KEY_SEARCH = 217
435
+ KEY_CONNECT = 218
436
+ KEY_FINANCE = 219 # /* AL Checkbook/Finance */
437
+ KEY_SPORT = 220
438
+ KEY_SHOP = 221
439
+ KEY_ALTERASE = 222
440
+ KEY_CANCEL = 223 # /* AC Cancel */
441
+ KEY_BRIGHTNESSDOWN = 224
442
+ KEY_BRIGHTNESSUP = 225
443
+ KEY_MEDIA = 226
444
+
445
+ KEY_SWITCHVIDEOMODE = 227 # /* Cycle between available video
446
+ # outputs (Monitor/LCD/TV-out/etc) */
447
+ KEY_KBDILLUMTOGGLE = 228
448
+ KEY_KBDILLUMDOWN = 229
449
+ KEY_KBDILLUMUP = 230
450
+
451
+ KEY_SEND = 231 # /* AC Send */
452
+ KEY_REPLY = 232 # /* AC Reply */
453
+ KEY_FORWARDMAIL = 233 # /* AC Forward Msg */
454
+ KEY_SAVE = 234 # /* AC Save */
455
+ KEY_DOCUMENTS = 235
456
+
457
+ KEY_BATTERY = 236
458
+
459
+ KEY_BLUETOOTH = 237
460
+ KEY_WLAN = 238
461
+ KEY_UWB = 239
462
+
463
+ KEY_UNKNOWN = 240
464
+
465
+ KEY_VIDEO_NEXT = 241 # /* drive next video link */
466
+ KEY_VIDEO_PREV = 242 # /* drive previous video link */
467
+ KEY_BRIGHTNESS_CYCLE = 243 # /* brightness up, after max is min */
468
+ KEY_BRIGHTNESS_AUTO = 244 # /* Set Auto Brightness: manual
469
+ # brightness control is off,
470
+ # rely on ambient */
471
+ KEY_BRIGHTNESS_ZERO = KEY_BRIGHTNESS_AUTO
472
+ KEY_DISPLAY_OFF = 245 # /* display device to off state */
473
+
474
+ KEY_WWAN = 246 # /* Wireless WAN (LTE, UMTS, GSM, etc.) */
475
+ KEY_WIMAX = KEY_WWAN
476
+ KEY_RFKILL = 247 # /* Key that controls all radios */
477
+
478
+ KEY_MICMUTE = 248 # /* Mute / unmute the microphone */
479
+ =begin
480
+ /* Code = 255 is reserved for special needs of AT keyboard driver */
481
+ =end
482
+ BTN_MISC = 0x100
483
+ BTN_0 = 0x100
484
+ BTN_1 = 0x101
485
+ BTN_2 = 0x102
486
+ BTN_3 = 0x103
487
+ BTN_4 = 0x104
488
+ BTN_5 = 0x105
489
+ BTN_6 = 0x106
490
+ BTN_7 = 0x107
491
+ BTN_8 = 0x108
492
+ BTN_9 = 0x109
493
+
494
+ BTN_MOUSE = 0x110
495
+ BTN_LEFT = 0x110
496
+ BTN_RIGHT = 0x111
497
+ BTN_MIDDLE = 0x112
498
+ BTN_SIDE = 0x113
499
+ BTN_EXTRA = 0x114
500
+ BTN_FORWARD = 0x115
501
+ BTN_BACK = 0x116
502
+ BTN_TASK = 0x117
503
+
504
+ BTN_JOYSTICK = 0x120
505
+ BTN_TRIGGER = 0x120
506
+ BTN_THUMB = 0x121
507
+ BTN_THUMB2 = 0x122
508
+ BTN_TOP = 0x123
509
+ BTN_TOP2 = 0x124
510
+ BTN_PINKIE = 0x125
511
+ BTN_BASE = 0x126
512
+ BTN_BASE2 = 0x127
513
+ BTN_BASE3 = 0x128
514
+ BTN_BASE4 = 0x129
515
+ BTN_BASE5 = 0x12a
516
+ BTN_BASE6 = 0x12b
517
+ BTN_DEAD = 0x12f
518
+
519
+ BTN_GAMEPAD = 0x130
520
+ BTN_SOUTH = 0x130
521
+ BTN_A = BTN_SOUTH
522
+ BTN_EAST = 0x131
523
+ BTN_B = BTN_EAST
524
+ BTN_C = 0x132
525
+ BTN_NORTH = 0x133
526
+ BTN_X = BTN_NORTH
527
+ BTN_WEST = 0x134
528
+ BTN_Y = BTN_WEST
529
+ BTN_Z = 0x135
530
+ BTN_TL = 0x136
531
+ BTN_TR = 0x137
532
+ BTN_TL2 = 0x138
533
+ BTN_TR2 = 0x139
534
+ BTN_SELECT = 0x13a
535
+ BTN_START = 0x13b
536
+ BTN_MODE = 0x13c
537
+ BTN_THUMBL = 0x13d
538
+ BTN_THUMBR = 0x13e
539
+
540
+ BTN_DIGI = 0x140
541
+ BTN_TOOL_PEN = 0x140
542
+ BTN_TOOL_RUBBER = 0x141
543
+ BTN_TOOL_BRUSH = 0x142
544
+ BTN_TOOL_PENCIL = 0x143
545
+ BTN_TOOL_AIRBRUSH = 0x144
546
+ BTN_TOOL_FINGER = 0x145
547
+ BTN_TOOL_MOUSE = 0x146
548
+ BTN_TOOL_LENS = 0x147
549
+ BTN_TOOL_QUINTTAP = 0x148 # /* Five fingers on trackpad */
550
+ BTN_TOUCH = 0x14a
551
+ BTN_STYLUS = 0x14b
552
+ BTN_STYLUS2 = 0x14c
553
+ BTN_TOOL_DOUBLETAP = 0x14d
554
+ BTN_TOOL_TRIPLETAP = 0x14e
555
+ BTN_TOOL_QUADTAP = 0x14f # /* Four fingers on trackpad */
556
+
557
+ BTN_WHEEL = 0x150
558
+ BTN_GEAR_DOWN = 0x150
559
+ BTN_GEAR_UP = 0x151
560
+
561
+ KEY_OK = 0x160
562
+ KEY_SELECT = 0x161
563
+ KEY_GOTO = 0x162
564
+ KEY_CLEAR = 0x163
565
+ KEY_POWER2 = 0x164
566
+ KEY_OPTION = 0x165
567
+ KEY_INFO = 0x166 # /* AL OEM Features/Tips/Tutorial */
568
+ KEY_TIME = 0x167
569
+ KEY_VENDOR = 0x168
570
+ KEY_ARCHIVE = 0x169
571
+ KEY_PROGRAM = 0x16a # /* Media Select Program Guide */
572
+ KEY_CHANNEL = 0x16b
573
+ KEY_FAVORITES = 0x16c
574
+ KEY_EPG = 0x16d
575
+ KEY_PVR = 0x16e # /* Media Select Home */
576
+ KEY_MHP = 0x16f
577
+ KEY_LANGUAGE = 0x170
578
+ KEY_TITLE = 0x171
579
+ KEY_SUBTITLE = 0x172
580
+ KEY_ANGLE = 0x173
581
+ KEY_ZOOM = 0x174
582
+ KEY_MODE = 0x175
583
+ KEY_KEYBOARD = 0x176
584
+ KEY_SCREEN = 0x177
585
+ KEY_PC = 0x178 # /* Media Select Computer */
586
+ KEY_TV = 0x179 # /* Media Select TV */
587
+ KEY_TV2 = 0x17a # /* Media Select Cable */
588
+ KEY_VCR = 0x17b # /* Media Select VCR */
589
+ KEY_VCR2 = 0x17c # /* VCR Plus */
590
+ KEY_SAT = 0x17d # /* Media Select Satellite */
591
+ KEY_SAT2 = 0x17e
592
+ KEY_CD = 0x17f # /* Media Select CD */
593
+ KEY_TAPE = 0x180 # /* Media Select Tape */
594
+ KEY_RADIO = 0x181
595
+ KEY_TUNER = 0x182 # /* Media Select Tuner */
596
+ KEY_PLAYER = 0x183
597
+ KEY_TEXT = 0x184
598
+ KEY_DVD = 0x185 # /* Media Select DVD */
599
+ KEY_AUX = 0x186
600
+ KEY_MP3 = 0x187
601
+ KEY_AUDIO = 0x188 # /* AL Audio Browser */
602
+ KEY_VIDEO = 0x189 # /* AL Movie Browser */
603
+ KEY_DIRECTORY = 0x18a
604
+ KEY_LIST = 0x18b
605
+ KEY_MEMO = 0x18c # /* Media Select Messages */
606
+ KEY_CALENDAR = 0x18d
607
+ KEY_RED = 0x18e
608
+ KEY_GREEN = 0x18f
609
+ KEY_YELLOW = 0x190
610
+ KEY_BLUE = 0x191
611
+ KEY_CHANNELUP = 0x192 # /* Channel Increment */
612
+ KEY_CHANNELDOWN = 0x193 # /* Channel Decrement */
613
+ KEY_FIRST = 0x194
614
+ KEY_LAST = 0x195 # /* Recall Last */
615
+ KEY_AB = 0x196
616
+ KEY_NEXT = 0x197
617
+ KEY_RESTART = 0x198
618
+ KEY_SLOW = 0x199
619
+ KEY_SHUFFLE = 0x19a
620
+ KEY_BREAK = 0x19b
621
+ KEY_PREVIOUS = 0x19c
622
+ KEY_DIGITS = 0x19d
623
+ KEY_TEEN = 0x19e
624
+ KEY_TWEN = 0x19f
625
+ KEY_VIDEOPHONE = 0x1a0 # /* Media Select Video Phone */
626
+ KEY_GAMES = 0x1a1 # /* Media Select Games */
627
+ KEY_ZOOMIN = 0x1a2 # /* AC Zoom In */
628
+ KEY_ZOOMOUT = 0x1a3 # /* AC Zoom Out */
629
+ KEY_ZOOMRESET = 0x1a4 # /* AC Zoom */
630
+ KEY_WORDPROCESSOR = 0x1a5 # /* AL Word Processor */
631
+ KEY_EDITOR = 0x1a6 # /* AL Text Editor */
632
+ KEY_SPREADSHEET = 0x1a7 # /* AL Spreadsheet */
633
+ KEY_GRAPHICSEDITOR = 0x1a8 # /* AL Graphics Editor */
634
+ KEY_PRESENTATION = 0x1a9 # /* AL Presentation App */
635
+ KEY_DATABASE = 0x1aa # /* AL Database App */
636
+ KEY_NEWS = 0x1ab # /* AL Newsreader */
637
+ KEY_VOICEMAIL = 0x1ac # /* AL Voicemail */
638
+ KEY_ADDRESSBOOK = 0x1ad # /* AL Contacts/Address Book */
639
+ KEY_MESSENGER = 0x1ae # /* AL Instant Messaging */
640
+ KEY_DISPLAYTOGGLE = 0x1af # /* Turn display (LCD) on and off */
641
+ KEY_BRIGHTNESS_TOGGLE = KEY_DISPLAYTOGGLE
642
+ KEY_SPELLCHECK = 0x1b0 # /* AL Spell Check */
643
+ KEY_LOGOFF = 0x1b1 # /* AL Logoff */
644
+
645
+ KEY_DOLLAR = 0x1b2
646
+ KEY_EURO = 0x1b3
647
+
648
+ KEY_FRAMEBACK = 0x1b4 # /* Consumer - transport controls */
649
+ KEY_FRAMEFORWARD = 0x1b5
650
+ KEY_CONTEXT_MENU = 0x1b6 # /* GenDesc - system context menu */
651
+ KEY_MEDIA_REPEAT = 0x1b7 # /* Consumer - transport control */
652
+ KEY_10CHANNELSUP = 0x1b8 # /* 10 channels up (10+) */
653
+ KEY_10CHANNELSDOWN = 0x1b9 # /* 10 channels down (10-) */
654
+ KEY_IMAGES = 0x1ba # /* AL Image Browser */
655
+
656
+ KEY_DEL_EOL = 0x1c0
657
+ KEY_DEL_EOS = 0x1c1
658
+ KEY_INS_LINE = 0x1c2
659
+ KEY_DEL_LINE = 0x1c3
660
+
661
+ KEY_FN = 0x1d0
662
+ KEY_FN_ESC = 0x1d1
663
+ KEY_FN_F1 = 0x1d2
664
+ KEY_FN_F2 = 0x1d3
665
+ KEY_FN_F3 = 0x1d4
666
+ KEY_FN_F4 = 0x1d5
667
+ KEY_FN_F5 = 0x1d6
668
+ KEY_FN_F6 = 0x1d7
669
+ KEY_FN_F7 = 0x1d8
670
+ KEY_FN_F8 = 0x1d9
671
+ KEY_FN_F9 = 0x1da
672
+ KEY_FN_F10 = 0x1db
673
+ KEY_FN_F11 = 0x1dc
674
+ KEY_FN_F12 = 0x1dd
675
+ KEY_FN_1 = 0x1de
676
+ KEY_FN_2 = 0x1df
677
+ KEY_FN_D = 0x1e0
678
+ KEY_FN_E = 0x1e1
679
+ KEY_FN_F = 0x1e2
680
+ KEY_FN_S = 0x1e3
681
+ KEY_FN_B = 0x1e4
682
+
683
+ KEY_BRL_DOT1 = 0x1f1
684
+ KEY_BRL_DOT2 = 0x1f2
685
+ KEY_BRL_DOT3 = 0x1f3
686
+ KEY_BRL_DOT4 = 0x1f4
687
+ KEY_BRL_DOT5 = 0x1f5
688
+ KEY_BRL_DOT6 = 0x1f6
689
+ KEY_BRL_DOT7 = 0x1f7
690
+ KEY_BRL_DOT8 = 0x1f8
691
+ KEY_BRL_DOT9 = 0x1f9
692
+ KEY_BRL_DOT10 = 0x1fa
693
+
694
+ KEY_NUMERIC_0 = 0x200 # /* used by phones, remote controls, */
695
+ KEY_NUMERIC_1 = 0x201 # /* and other keypads */
696
+ KEY_NUMERIC_2 = 0x202
697
+ KEY_NUMERIC_3 = 0x203
698
+ KEY_NUMERIC_4 = 0x204
699
+ KEY_NUMERIC_5 = 0x205
700
+ KEY_NUMERIC_6 = 0x206
701
+ KEY_NUMERIC_7 = 0x207
702
+ KEY_NUMERIC_8 = 0x208
703
+ KEY_NUMERIC_9 = 0x209
704
+ KEY_NUMERIC_STAR = 0x20a
705
+ KEY_NUMERIC_POUND = 0x20b
706
+
707
+ KEY_CAMERA_FOCUS = 0x210
708
+ KEY_WPS_BUTTON = 0x211 # /* WiFi Protected Setup key */
709
+
710
+ KEY_TOUCHPAD_TOGGLE = 0x212 # /* Request switch touchpad on or off */
711
+ KEY_TOUCHPAD_ON = 0x213
712
+ KEY_TOUCHPAD_OFF = 0x214
713
+
714
+ KEY_CAMERA_ZOOMIN = 0x215
715
+ KEY_CAMERA_ZOOMOUT = 0x216
716
+ KEY_CAMERA_UP = 0x217
717
+ KEY_CAMERA_DOWN = 0x218
718
+ KEY_CAMERA_LEFT = 0x219
719
+ KEY_CAMERA_RIGHT = 0x21a
720
+
721
+ KEY_ATTENDANT_ON = 0x21b
722
+ KEY_ATTENDANT_OFF = 0x21c
723
+ KEY_ATTENDANT_TOGGLE = 0x21d # /* Attendant call on or off */
724
+ KEY_LIGHTS_TOGGLE = 0x21e # /* Reading light on or off */
725
+
726
+ BTN_DPAD_UP = 0x220
727
+ BTN_DPAD_DOWN = 0x221
728
+ BTN_DPAD_LEFT = 0x222
729
+ BTN_DPAD_RIGHT = 0x223
730
+
731
+ KEY_ALS_TOGGLE = 0x230 # /* Ambient light sensor */
732
+
733
+ KEY_BUTTONCONFIG = 0x240 # AL Button Configuration */
734
+ KEY_TASKMANAGER = 0x241 # /* AL Task/Project Manager */
735
+ KEY_JOURNAL = 0x242 # /* AL Log/Journal/Timecard */
736
+ KEY_CONTROLPANEL = 0x243 # /* AL Control Panel */
737
+ KEY_APPSELECT = 0x244 # /* AL Select Task/Application */
738
+ KEY_SCREENSAVER = 0x245 # /* AL Screen Saver */
739
+ KEY_VOICECOMMAND = 0x246 # Listening Voice Command */
740
+
741
+ KEY_BRIGHTNESS_MIN = 0x250 # /* Set Brightness to Minimum */
742
+ KEY_BRIGHTNESS_MAX = 0x251 # /* Set Brightness to Maximum */
743
+
744
+ KEY_KBDINPUTASSIST_PREV = 0x260
745
+ KEY_KBDINPUTASSIST_NEXT = 0x261
746
+ KEY_KBDINPUTASSIST_PREVGROUP = 0x262
747
+ KEY_KBDINPUTASSIST_NEXTGROUP = 0x263
748
+ KEY_KBDINPUTASSIST_ACCEPT = 0x264
749
+ KEY_KBDINPUTASSIST_CANCEL = 0x265
750
+
751
+ BTN_TRIGGER_HAPPY = 0x2c0
752
+ BTN_TRIGGER_HAPPY1 = 0x2c0
753
+ BTN_TRIGGER_HAPPY2 = 0x2c1
754
+ BTN_TRIGGER_HAPPY3 = 0x2c2
755
+ BTN_TRIGGER_HAPPY4 = 0x2c3
756
+ BTN_TRIGGER_HAPPY5 = 0x2c4
757
+ BTN_TRIGGER_HAPPY6 = 0x2c5
758
+ BTN_TRIGGER_HAPPY7 = 0x2c6
759
+ BTN_TRIGGER_HAPPY8 = 0x2c7
760
+ BTN_TRIGGER_HAPPY9 = 0x2c8
761
+ BTN_TRIGGER_HAPPY10 = 0x2c9
762
+ BTN_TRIGGER_HAPPY11 = 0x2ca
763
+ BTN_TRIGGER_HAPPY12 = 0x2cb
764
+ BTN_TRIGGER_HAPPY13 = 0x2cc
765
+ BTN_TRIGGER_HAPPY14 = 0x2cd
766
+ BTN_TRIGGER_HAPPY15 = 0x2ce
767
+ BTN_TRIGGER_HAPPY16 = 0x2cf
768
+ BTN_TRIGGER_HAPPY17 = 0x2d0
769
+ BTN_TRIGGER_HAPPY18 = 0x2d1
770
+ BTN_TRIGGER_HAPPY19 = 0x2d2
771
+ BTN_TRIGGER_HAPPY20 = 0x2d3
772
+ BTN_TRIGGER_HAPPY21 = 0x2d4
773
+ BTN_TRIGGER_HAPPY22 = 0x2d5
774
+ BTN_TRIGGER_HAPPY23 = 0x2d6
775
+ BTN_TRIGGER_HAPPY24 = 0x2d7
776
+ BTN_TRIGGER_HAPPY25 = 0x2d8
777
+ BTN_TRIGGER_HAPPY26 = 0x2d9
778
+ BTN_TRIGGER_HAPPY27 = 0x2da
779
+ BTN_TRIGGER_HAPPY28 = 0x2db
780
+ BTN_TRIGGER_HAPPY29 = 0x2dc
781
+ BTN_TRIGGER_HAPPY30 = 0x2dd
782
+ BTN_TRIGGER_HAPPY31 = 0x2de
783
+ BTN_TRIGGER_HAPPY32 = 0x2df
784
+ BTN_TRIGGER_HAPPY33 = 0x2e0
785
+ BTN_TRIGGER_HAPPY34 = 0x2e1
786
+ BTN_TRIGGER_HAPPY35 = 0x2e2
787
+ BTN_TRIGGER_HAPPY36 = 0x2e3
788
+ BTN_TRIGGER_HAPPY37 = 0x2e4
789
+ BTN_TRIGGER_HAPPY38 = 0x2e5
790
+ BTN_TRIGGER_HAPPY39 = 0x2e6
791
+ BTN_TRIGGER_HAPPY40 = 0x2e7
792
+ =begin
793
+
794
+ /* We avoid low common keys in module aliases so they don't get huge. */
795
+ =end
796
+ KEY_MIN_INTERESTING = KEY_MUTE
797
+ KEY_MAX = 0x2ff
798
+ KEY_CNT = (KEY_MAX+1)
799
+ end
800
+ include KeysAndButtons
801
+ =begin
802
+ /*
803
+ * Relative axes
804
+ */
805
+ =end
806
+ module RelativeAxes
807
+ REL_X = 0x00
808
+ REL_Y = 0x01
809
+ REL_Z = 0x02
810
+ REL_RX = 0x03
811
+ REL_RY = 0x04
812
+ REL_RZ = 0x05
813
+ REL_HWHEEL = 0x06
814
+ REL_DIAL = 0x07
815
+ REL_WHEEL = 0x08
816
+ REL_MISC = 0x09
817
+ REL_MAX = 0x0f
818
+ REL_CNT = (REL_MAX+1)
819
+ end
820
+ include RelativeAxes
821
+ =begin
822
+
823
+ /*
824
+ * Absolute axes
825
+ */
826
+ =end
827
+ module AbsoluteAxes
828
+ ABS_X = 0x00
829
+ ABS_Y = 0x01
830
+ ABS_Z = 0x02
831
+ ABS_RX = 0x03
832
+ ABS_RY = 0x04
833
+ ABS_RZ = 0x05
834
+ ABS_THROTTLE = 0x06
835
+ ABS_RUDDER = 0x07
836
+ ABS_WHEEL = 0x08
837
+ ABS_GAS = 0x09
838
+ ABS_BRAKE = 0x0a
839
+ ABS_HAT0X = 0x10
840
+ ABS_HAT0Y = 0x11
841
+ ABS_HAT1X = 0x12
842
+ ABS_HAT1Y = 0x13
843
+ ABS_HAT2X = 0x14
844
+ ABS_HAT2Y = 0x15
845
+ ABS_HAT3X = 0x16
846
+ ABS_HAT3Y = 0x17
847
+ ABS_PRESSURE = 0x18
848
+ ABS_DISTANCE = 0x19
849
+ ABS_TILT_X = 0x1a
850
+ ABS_TILT_Y = 0x1b
851
+ ABS_TOOL_WIDTH = 0x1c
852
+
853
+ ABS_VOLUME = 0x20
854
+
855
+ ABS_MISC = 0x28
856
+
857
+ ABS_MT_SLOT = 0x2f # /* MT slot being modified */
858
+ ABS_MT_TOUCH_MAJOR = 0x30 # /* Major axis of touching ellipse */
859
+ ABS_MT_TOUCH_MINOR = 0x31 # /* Minor axis (omit if circular) */
860
+ ABS_MT_WIDTH_MAJOR = 0x32 # /* Major axis of approaching ellipse */
861
+ ABS_MT_WIDTH_MINOR = 0x33 # /* Minor axis (omit if circular) */
862
+ ABS_MT_ORIENTATION = 0x34 # /* Ellipse orientation */
863
+ ABS_MT_POSITION_X = 0x35 # /* Center X touch position */
864
+ ABS_MT_POSITION_Y = 0x36 # /* Center Y touch position */
865
+ ABS_MT_TOOL_TYPE = 0x37 # /* Type of touching device */
866
+ ABS_MT_BLOB_ID = 0x38 # /* Group a set of packets as a blob */
867
+ ABS_MT_TRACKING_ID = 0x39 # /* Unique ID of initiated contact */
868
+ ABS_MT_PRESSURE = 0x3a # /* Pressure on contact area */
869
+ ABS_MT_DISTANCE = 0x3b # /* Contact hover distance */
870
+ ABS_MT_TOOL_X = 0x3c # /* Center X tool position */
871
+ ABS_MT_TOOL_Y = 0x3d # /* Center Y tool position */
872
+
873
+
874
+ ABS_MAX = 0x3f
875
+ ABS_CNT = (ABS_MAX+1)
876
+ end
877
+ include AbsoluteAxes
878
+ =begin
879
+
880
+ /*
881
+ * Switch events
882
+ */
883
+ =end
884
+ module SwitchEvents
885
+ SW_LID = 0x00 # /* set = lid shut */
886
+ SW_TABLET_MODE = 0x01 # /* set = tablet mode */
887
+ SW_HEADPHONE_INSERT = 0x02 # /* set = inserted */
888
+ SW_RFKILL_ALL = 0x03 # /* rfkill master switch, type "any"
889
+ # set = radio enabled */
890
+ SW_RADIO = SW_RFKILL_ALL # /* deprecated */
891
+ SW_MICROPHONE_INSERT = 0x04 # set = inserted */
892
+ SW_DOCK = 0x05 # /* set = plugged into dock */
893
+ SW_LINEOUT_INSERT = 0x06 # /* set = inserted */
894
+ SW_JACK_PHYSICAL_INSERT = 0x07 # /* set = mechanical switch set */
895
+ SW_VIDEOOUT_INSERT = 0x08 # /* set = inserted */
896
+ SW_CAMERA_LENS_COVER = 0x09 # /* set = lens covered */
897
+ SW_KEYPAD_SLIDE = 0x0a # /* set = keypad slide out */
898
+ SW_FRONT_PROXIMITY = 0x0b # /* set = front proximity sensor active */
899
+ SW_ROTATE_LOCK = 0x0c # /* set = rotate locked/disabled */
900
+ SW_LINEIN_INSERT = 0x0d # /* set = inserted */
901
+ SW_MUTE_DEVICE = 0x0e # /* set = device disabled */
902
+ SW_MAX = 0x0f
903
+ SW_CNT = (SW_MAX+1)
904
+ end
905
+ include SwitchEvents
906
+ =begin
907
+ /*
908
+ * Misc events
909
+ */
910
+ =end
911
+ module MiscEvents
912
+ MSC_SERIAL = 0x00
913
+ MSC_PULSELED = 0x01
914
+ MSC_GESTURE = 0x02
915
+ MSC_RAW = 0x03
916
+ MSC_SCAN = 0x04
917
+ MSC_TIMESTAMP = 0x05
918
+ MSC_MAX = 0x07
919
+ MSC_CNT = (MSC_MAX+1)
920
+ end
921
+ include MiscEvents
922
+ =begin
923
+ /*
924
+ * LEDs
925
+ */
926
+ =end
927
+ module LEDs
928
+ LED_NUML = 0x00
929
+ LED_CAPSL = 0x01
930
+ LED_SCROLLL = 0x02
931
+ LED_COMPOSE = 0x03
932
+ LED_KANA = 0x04
933
+ LED_SLEEP = 0x05
934
+ LED_SUSPEND = 0x06
935
+ LED_MUTE = 0x07
936
+ LED_MISC = 0x08
937
+ LED_MAIL = 0x09
938
+ LED_CHARGING = 0x0a
939
+ LED_MAX = 0x0f
940
+ LED_CNT = (LED_MAX+1)
941
+ end
942
+ include LEDs
943
+ =begin
944
+ /*
945
+ * Autorepeat values
946
+ */
947
+ =end
948
+ module AutorepeatValues
949
+ REP_DELAY = 0x00
950
+ REP_PERIOD = 0x01
951
+ REP_MAX = 0x01
952
+ REP_CNT = (REP_MAX+1)
953
+ end
954
+ include AutorepeatValues
955
+ =begin
956
+ /*
957
+ * Sounds
958
+ */
959
+ =end
960
+ module Sounds
961
+ SND_CLICK = 0x00
962
+ SND_BELL = 0x01
963
+ SND_TONE = 0x02
964
+ SND_MAX = 0x07
965
+ SND_CNT = (SND_MAX+1)
966
+ end
967
+ include Sounds
968
+ =begin
969
+ /*
970
+ * IDs.
971
+ */
972
+ =end
973
+ module IDs
974
+ ID_BUS = 0
975
+ ID_VENDOR = 1
976
+ ID_PRODUCT = 2
977
+ ID_VERSION = 3
978
+
979
+ BUS_PCI = 0x01
980
+ BUS_ISAPNP = 0x02
981
+ BUS_USB = 0x03
982
+ BUS_HIL = 0x04
983
+ BUS_BLUETOOTH = 0x05
984
+ BUS_VIRTUAL = 0x06
985
+
986
+ BUS_ISA = 0x10
987
+ BUS_I8042 = 0x11
988
+ BUS_XTKBD = 0x12
989
+ BUS_RS232 = 0x13
990
+ BUS_GAMEPORT = 0x14
991
+ BUS_PARPORT = 0x15
992
+ BUS_AMIGA = 0x16
993
+ BUS_ADB = 0x17
994
+ BUS_I2C = 0x18
995
+ BUS_HOST = 0x19
996
+ BUS_GSC = 0x1A
997
+ BUS_ATARI = 0x1B
998
+ BUS_SPI = 0x1C
999
+ end
1000
+ include IDs
1001
+ =begin
1002
+ /*
1003
+ * MT_TOOL types
1004
+ */
1005
+ =end
1006
+ module MTTOOLTypes
1007
+ MT_TOOL_FINGER = 0
1008
+ MT_TOOL_PEN = 1
1009
+ MT_TOOL_MAX = 1
1010
+ end
1011
+ include MTTOOLTypes
1012
+
1013
+ module ForceFeedBack
1014
+
1015
+ FF_STATUS_STOPPED = 0x00
1016
+ FF_STATUS_PLAYING = 0x01
1017
+ FF_STATUS_MAX = 0x01
1018
+
1019
+ FF_RUMBLE = 0x50
1020
+ FF_PERIODIC = 0x51
1021
+ FF_CONSTANT = 0x52
1022
+ FF_SPRING = 0x53
1023
+ FF_FRICTION = 0x54
1024
+ FF_DAMPER = 0x55
1025
+ FF_INERTIA = 0x56
1026
+ FF_RAMP = 0x57
1027
+
1028
+ FF_EFFECT_MIN = FF_RUMBLE
1029
+ FF_EFFECT_MAX = FF_RAMP
1030
+
1031
+ FF_SQUARE = 0x58
1032
+ FF_TRIANGLE = 0x59
1033
+ FF_SINE = 0x5a
1034
+ FF_SAW_UP = 0x5b
1035
+ FF_SAW_DOWN = 0x5c
1036
+ FF_CUSTOM = 0x5d
1037
+
1038
+ FF_WAVEFORM_MIN = FF_SQUARE
1039
+ FF_WAVEFORM_MAX = FF_CUSTOM
1040
+
1041
+ FF_GAIN = 0x60
1042
+ FF_AUTOCENTER = 0x61
1043
+
1044
+ FF_MAX = 0x7f
1045
+ FF_CNT = (FF_MAX+1)
1046
+ end
1047
+ include ForceFeedBack
1048
+ end
1049
+ end
1050
+ end
1051
+ end
1052
+
1053
+ require 'vigilem/evdev/system/input/input_event'