fusuma-plugin-sendkey 0.13.0 → 0.13.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c611a6d5d766d2e57a3c413e3c06b83561f20d9768d785601c0a3395128c77f9
4
- data.tar.gz: 5ddd9dc6449c2db16e3e4de26e08ed4334c2e9b274f81ba4bdfa1301815bfb44
3
+ metadata.gz: d7f9066f30d4bc6433c40cda7e2f89352fd5a9674264333f134bc011a6fae8f4
4
+ data.tar.gz: 96e596dfb38bf30e35356ebda70a718b3cba76741151dd328bf08bdbc368b55e
5
5
  SHA512:
6
- metadata.gz: 118858d9a59878f2e830e444577be1b543ceac410027e3be5e564385d19876f0d5aa4a21f55935fede4cbc18f613e99cc8489b0c4128c1dc5d5d4d8b4e65ad0f
7
- data.tar.gz: 28bbb84b4aaa9a5903d6473bffd5139bd2fe8ab942cbbbfc99a47e5a2567a6c76f737eb4e84ed917807f554c868f0e7c52f9d4d1bfd340694bbcfbdca4b5358b
6
+ metadata.gz: 3e3531acb5c8a217e26bfe9f929c3264569c786951ad959786a1e1403ba973da1c19f86186d018d8d3eb7642aef9bd293bc77fcb2854a6a664b64c956936d46f
7
+ data.tar.gz: b10001550fcc5cc0ed9175d10fdf42c3958735e32805ccd1acf507f3aeb15828307c4213ee3894c8702658cedb2a29113727f98fc002f117085bab32dcb21c12
@@ -2,12 +2,15 @@
2
2
 
3
3
  require "revdev"
4
4
  require "set"
5
+ require_relative "linux/input"
5
6
 
6
7
  module Fusuma
7
8
  module Plugin
8
9
  module Sendkey
9
10
  # handle Evdev device
10
11
  class Device
12
+ include Linux::INPUT
13
+
11
14
  def initialize(path:)
12
15
  @evdev = Revdev::EventDevice.new(path)
13
16
  @capabilities = Set.new
@@ -41,12 +44,15 @@ module Fusuma
41
44
 
42
45
  private
43
46
 
44
- EVIOCGBIT = 2153792801
45
-
46
47
  def fetch_capabilities
47
48
  file = File.open(path, "r")
48
49
  buf = +"" # unfreeze string
49
- file.ioctl(EVIOCGBIT, buf)
50
+
51
+ # EVIOCGBIT: Get the bit mask of the event types supported by the input device.
52
+ # EV_KEY: The event type is EV_KEY, which means that the device supports key events.
53
+ # KEY_CNT / 8: The number of bytes required to store the bit mask of the key codes.
54
+ # file.ioctl: Get the bit mask of the key codes supported by the input device.
55
+ file.ioctl(EVIOCGBIT(EV_KEY, KEY_CNT / 8), buf)
50
56
  buf
51
57
  end
52
58
  end
@@ -10,7 +10,7 @@ module Fusuma
10
10
  module Sendkey
11
11
  # Emulate Keyboard
12
12
  class Keyboard
13
- INTERVAL = 0.03
13
+ KEY_INTERVAL = 0.03
14
14
 
