vigilem-evdev 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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'