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.
- checksums.yaml +7 -0
- data/LICENSE.txt +22 -0
- data/ext/Rakefile +31 -0
- data/ext/rake_helper.rb +10 -0
- data/lib/vigilem/_evdev.rb +24 -0
- data/lib/vigilem/evdev.rb +14 -0
- data/lib/vigilem/evdev/at_exit.rb +8 -0
- data/lib/vigilem/evdev/context_filter.rb +92 -0
- data/lib/vigilem/evdev/demultiplexer.rb +26 -0
- data/lib/vigilem/evdev/device.rb +182 -0
- data/lib/vigilem/evdev/device_capabilities.rb +53 -0
- data/lib/vigilem/evdev/dom.rb +8 -0
- data/lib/vigilem/evdev/dom/adapter.rb +87 -0
- data/lib/vigilem/evdev/dom/code_values_tables.rb +172 -0
- data/lib/vigilem/evdev/dom/input_event_converter.rb +329 -0
- data/lib/vigilem/evdev/dom/input_event_utils.rb +48 -0
- data/lib/vigilem/evdev/dom/key_values_tables.rb +248 -0
- data/lib/vigilem/evdev/dom/kp_table.rb +52 -0
- data/lib/vigilem/evdev/focus_context_filter.rb +124 -0
- data/lib/vigilem/evdev/input_system_handler.rb +69 -0
- data/lib/vigilem/evdev/key_map_cache.rb +64 -0
- data/lib/vigilem/evdev/multiplexer.rb +73 -0
- data/lib/vigilem/evdev/system.rb +17 -0
- data/lib/vigilem/evdev/system/input.rb +1053 -0
- data/lib/vigilem/evdev/system/input/event.rb +4 -0
- data/lib/vigilem/evdev/system/input/input_event.rb +33 -0
- data/lib/vigilem/evdev/system/int.rb +9 -0
- data/lib/vigilem/evdev/system/ioctl.rb +143 -0
- data/lib/vigilem/evdev/system/keymap_loaders.rb +89 -0
- data/lib/vigilem/evdev/system/keymap_loaders/dumpkeys_loader.rb +98 -0
- data/lib/vigilem/evdev/system/keymap_loaders/kmap_loader.rb +74 -0
- data/lib/vigilem/evdev/system/posix_types.rb +5 -0
- data/lib/vigilem/evdev/system/time.rb +21 -0
- data/lib/vigilem/evdev/transfer_agent.rb +40 -0
- data/lib/vigilem/evdev/version.rb +5 -0
- data/lib/vigilem/evdev/vty_context_filter.rb +216 -0
- data/spec/after_each_example_group.rb +29 -0
- data/spec/delete_test_cache_after_group.rb +26 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/vigilem/_evdev_spec.rb +11 -0
- data/spec/vigilem/evdev/context_filter_spec.rb +114 -0
- data/spec/vigilem/evdev/demultiplexer_spec.rb +44 -0
- data/spec/vigilem/evdev/device_capabilities_spec.rb +0 -0
- data/spec/vigilem/evdev/device_spec.rb +97 -0
- data/spec/vigilem/evdev/dom/adapter_spec.rb +5 -0
- data/spec/vigilem/evdev/dom/input_event_converter_spec.rb +253 -0
- data/spec/vigilem/evdev/dom/input_event_utils_spec.rb +23 -0
- data/spec/vigilem/evdev/focus_context_filter_spec.rb +112 -0
- data/spec/vigilem/evdev/input_system_handler_spec.rb +146 -0
- data/spec/vigilem/evdev/key_map_cache_spec.rb +65 -0
- data/spec/vigilem/evdev/multiplexer_spec.rb +55 -0
- data/spec/vigilem/evdev/system/input/input_event_spec.rb +33 -0
- data/spec/vigilem/evdev/system/input_spec.rb +274 -0
- data/spec/vigilem/evdev/system/int_spec.rb +30 -0
- data/spec/vigilem/evdev/system/ioctl_spec.rb +206 -0
- data/spec/vigilem/evdev/system/keymap_loaders/dumpkeys_loader_spec.rb +5 -0
- data/spec/vigilem/evdev/system/keymap_loaders/kmap_loader_spec.rb +24 -0
- data/spec/vigilem/evdev/system/keymap_loaders_spec.rb +22 -0
- data/spec/vigilem/evdev/system/posix_types_spec.rb +15 -0
- data/spec/vigilem/evdev/system/time_spec.rb +18 -0
- data/spec/vigilem/evdev/transfer_agent_spec.rb +57 -0
- data/spec/vigilem/evdev/vty_context_filter_spec.rb +282 -0
- 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'
|