15
15
  MODIFIER_KEY_CODES = %w[
16
16
  KEY_CAPSLOCK
@@ -84,9 +84,8 @@ module Fusuma
84
84
 
85
85
  clear_modifiers(clear_keycodes - param_keycodes)
86
86
 
87
- type_keycodes.each { |keycode| keydown(keycode) && key_sync }
88
- sleep(INTERVAL)
89
- type_keycodes.reverse_each { |keycode| keyup(keycode) && key_sync }
87
+ type_keycodes.each { |keycode| keydown(keycode) && key_sync && sleep(KEY_INTERVAL) }
88
+ type_keycodes.reverse_each { |keycode| keyup(keycode) && key_sync && sleep(KEY_INTERVAL) }
90
89
  end
91
90
 
92
91
  def keydown(keycode)
@@ -98,7 +97,10 @@ module Fusuma
98
97
  end
99
98
 
100
99
  # @param param [String]
100
+ # @return [TrueClass, FalseClass]
101
101
  def valid?(params)
102
+ return false if params.nil?
103
+
102
104
  case params
103
105
  when Array
104
106
  params.all? { |param| valid?(param) }
@@ -0,0 +1,624 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "ioctl"
4
+
5
+ module Fusuma
6
+ module Plugin
7
+ module Sendkey
8
+ module Linux
9
+ # https://github.com/jtzero/vigilem-evdev/blob/master/lib/vigilem/evdev/system/input.rb?plain=1#L18
10
+ module INPUT
11
+ include IOCTRL
12
+ module MACROS
13
+ # /* get event bits */
14
+ def EVIOCGBIT(evtype, len = 255)
15
+ _IOC(_IOC_READ, "E", 0x20 + evtype, len)
16
+ end
17
+ end
18
+ include MACROS
19
+
20
+ module EventTypes
21
+ EV_SYN = 0x00
22
+ EV_KEY = 0x01
23
+ EV_REL = 0x02
24
+ EV_ABS = 0x03
25
+ EV_MSC = 0x04
26
+ EV_SW = 0x05
27
+ EV_LED = 0x11
28
+ EV_SND = 0x12
29
+ EV_REP = 0x14
30
+ EV_FF = 0x15
31
+ EV_PWR = 0x16
32
+ EV_FF_STATUS = 0x17
33
+ EV_MAX = 0x1f
34
+ EV_CNT = (EV_MAX + 1)
35
+ end
36
+ include EventTypes
37
+
38
+ module KeysAndButtons
39
+ KEY_RESERVED = 0
40
+ KEY_ESC = 1
41
+ KEY_1 = 2
42
+ KEY_2 = 3
43
+ KEY_3 = 4
44
+ KEY_4 = 5
45
+ KEY_5 = 6
46
+ KEY_6 = 7
47
+ KEY_7 = 8
48
+ KEY_8 = 9
49
+ KEY_9 = 10
50
+ KEY_0 = 11
51
+ KEY_MINUS = 12
52
+ KEY_EQUAL = 13
53
+ KEY_BACKSPACE = 14
54
+ KEY_TAB = 15
55
+ KEY_Q = 16
56
+ KEY_W = 17
57
+ KEY_E = 18
58
+ KEY_R = 19
59
+ KEY_T = 20
60
+ KEY_Y = 21
61
+ KEY_U = 22
62
+ KEY_I = 23
63
+ KEY_O = 24
64
+ KEY_P = 25
65
+ KEY_LEFTBRACE = 26
66
+ KEY_RIGHTBRACE = 27
67
+ KEY_ENTER = 28
68
+ KEY_LEFTCTRL = 29
69
+ KEY_A = 30
70
+ KEY_S = 31
71
+ KEY_D = 32
72
+ KEY_F = 33
73
+ KEY_G = 34
74
+ KEY_H = 35
75
+ KEY_J = 36
76
+ KEY_K = 37
77
+ KEY_L = 38
78
+ KEY_SEMICOLON = 39
79
+ KEY_APOSTROPHE = 40
80
+ KEY_GRAVE = 41
81
+ KEY_LEFTSHIFT = 42
82
+ KEY_BACKSLASH = 43
83
+ KEY_Z = 44
84
+ KEY_X = 45
85
+ KEY_C = 46
86
+ KEY_V = 47
87
+ KEY_B = 48
88
+ KEY_N = 49
89
+ KEY_M = 50
90
+ KEY_COMMA = 51
91
+ KEY_DOT = 52
92
+ KEY_SLASH = 53
93
+ KEY_RIGHTSHIFT = 54
94
+ KEY_KPASTERISK = 55
95
+ KEY_LEFTALT = 56
96
+ KEY_SPACE = 57
97
+ KEY_CAPSLOCK = 58
98
+ KEY_F1 = 59
99
+ KEY_F2 = 60
100
+ KEY_F3 = 61
101
+ KEY_F4 = 62
102
+ KEY_F5 = 63
103
+ KEY_F6 = 64
104
+ KEY_F7 = 65
105
+ KEY_F8 = 66
106
+ KEY_F9 = 67
107
+ KEY_F10 = 68
108
+ KEY_NUMLOCK = 69
109
+ KEY_SCROLLLOCK = 70
110
+ KEY_KP7 = 71
111
+ KEY_KP8 = 72
112
+ KEY_KP9 = 73
113
+ KEY_KPMINUS = 74
114
+ KEY_KP4 = 75
115
+ KEY_KP5 = 76
116
+ KEY_KP6 = 77
117
+ KEY_KPPLUS = 78
118
+ KEY_KP1 = 79
119
+ KEY_KP2 = 80
120
+ KEY_KP3 = 81
121
+ KEY_KP0 = 82
122
+ KEY_KPDOT = 83
123
+
124
+ KEY_ZENKAKUHANKAKU = 85
125
+ KEY_102ND = 86
126
+ KEY_F11 = 87
127
+ KEY_F12 = 88
128
+ KEY_RO = 89
129
+ KEY_KATAKANA = 90
130
+ KEY_HIRAGANA = 91
131
+ KEY_HENKAN = 92
132
+ KEY_KATAKANAHIRAGANA = 93
133
+ KEY_MUHENKAN = 94
134
+ KEY_KPJPCOMMA = 95
135
+ KEY_KPENTER = 96
136
+ KEY_RIGHTCTRL = 97
137
+ KEY_KPSLASH = 98
138
+ KEY_SYSRQ = 99
139
+ KEY_RIGHTALT = 100
140
+ KEY_LINEFEED = 101
141
+ KEY_HOME = 102
142
+ KEY_UP = 103
143
+ KEY_PAGEUP = 104
144
+ KEY_LEFT = 105
145
+ KEY_RIGHT = 106
146
+ KEY_END = 107
147
+ KEY_DOWN = 108
148
+ KEY_PAGEDOWN = 109
149
+ KEY_INSERT = 110
150
+ KEY_DELETE = 111
151
+ KEY_MACRO = 112
152
+ KEY_MUTE = 113
153
+ KEY_VOLUMEDOWN = 114
154
+ KEY_VOLUMEUP = 115
155
+ KEY_POWER = 116 # /* SC System Power Down */
156
+ KEY_KPEQUAL = 117
157
+ KEY_KPPLUSMINUS = 118
158
+ KEY_PAUSE = 119
159
+ KEY_SCALE = 120 # /* AL Compiz Scale (Expose) */
160
+
161
+ KEY_KPCOMMA = 121
162
+ KEY_HANGEUL = 122
163
+ KEY_HANGUEL = KEY_HANGEUL
164
+ KEY_HANJA = 123
165
+ KEY_YEN = 124
166
+ KEY_LEFTMETA = 125
167
+ KEY_RIGHTMETA = 126
168
+ KEY_COMPOSE = 127
169
+
170
+ KEY_STOP = 128 # /* AC Stop */
171
+ KEY_AGAIN = 129
172
+ KEY_PROPS = 130 # /* AC Properties */
173
+ KEY_UNDO = 131 # /* AC Undo */
174
+ KEY_FRONT = 132
175
+ KEY_COPY = 133 # /* AC Copy */
176
+ KEY_OPEN = 134 # /* AC Open */
177
+ KEY_PASTE = 135 # /* AC Paste */
178
+ KEY_FIND = 136 # /* AC Search */
179
+ KEY_CUT = 137 # /* AC Cut */
180
+ KEY_HELP = 138 # /* AL Integrated Help Center */
181
+ KEY_MENU = 139 # /* Menu (show menu) */
182
+ KEY_CALC = 140 # /* AL Calculator */
183
+ KEY_SETUP = 141
184
+ KEY_SLEEP = 142 # /* SC System Sleep */
185
+ KEY_WAKEUP = 143 # /* System Wake Up */
186
+ KEY_FILE = 144 # /* AL Local Machine Browser */
187
+ KEY_SENDFILE = 145
188
+ KEY_DELETEFILE = 146
189
+ KEY_XFER = 147
190
+ KEY_PROG1 = 148
191
+ KEY_PROG2 = 149
192
+ KEY_WWW = 150 # /* AL Internet Browser */
193
+ KEY_MSDOS = 151
194
+ KEY_COFFEE = 152 # /* AL Terminal Lock/Screensaver */
195
+ KEY_SCREENLOCK = KEY_COFFEE
196
+ KEY_DIRECTION = 153
197
+ KEY_CYCLEWINDOWS = 154
198
+ KEY_MAIL = 155
199
+ KEY_BOOKMARKS = 156 # /* AC Bookmarks */
200
+ KEY_COMPUTER = 157
201
+ KEY_BACK = 158 # /* AC Back */
202
+ KEY_FORWARD = 159 # /* AC Forward */
203
+ KEY_CLOSECD = 160
204
+ KEY_EJECTCD = 161
205
+ KEY_EJECTCLOSECD = 162
206
+ KEY_NEXTSONG = 163
207
+ KEY_PLAYPAUSE = 164
208
+ KEY_PREVIOUSSONG = 165
209
+ KEY_STOPCD = 166
210
+ KEY_RECORD = 167
211
+ KEY_REWIND = 168
212
+ KEY_PHONE = 169 # /* Media Select Telephone */
213
+ KEY_ISO = 170
214
+ KEY_CONFIG = 171 # /* AL Consumer Control Configuration */
215
+ KEY_HOMEPAGE = 172 # /* AC Home */
216
+ KEY_REFRESH = 173 # /* AC Refresh */
217
+ KEY_EXIT = 174 # /* AC Exit */
218
+ KEY_MOVE = 175
219
+ KEY_EDIT = 176
220
+ KEY_SCROLLUP = 177
221
+ KEY_SCROLLDOWN = 178
222
+ KEY_KPLEFTPAREN = 179
223
+ KEY_KPRIGHTPAREN = 180
224
+ KEY_NEW = 181 # /* AC New */
225
+ KEY_REDO = 182 # /* AC Redo/Repeat */
226
+
227
+ KEY_F13 = 183
228
+ KEY_F14 = 184
229
+ KEY_F15 = 185
230
+ KEY_F16 = 186
231
+ KEY_F17 = 187
232
+ KEY_F18 = 188
233
+ KEY_F19 = 189
234
+ KEY_F20 = 190
235
+ KEY_F21 = 191
236
+ KEY_F22 = 192
237
+ KEY_F23 = 193
238
+ KEY_F24 = 194
239
+
240
+ KEY_PLAYCD = 200
241
+ KEY_PAUSECD = 201
242
+ KEY_PROG3 = 202
243
+ KEY_PROG4 = 203
244
+ KEY_DASHBOARD = 204 # /* AL Dashboard */
245
+ KEY_SUSPEND = 205
246
+ KEY_CLOSE = 206 # /* AC Close */
247
+ KEY_PLAY = 207
248
+ KEY_FASTFORWARD = 208
249
+ KEY_BASSBOOST = 209
250
+ KEY_PRINT = 210 # /* AC Print */
251
+ KEY_HP = 211
252
+ KEY_CAMERA = 212
253
+ KEY_SOUND = 213
254
+ KEY_QUESTION = 214
255
+ KEY_EMAIL = 215
256
+ KEY_CHAT = 216
257
+ KEY_SEARCH = 217
258
+ KEY_CONNECT = 218
259
+ KEY_FINANCE = 219 # /* AL Checkbook/Finance */
260
+ KEY_SPORT = 220
261
+ KEY_SHOP = 221
262
+ KEY_ALTERASE = 222
263
+ KEY_CANCEL = 223 # /* AC Cancel */
264
+ KEY_BRIGHTNESSDOWN = 224
265
+ KEY_BRIGHTNESSUP = 225
266
+ KEY_MEDIA = 226
267
+
268
+ KEY_SWITCHVIDEOMODE = 227 # /* Cycle between available video
269
+ # outputs (Monitor/LCD/TV-out/etc) */
270
+ KEY_KBDILLUMTOGGLE = 228
271
+ KEY_KBDILLUMDOWN = 229
272
+ KEY_KBDILLUMUP = 230
273
+
274
+ KEY_SEND = 231 # /* AC Send */
275
+ KEY_REPLY = 232 # /* AC Reply */
276
+ KEY_FORWARDMAIL = 233 # /* AC Forward Msg */
277
+ KEY_SAVE = 234 # /* AC Save */
278
+ KEY_DOCUMENTS = 235
279
+
280
+ KEY_BATTERY = 236
281
+
282
+ KEY_BLUETOOTH = 237
283
+ KEY_WLAN = 238
284
+ KEY_UWB = 239
285
+
286
+ KEY_UNKNOWN = 240
287
+
288
+ KEY_VIDEO_NEXT = 241 # /* drive next video link */
289
+ KEY_VIDEO_PREV = 242 # /* drive previous video link */
290
+ KEY_BRIGHTNESS_CYCLE = 243 # /* brightness up, after max is min */
291
+ KEY_BRIGHTNESS_AUTO = 244 # /* Set Auto Brightness: manual
292
+ # brightness control is off,
293
+ # rely on ambient */
294
+ KEY_BRIGHTNESS_ZERO = KEY_BRIGHTNESS_AUTO
295
+ KEY_DISPLAY_OFF = 245 # /* display device to off state */
296
+
297
+ KEY_WWAN = 246 # /* Wireless WAN (LTE, UMTS, GSM, etc.) */
298
+ KEY_WIMAX = KEY_WWAN
299
+ KEY_RFKILL = 247 # /* Key that controls all radios */
300
+
301
+ KEY_MICMUTE = 248 # /* Mute / unmute the microphone */
302
+ # /* Code = 255 is reserved for special needs of AT keyboard driver */
303
+ BTN_MISC = 0x100
304
+ BTN_0 = 0x100
305
+ BTN_1 = 0x101
306
+ BTN_2 = 0x102
307
+ BTN_3 = 0x103
308
+ BTN_4 = 0x104
309
+ BTN_5 = 0x105
310
+ BTN_6 = 0x106
311
+ BTN_7 = 0x107
312
+ BTN_8 = 0x108
313
+ BTN_9 = 0x109
314
+
315
+ BTN_MOUSE = 0x110
316
+ BTN_LEFT = 0x110
317
+ BTN_RIGHT = 0x111
318
+ BTN_MIDDLE = 0x112
319
+ BTN_SIDE = 0x113
320
+ BTN_EXTRA = 0x114
321
+ BTN_FORWARD = 0x115
322
+ BTN_BACK = 0x116
323
+ BTN_TASK = 0x117
324
+
325
+ BTN_JOYSTICK = 0x120
326
+ BTN_TRIGGER = 0x120
327
+ BTN_THUMB = 0x121
328
+ BTN_THUMB2 = 0x122
329
+ BTN_TOP = 0x123
330
+ BTN_TOP2 = 0x124
331
+ BTN_PINKIE = 0x125
332
+ BTN_BASE = 0x126
333
+ BTN_BASE2 = 0x127
334
+ BTN_BASE3 = 0x128
335
+ BTN_BASE4 = 0x129
336
+ BTN_BASE5 = 0x12a
337
+ BTN_BASE6 = 0x12b
338
+ BTN_DEAD = 0x12f
339
+
340
+ BTN_GAMEPAD = 0x130
341
+ BTN_SOUTH = 0x130
342
+ BTN_A = BTN_SOUTH
343
+ BTN_EAST = 0x131
344
+ BTN_B = BTN_EAST
345
+ BTN_C = 0x132
346
+ BTN_NORTH = 0x133
347
+ BTN_X = BTN_NORTH
348
+ BTN_WEST = 0x134
349
+ BTN_Y = BTN_WEST
350
+ BTN_Z = 0x135
351
+ BTN_TL = 0x136
352
+ BTN_TR = 0x137
353
+ BTN_TL2 = 0x138
354
+ BTN_TR2 = 0x139
355
+ BTN_SELECT = 0x13a
356
+ BTN_START = 0x13b
357
+ BTN_MODE = 0x13c
358
+ BTN_THUMBL = 0x13d
359
+ BTN_THUMBR = 0x13e
360
+
361
+ BTN_DIGI = 0x140
362
+ BTN_TOOL_PEN = 0x140
363
+ BTN_TOOL_RUBBER = 0x141
364
+ BTN_TOOL_BRUSH = 0x142
365
+ BTN_TOOL_PENCIL = 0x143
366
+ BTN_TOOL_AIRBRUSH = 0x144
367
+ BTN_TOOL_FINGER = 0x145
368
+ BTN_TOOL_MOUSE = 0x146
369
+ BTN_TOOL_LENS = 0x147
370
+ BTN_TOOL_QUINTTAP = 0x148 # /* Five fingers on trackpad */
371
+ BTN_TOUCH = 0x14a
372
+ BTN_STYLUS = 0x14b
373
+ BTN_STYLUS2 = 0x14c
374
+ BTN_TOOL_DOUBLETAP = 0x14d
375
+ BTN_TOOL_TRIPLETAP = 0x14e
376
+ BTN_TOOL_QUADTAP = 0x14f # /* Four fingers on trackpad */
377
+
378
+ BTN_WHEEL = 0x150
379
+ BTN_GEAR_DOWN = 0x150
380
+ BTN_GEAR_UP = 0x151
381
+
382
+ KEY_OK = 0x160
383
+ KEY_SELECT = 0x161
384
+ KEY_GOTO = 0x162
385
+ KEY_CLEAR = 0x163
386
+ KEY_POWER2 = 0x164
387
+ KEY_OPTION = 0x165
388
+ KEY_INFO = 0x166 # /* AL OEM Features/Tips/Tutorial */
389
+ KEY_TIME = 0x167
390
+ KEY_VENDOR = 0x168
391
+ KEY_ARCHIVE = 0x169
392
+ KEY_PROGRAM = 0x16a # /* Media Select Program Guide */
393
+ KEY_CHANNEL = 0x16b
394
+ KEY_FAVORITES = 0x16c
395
+ KEY_EPG = 0x16d
396
+ KEY_PVR = 0x16e # /* Media Select Home */
397
+ KEY_MHP = 0x16f
398
+ KEY_LANGUAGE = 0x170
399
+ KEY_TITLE = 0x171
400
+ KEY_SUBTITLE = 0x172
401
+ KEY_ANGLE = 0x173
402
+ KEY_ZOOM = 0x174
403
+ KEY_MODE = 0x175
404
+ KEY_KEYBOARD = 0x176
405
+ KEY_SCREEN = 0x177
406
+ KEY_PC = 0x178 # /* Media Select Computer */
407
+ KEY_TV = 0x179 # /* Media Select TV */
408
+ KEY_TV2 = 0x17a # /* Media Select Cable */
409
+ KEY_VCR = 0x17b # /* Media Select VCR */
410
+ KEY_VCR2 = 0x17c # /* VCR Plus */
411
+ KEY_SAT = 0x17d # /* Media Select Satellite */
412
+ KEY_SAT2 = 0x17e
413
+ KEY_CD = 0x17f # /* Media Select CD */
414
+ KEY_TAPE = 0x180 # /* Media Select Tape */
415
+ KEY_RADIO = 0x181
416
+ KEY_TUNER = 0x182 # /* Media Select Tuner */
417
+ KEY_PLAYER = 0x183
418
+ KEY_TEXT = 0x184
419
+ KEY_DVD = 0x185 # /* Media Select DVD */
420
+ KEY_AUX = 0x186
421
+ KEY_MP3 = 0x187
422
+ KEY_AUDIO = 0x188 # /* AL Audio Browser */
423
+ KEY_VIDEO = 0x189 # /* AL Movie Browser */
424
+ KEY_DIRECTORY = 0x18a
425
+ KEY_LIST = 0x18b
426
+ KEY_MEMO = 0x18c # /* Media Select Messages */
427
+ KEY_CALENDAR = 0x18d
428
+ KEY_RED = 0x18e
429
+ KEY_GREEN = 0x18f
430
+ KEY_YELLOW = 0x190
431
+ KEY_BLUE = 0x191
432
+ KEY_CHANNELUP = 0x192 # /* Channel Increment */
433
+ KEY_CHANNELDOWN = 0x193 # /* Channel Decrement */
434
+ KEY_FIRST = 0x194
435
+ KEY_LAST = 0x195 # /* Recall Last */
436
+ KEY_AB = 0x196
437
+ KEY_NEXT = 0x197
438
+ KEY_RESTART = 0x198
439
+ KEY_SLOW = 0x199
440
+ KEY_SHUFFLE = 0x19a
441
+ KEY_BREAK = 0x19b
442
+ KEY_PREVIOUS = 0x19c
443
+ KEY_DIGITS = 0x19d
444
+ KEY_TEEN = 0x19e
445
+ KEY_TWEN = 0x19f
446
+ KEY_VIDEOPHONE = 0x1a0 # /* Media Select Video Phone */
447
+ KEY_GAMES = 0x1a1 # /* Media Select Games */
448
+ KEY_ZOOMIN = 0x1a2 # /* AC Zoom In */
449
+ KEY_ZOOMOUT = 0x1a3 # /* AC Zoom Out */
450
+ KEY_ZOOMRESET = 0x1a4 # /* AC Zoom */
451
+ KEY_WORDPROCESSOR = 0x1a5 # /* AL Word Processor */
452
+ KEY_EDITOR = 0x1a6 # /* AL Text Editor */
453
+ KEY_SPREADSHEET = 0x1a7 # /* AL Spreadsheet */
454
+ KEY_GRAPHICSEDITOR = 0x1a8 # /* AL Graphics Editor */
455
+ KEY_PRESENTATION = 0x1a9 # /* AL Presentation App */
456
+ KEY_DATABASE = 0x1aa # /* AL Database App */
457
+ KEY_NEWS = 0x1ab # /* AL Newsreader */
458
+ KEY_VOICEMAIL = 0x1ac # /* AL Voicemail */
459
+ KEY_ADDRESSBOOK = 0x1ad # /* AL Contacts/Address Book */
460
+ KEY_MESSENGER = 0x1ae # /* AL Instant Messaging */
461
+ KEY_DISPLAYTOGGLE = 0x1af # /* Turn display (LCD) on and off */
462
+ KEY_BRIGHTNESS_TOGGLE = KEY_DISPLAYTOGGLE
463
+ KEY_SPELLCHECK = 0x1b0 # /* AL Spell Check */
464
+ KEY_LOGOFF = 0x1b1 # /* AL Logoff */
465
+
466
+ KEY_DOLLAR = 0x1b2
467
+ KEY_EURO = 0x1b3
468
+
469
+ KEY_FRAMEBACK = 0x1b4 # /* Consumer - transport controls */
470
+ KEY_FRAMEFORWARD = 0x1b5
471
+ KEY_CONTEXT_MENU = 0x1b6 # /* GenDesc - system context menu */
472
+ KEY_MEDIA_REPEAT = 0x1b7 # /* Consumer - transport control */
473
+ KEY_10CHANNELSUP = 0x1b8 # /* 10 channels up (10+) */
474
+ KEY_10CHANNELSDOWN = 0x1b9 # /* 10 channels down (10-) */
475
+ KEY_IMAGES = 0x1ba # /* AL Image Browser */
476
+
477
+ KEY_DEL_EOL = 0x1c0
478
+ KEY_DEL_EOS = 0x1c1
479
+ KEY_INS_LINE = 0x1c2
480
+ KEY_DEL_LINE = 0x1c3
481
+
482
+ KEY_FN = 0x1d0
483
+ KEY_FN_ESC = 0x1d1
484
+ KEY_FN_F1 = 0x1d2
485
+ KEY_FN_F2 = 0x1d3
486
+ KEY_FN_F3 = 0x1d4
487
+ KEY_FN_F4 = 0x1d5
488
+ KEY_FN_F5 = 0x1d6
489
+ KEY_FN_F6 = 0x1d7
490
+ KEY_FN_F7 = 0x1d8
491
+ KEY_FN_F8 = 0x1d9
492
+ KEY_FN_F9 = 0x1da
493
+ KEY_FN_F10 = 0x1db
494
+ KEY_FN_F11 = 0x1dc
495
+ KEY_FN_F12 = 0x1dd
496
+ KEY_FN_1 = 0x1de
497
+ KEY_FN_2 = 0x1df
498
+ KEY_FN_D = 0x1e0
499
+ KEY_FN_E = 0x1e1
500
+ KEY_FN_F = 0x1e2
501
+ KEY_FN_S = 0x1e3
502
+ KEY_FN_B = 0x1e4
503
+
504
+ KEY_BRL_DOT1 = 0x1f1
505
+ KEY_BRL_DOT2 = 0x1f2
506
+ KEY_BRL_DOT3 = 0x1f3
507
+ KEY_BRL_DOT4 = 0x1f4
508
+ KEY_BRL_DOT5 = 0x1f5
509
+ KEY_BRL_DOT6 = 0x1f6
510
+ KEY_BRL_DOT7 = 0x1f7
511
+ KEY_BRL_DOT8 = 0x1f8
512
+ KEY_BRL_DOT9 = 0x1f9
513
+ KEY_BRL_DOT10 = 0x1fa
514
+
515
+ KEY_NUMERIC_0 = 0x200 # /* used by phones, remote controls, */
516
+ KEY_NUMERIC_1 = 0x201 # /* and other keypads */
517
+ KEY_NUMERIC_2 = 0x202
518
+ KEY_NUMERIC_3 = 0x203
519
+ KEY_NUMERIC_4 = 0x204
520
+ KEY_NUMERIC_5 = 0x205
521
+ KEY_NUMERIC_6 = 0x206
522
+ KEY_NUMERIC_7 = 0x207
523
+ KEY_NUMERIC_8 = 0x208
524
+ KEY_NUMERIC_9 = 0x209
525
+ KEY_NUMERIC_STAR = 0x20a
526
+ KEY_NUMERIC_POUND = 0x20b
527
+
528
+ KEY_CAMERA_FOCUS = 0x210
529
+ KEY_WPS_BUTTON = 0x211 # /* WiFi Protected Setup key */
530
+
531
+ KEY_TOUCHPAD_TOGGLE = 0x212 # /* Request switch touchpad on or off */
532
+ KEY_TOUCHPAD_ON = 0x213
533
+ KEY_TOUCHPAD_OFF = 0x214
534
+
535
+ KEY_CAMERA_ZOOMIN = 0x215
536
+ KEY_CAMERA_ZOOMOUT = 0x216
537
+ KEY_CAMERA_UP = 0x217
538
+ KEY_CAMERA_DOWN = 0x218
539
+ KEY_CAMERA_LEFT = 0x219
540
+ KEY_CAMERA_RIGHT = 0x21a
541
+
542
+ KEY_ATTENDANT_ON = 0x21b
543
+ KEY_ATTENDANT_OFF = 0x21c
544
+ KEY_ATTENDANT_TOGGLE = 0x21d # /* Attendant call on or off */
545
+ KEY_LIGHTS_TOGGLE = 0x21e # /* Reading light on or off */
546
+
547
+ BTN_DPAD_UP = 0x220
548
+ BTN_DPAD_DOWN = 0x221
549
+ BTN_DPAD_LEFT = 0x222
550
+ BTN_DPAD_RIGHT = 0x223
551
+
552
+ KEY_ALS_TOGGLE = 0x230 # /* Ambient light sensor */
553
+
554
+ KEY_BUTTONCONFIG = 0x240 # AL Button Configuration */
555
+ KEY_TASKMANAGER = 0x241 # /* AL Task/Project Manager */
556
+ KEY_JOURNAL = 0x242 # /* AL Log/Journal/Timecard */
557
+ KEY_CONTROLPANEL = 0x243 # /* AL Control Panel */
558
+ KEY_APPSELECT = 0x244 # /* AL Select Task/Application */
559
+ KEY_SCREENSAVER = 0x245 # /* AL Screen Saver */
560
+ KEY_VOICECOMMAND = 0x246 # Listening Voice Command */
561
+
562
+ KEY_BRIGHTNESS_MIN = 0x250 # /* Set Brightness to Minimum */
563
+ KEY_BRIGHTNESS_MAX = 0x251 # /* Set Brightness to Maximum */
564
+
565
+ KEY_KBDINPUTASSIST_PREV = 0x260
566
+ KEY_KBDINPUTASSIST_NEXT = 0x261
567
+ KEY_KBDINPUTASSIST_PREVGROUP = 0x262
568
+ KEY_KBDINPUTASSIST_NEXTGROUP = 0x263
569
+ KEY_KBDINPUTASSIST_ACCEPT = 0x264
570
+ KEY_KBDINPUTASSIST_CANCEL = 0x265
571
+
572
+ BTN_TRIGGER_HAPPY = 0x2c0
573
+ BTN_TRIGGER_HAPPY1 = 0x2c0
574
+ BTN_TRIGGER_HAPPY2 = 0x2c1
575
+ BTN_TRIGGER_HAPPY3 = 0x2c2
576
+ BTN_TRIGGER_HAPPY4 = 0x2c3
577
+ BTN_TRIGGER_HAPPY5 = 0x2c4
578
+ BTN_TRIGGER_HAPPY6 = 0x2c5
579
+ BTN_TRIGGER_HAPPY7 = 0x2c6
580
+ BTN_TRIGGER_HAPPY8 = 0x2c7
581
+ BTN_TRIGGER_HAPPY9 = 0x2c8
582
+ BTN_TRIGGER_HAPPY10 = 0x2c9
583
+ BTN_TRIGGER_HAPPY11 = 0x2ca
584
+ BTN_TRIGGER_HAPPY12 = 0x2cb
585
+ BTN_TRIGGER_HAPPY13 = 0x2cc
586
+ BTN_TRIGGER_HAPPY14 = 0x2cd
587
+ BTN_TRIGGER_HAPPY15 = 0x2ce
588
+ BTN_TRIGGER_HAPPY16 = 0x2cf
589
+ BTN_TRIGGER_HAPPY17 = 0x2d0
590
+ BTN_TRIGGER_HAPPY18 = 0x2d1
591
+ BTN_TRIGGER_HAPPY19 = 0x2d2
592
+ BTN_TRIGGER_HAPPY20 = 0x2d3
593
+ BTN_TRIGGER_HAPPY21 = 0x2d4
594
+ BTN_TRIGGER_HAPPY22 = 0x2d5
595
+ BTN_TRIGGER_HAPPY23 = 0x2d6
596
+ BTN_TRIGGER_HAPPY24 = 0x2d7
597
+ BTN_TRIGGER_HAPPY25 = 0x2d8
598
+ BTN_TRIGGER_HAPPY26 = 0x2d9
599
+ BTN_TRIGGER_HAPPY27 = 0x2da
600
+ BTN_TRIGGER_HAPPY28 = 0x2db
601
+ BTN_TRIGGER_HAPPY29 = 0x2dc
602
+ BTN_TRIGGER_HAPPY30 = 0x2dd
603
+ BTN_TRIGGER_HAPPY31 = 0x2de
604
+ BTN_TRIGGER_HAPPY32 = 0x2df
605
+ BTN_TRIGGER_HAPPY33 = 0x2e0
606
+ BTN_TRIGGER_HAPPY34 = 0x2e1
607
+ BTN_TRIGGER_HAPPY35 = 0x2e2
608
+ BTN_TRIGGER_HAPPY36 = 0x2e3
609
+ BTN_TRIGGER_HAPPY37 = 0x2e4
610
+ BTN_TRIGGER_HAPPY38 = 0x2e5
611
+ BTN_TRIGGER_HAPPY39 = 0x2e6
612
+ BTN_TRIGGER_HAPPY40 = 0x2e7
613
+ #
614
+ # /* We avoid low common keys in module aliases so they don't get huge. */
615
+ KEY_MIN_INTERESTING = KEY_MUTE
616
+ KEY_MAX = 0x2ff
617
+ KEY_CNT = (KEY_MAX + 1)
618
+ end
619
+ include KeysAndButtons
620
+ end
621
+ end
622
+ end
623
+ end
624
+ end
@@ -0,0 +1,131 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fusuma
4
+ module Plugin
5
+ module Sendkey
6
+ module Linux
7
+ # https://github.com/jtzero/vigilem-evdev/blob/master/lib/vigilem/evdev/system/ioctl.rb?plain=1#L16
8
+ module IOCTRL
9
+ # @return [Integer] 8
10
+ def _IOC_NRBITS
11
+ 8
12
+ end
13
+
14
+ # @return [Integer] 8
15
+ def _IOC_TYPEBITS
16
+ 8
17
+ end
18
+
19
+ # @return [Integer] 14
20
+ def _IOC_SIZEBITS
21
+ 14
22
+ end
23
+
24
+ # @return [Integer] 2
25
+ def _IOC_DIRBITS
26
+ 2
27
+ end
28
+
29
+ # @return [Integer]
30
+ def _IOC_NRMASK
31
+ ((1 << _IOC_NRBITS) - 1)
32
+ end
33
+
34
+ # @return [Integer]
35
+ def _IOC_TYPEMASK
36
+ ((1 << _IOC_TYPEBITS) - 1)
37
+ end
38
+
39
+ # @return [Integer]
40
+ def _IOC_SIZEMASK
41
+ ((1 << _IOC_SIZEBITS) - 1)
42
+ end
43
+
44
+ # @return [Integer]
45
+ def _IOC_DIRMASK
46
+ ((1 << _IOC_DIRBITS) - 1)
47
+ end
48
+
49
+ # @return [Integer]
50
+ def _IOC_NRSHIFT
51
+ 0
52
+ end
53
+
54
+ # @return [Integer]
55
+ def _IOC_TYPESHIFT
56
+ (_IOC_NRSHIFT + _IOC_NRBITS)
57
+ end
58
+
59
+ # @return [Integer]
60
+ def _IOC_SIZESHIFT
61
+ (_IOC_TYPESHIFT + _IOC_TYPEBITS)
62
+ end
63
+
64
+ # @return [Integer]
65
+ def _IOC_DIRSHIFT
66
+ (_IOC_SIZESHIFT + _IOC_SIZEBITS)
67
+ end
68
+
69
+ def IOC_IN
70
+ (_IOC_WRITE << _IOC_DIRSHIFT)
71
+ end
72
+
73
+ def IOC_OUT
74
+ (_IOC_READ << _IOC_DIRSHIFT)
75
+ end
76
+
77
+ def IOC_INOUT
78
+ ((_IOC_WRITE | _IOC_READ) << _IOC_DIRSHIFT)
79
+ end
80
+
81
+ # @return [Integer]
82
+ def IOCSIZE_MASK
83
+ (_IOC_SIZEMASK << _IOC_SIZESHIFT)
84
+ end
85
+
86
+ # @return [Integer]
87
+ def IOCSIZE_SHIFT
88
+ _IOC_SIZESHIFT
89
+ end
90
+
91
+ # direction bits
92
+
93
+ # no data transfer
94
+ # @return [Integer] 0
95
+ def _IOC_NONE
96
+ 0
97
+ end
98
+
99
+ # @return [Integer] 1
100
+ def _IOC_WRITE
101
+ 1
102
+ end
103
+
104
+ # @return [Integer] 2
105
+ def _IOC_READ
106
+ 2
107
+ end
108
+
109
+ #
110
+ # @param [Integer] dir The direction of data transfer
111
+ # @option dir [Integer] _IOC_NONE
112
+ # @option dir [Integer] _IOC_READ
113
+ # @option dir [Integer] _IOC_WRITE
114
+ # @option dir [Integer] _IOC_READ|_IOC_WRITE
115
+ # @!macro type_nr_fmt_return_Integer
116
+ def _IOC(dir, type, nr, size)
117
+ (native_signed_long(dir << _IOC_DIRSHIFT) | (type.ord << _IOC_TYPESHIFT) |
118
+ (nr << _IOC_NRSHIFT) | (size << _IOC_SIZESHIFT))
119
+ end
120
+
121
+ # https://github.com/jtzero/vigilem-support/blob/4ce72bd01980ed9049e8c03c3d1437f1d4d0de7a/lib/vigilem/support/system.rb#L59C1-L64C8
122
+ # @param [Numeric] number
123
+ # @return the same number converted to a native signed long
124
+ def native_signed_long(number)
125
+ [number].pack("l!").unpack1("l!")
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fusuma
4
+ module Plugin
5
+ module Sendkey
6
+ module Linux
7
+ end
8
+ end
9
+ end
10
+ end
@@ -3,7 +3,7 @@
3
3
  module Fusuma
4
4
  module Plugin
5
5
  module Sendkey
6
- VERSION = "0.13.0"
6
+ VERSION = "0.13.2"
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fusuma-plugin-sendkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - iberianpig
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-09-26 00:00:00.000000000 Z
11
+ date: 2024-10-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fusuma
@@ -57,6 +57,9 @@ files:
57
57
  - lib/fusuma/plugin/sendkey.rb
58
58
  - lib/fusuma/plugin/sendkey/device.rb
59
59
  - lib/fusuma/plugin/sendkey/keyboard.rb
60
+ - lib/fusuma/plugin/sendkey/linux.rb
61
+ - lib/fusuma/plugin/sendkey/linux/input.rb
62
+ - lib/fusuma/plugin/sendkey/linux/ioctl.rb
60
63
  - lib/fusuma/plugin/sendkey/version.rb
61
64
  homepage: https://github.com/iberianpig/fusuma-plugin-sendkey
62
65
  licenses: