puppeteer-ruby 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +41 -0
- data/.rubocop.yml +273 -6
- data/README.md +11 -1
- data/Rakefile +1 -1
- data/bin/console +1 -1
- data/lib/puppeteer.rb +2 -2
- data/lib/puppeteer/async_await_behavior.rb +17 -19
- data/lib/puppeteer/browser.rb +5 -5
- data/lib/puppeteer/browser_context.rb +2 -2
- data/lib/puppeteer/browser_runner.rb +22 -3
- data/lib/puppeteer/cdp_session.rb +2 -2
- data/lib/puppeteer/connection.rb +4 -4
- data/lib/puppeteer/debug_print.rb +1 -1
- data/lib/puppeteer/dom_world.rb +19 -3
- data/lib/puppeteer/element_handle.rb +3 -3
- data/lib/puppeteer/emulation_manager.rb +2 -2
- data/lib/puppeteer/errors.rb +2 -2
- data/lib/puppeteer/execution_context.rb +6 -6
- data/lib/puppeteer/frame.rb +2 -2
- data/lib/puppeteer/frame_manager.rb +7 -7
- data/lib/puppeteer/keyboard.rb +1 -1
- data/lib/puppeteer/keyboard/us_keyboard_layout.rb +255 -255
- data/lib/puppeteer/launcher.rb +1 -1
- data/lib/puppeteer/launcher/base.rb +2 -2
- data/lib/puppeteer/launcher/chrome.rb +6 -6
- data/lib/puppeteer/lifecycle_watcher.rb +7 -9
- data/lib/puppeteer/network_manager.rb +1 -1
- data/lib/puppeteer/page.rb +18 -18
- data/lib/puppeteer/remote_object.rb +8 -8
- data/lib/puppeteer/target.rb +2 -2
- data/lib/puppeteer/version.rb +1 -1
- data/lib/puppeteer/wait_task.rb +1 -1
- data/lib/puppeteer/web_socket.rb +3 -0
- data/puppeteer-ruby.gemspec +2 -2
- metadata +4 -4
- data/example.rb +0 -7
@@ -12,7 +12,7 @@ class Puppeteer::BrowserContext
|
|
12
12
|
|
13
13
|
# @return {!Array<!Target>} target
|
14
14
|
def targets
|
15
|
-
@browser.targets.select{ |target| target.browser_context == self }
|
15
|
+
@browser.targets.select { |target| target.browser_context == self }
|
16
16
|
end
|
17
17
|
|
18
18
|
# @param {function(!Target):boolean} predicate
|
@@ -27,7 +27,7 @@ class Puppeteer::BrowserContext
|
|
27
27
|
|
28
28
|
# @return {!Promise<!Array<!Puppeteer.Page>>}
|
29
29
|
def pages
|
30
|
-
targets.select{ |target| target.type == 'page' }.map(&:page).reject{ |page| !page }
|
30
|
+
targets.select { |target| target.type == 'page' }.map(&:page).reject { |page| !page }
|
31
31
|
end
|
32
32
|
|
33
33
|
def incognito?
|
@@ -23,10 +23,17 @@ class Puppeteer::BrowserRunner
|
|
23
23
|
def initialize(env, executable_path, args)
|
24
24
|
stdin, @stdout, @stderr, @thread = Open3.popen3(env, executable_path, *args)
|
25
25
|
stdin.close
|
26
|
+
@pid = @thread.pid
|
27
|
+
end
|
28
|
+
|
29
|
+
def kill
|
30
|
+
Process.kill(:KILL, @pid)
|
31
|
+
rescue Errno::ESRCH
|
32
|
+
# already killed
|
26
33
|
end
|
27
34
|
|
28
35
|
def dispose
|
29
|
-
[@stdout, @stderr].each{ |io| io.close unless io.closed? }
|
36
|
+
[@stdout, @stderr].each { |io| io.close unless io.closed? }
|
30
37
|
@thread.join
|
31
38
|
end
|
32
39
|
|
@@ -104,12 +111,24 @@ class Puppeteer::BrowserRunner
|
|
104
111
|
if @temp_directory
|
105
112
|
kill
|
106
113
|
elsif @connection
|
107
|
-
|
114
|
+
begin
|
115
|
+
@connection.send_message('Browser.close')
|
116
|
+
rescue
|
117
|
+
kill
|
118
|
+
end
|
108
119
|
end
|
120
|
+
|
121
|
+
@process_closing.call
|
109
122
|
end
|
110
123
|
|
111
124
|
# @return {Promise}
|
112
125
|
def kill
|
126
|
+
unless @closed
|
127
|
+
@proc.kill
|
128
|
+
end
|
129
|
+
if @temp_directory
|
130
|
+
FileUtils.rm_rf(@temp_directory)
|
131
|
+
end
|
113
132
|
end
|
114
133
|
|
115
134
|
|
@@ -121,7 +140,7 @@ class Puppeteer::BrowserRunner
|
|
121
140
|
transport = Puppeteer::WebSocketTransport.create(browser_ws_endpoint)
|
122
141
|
@connection = Puppeteer::Connection.new(browser_ws_endpoint, transport, slow_mo)
|
123
142
|
else
|
124
|
-
raise NotImplementedError.new(
|
143
|
+
raise NotImplementedError.new('PipeTransport is not yet implemented')
|
125
144
|
end
|
126
145
|
|
127
146
|
@connection
|
@@ -2,7 +2,7 @@ class Puppeteer::CDPSession
|
|
2
2
|
include Puppeteer::EventCallbackable
|
3
3
|
using Puppeteer::AsyncAwaitBehavior
|
4
4
|
|
5
|
-
class Error < StandardError
|
5
|
+
class Error < StandardError; end
|
6
6
|
|
7
7
|
# @param {!Connection} connection
|
8
8
|
# @param {string} targetType
|
@@ -65,7 +65,7 @@ class Puppeteer::CDPSession
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def handle_closed
|
68
|
-
@callbacks.
|
68
|
+
@callbacks.each_value do |callback|
|
69
69
|
callback.reject(
|
70
70
|
Puppeteer::Connection::ProtocolError.new(
|
71
71
|
method: callback.method,
|
data/lib/puppeteer/connection.rb
CHANGED
@@ -121,7 +121,7 @@ class Puppeteer::Connection
|
|
121
121
|
|
122
122
|
def handle_message(message)
|
123
123
|
if skip_debug_print?(message['method'])
|
124
|
-
debug_print
|
124
|
+
debug_print '.'
|
125
125
|
@prev_log_skipped = true
|
126
126
|
else
|
127
127
|
debug_print "\n" if @prev_log_skipped
|
@@ -190,7 +190,7 @@ class Puppeteer::Connection
|
|
190
190
|
error_message: response['error']['message'],
|
191
191
|
error_data: response['error']['data']))
|
192
192
|
else
|
193
|
-
callback.resolve(message[
|
193
|
+
callback.resolve(message['result'])
|
194
194
|
end
|
195
195
|
end
|
196
196
|
else
|
@@ -207,14 +207,14 @@ class Puppeteer::Connection
|
|
207
207
|
@closed = true
|
208
208
|
@transport.on_message
|
209
209
|
@transport.on_close
|
210
|
-
@callbacks.
|
210
|
+
@callbacks.each_value do |callback|
|
211
211
|
callback.reject(
|
212
212
|
ProtocolError.new(
|
213
213
|
method: callback.method,
|
214
214
|
error_message: 'Target Closed.'))
|
215
215
|
end
|
216
216
|
@callbacks.clear
|
217
|
-
@sessions.
|
217
|
+
@sessions.each_value do |session|
|
218
218
|
session.handle_closed
|
219
219
|
end
|
220
220
|
@sessions.clear
|
data/lib/puppeteer/dom_world.rb
CHANGED
@@ -20,13 +20,29 @@ class Puppeteer::DOMWorld
|
|
20
20
|
|
21
21
|
# @param {?Puppeteer.ExecutionContext} context
|
22
22
|
def context=(context)
|
23
|
+
# D, [2020-04-12T22:45:03.938754 #46154] DEBUG -- : RECV << {"method"=>"Runtime.executionContextCreated", "params"=>{"context"=>{"id"=>3, "origin"=>"https://github.com", "name"=>"", "auxData"=>{"isDefault"=>true, "type"=>"default", "frameId"=>"3AD7F1E82BCBA88BFE31D03BC49FF6CB"}}}, "sessionId"=>"636CEF0C4FEAFC4FE815E9E7B5F7BA68"}
|
24
|
+
# D, [2020-04-12T22:45:03.938856 #46154] DEBUG -- : RECV << {"method"=>"Runtime.executionContextCreated", "params"=>{"context"=>{"id"=>4, "origin"=>"://", "name"=>"__puppeteer_utility_world__", "auxData"=>{"isDefault"=>false, "type"=>"isolated", "frameId"=>"3AD7F1E82BCBA88BFE31D03BC49FF6CB"}}}, "sessionId"=>"636CEF0C4FEAFC4FE815E9E7B5F7BA68"}
|
25
|
+
# D, [2020-04-12T22:45:03.938960 #46154] DEBUG -- : RECV << {"method"=>"Runtime.executionContextDestroyed", "params"=>{"executionContextId"=>1}, "sessionId"=>"636CEF0C4FEAFC4FE815E9E7B5F7BA68"}
|
26
|
+
# D, [2020-04-12T22:45:03.939110 #46154] DEBUG -- : RECV << {"method"=>"Page.frameNavigated", "params"=>{"frame"=>{"id"=>"3AD7F1E82BCBA88BFE31D03BC49FF6CB", "loaderId"=>"301B349884E582986C502CBE020966DF", "url"=>"https://github.com/", "securityOrigin"=>"https://github.com", "mimeType"=>"text/html"}}, "sessionId"=>"636CEF0C4FEAFC4FE815E9E7B5F7BA68"}
|
27
|
+
# D, [2020-04-12T22:45:03.939793 #46154] DEBUG -- : RECV << {"method"=>"Runtime.executionContextDestroyed", "params"=>{"executionContextId"=>2}, "sessionId"=>"636CEF0C4FEAFC4FE815E9E7B5F7BA68"}
|
28
|
+
# executionContextDestroyed is often notified after executionContextCreated.
|
29
|
+
|
23
30
|
if context
|
31
|
+
if @context_promise.fulfilled?
|
32
|
+
@document = nil
|
33
|
+
@context_promise = resolvable_future
|
34
|
+
@pending_destroy_exists = true
|
35
|
+
end
|
24
36
|
@context_promise.fulfill(context)
|
25
37
|
# for (const waitTask of this._waitTasks)
|
26
38
|
# waitTask.rerun();
|
27
39
|
else
|
28
|
-
@
|
29
|
-
|
40
|
+
if @pending_destroy_exists
|
41
|
+
@pending_destroy_exists = false
|
42
|
+
else
|
43
|
+
@document = nil
|
44
|
+
@context_promise = resolvable_future
|
45
|
+
end
|
30
46
|
end
|
31
47
|
end
|
32
48
|
|
@@ -41,7 +57,7 @@ class Puppeteer::DOMWorld
|
|
41
57
|
end
|
42
58
|
end
|
43
59
|
|
44
|
-
class DetachedError < StandardError
|
60
|
+
class DetachedError < StandardError; end
|
45
61
|
|
46
62
|
# @return {!Promise<!Puppeteer.ExecutionContext>}
|
47
63
|
def execution_context
|
@@ -20,7 +20,7 @@ class Puppeteer::ElementHandle < Puppeteer::JSHandle
|
|
20
20
|
|
21
21
|
def content_frame
|
22
22
|
node_info = @remote_object.node_info
|
23
|
-
frame_id = node_info[
|
23
|
+
frame_id = node_info['node']['frameId']
|
24
24
|
if frame_id.is_a?(String)
|
25
25
|
@frame_manager.frame(frame_id)
|
26
26
|
else
|
@@ -328,7 +328,7 @@ class Puppeteer::ElementHandle < Puppeteer::JSHandle
|
|
328
328
|
# @param selector [String]
|
329
329
|
def S(selector)
|
330
330
|
handle = evaluate_handle(
|
331
|
-
|
331
|
+
'(element, selector) => element.querySelector(selector)',
|
332
332
|
selector,
|
333
333
|
)
|
334
334
|
element = handle.as_element
|
@@ -344,7 +344,7 @@ class Puppeteer::ElementHandle < Puppeteer::JSHandle
|
|
344
344
|
# @param selector [String]
|
345
345
|
def SS(selector)
|
346
346
|
handles = evaluate_handle(
|
347
|
-
|
347
|
+
'(element, selector) => element.querySelectorAll(selector)',
|
348
348
|
selector,
|
349
349
|
)
|
350
350
|
properties = handles.properties
|
@@ -32,10 +32,10 @@ class Puppeteer::EmulationManager
|
|
32
32
|
),
|
33
33
|
)
|
34
34
|
|
35
|
-
reload_needed = @emulating_mobile != mobile || @hasTouch != has_touch
|
35
|
+
reload_needed = @emulating_mobile != mobile || @hasTouch != has_touch
|
36
36
|
@emulating_mobile = mobile
|
37
37
|
@has_touch = has_touch
|
38
|
-
|
38
|
+
reload_needed
|
39
39
|
end
|
40
40
|
|
41
41
|
# @param viewport [Puppeteer::Viewport]
|
data/lib/puppeteer/errors.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
# ref: https://github.com/puppeteer/puppeteer/blob/master/lib/Errors.js
|
2
|
-
class Puppeteer::TimeoutError < StandardError
|
2
|
+
class Puppeteer::TimeoutError < StandardError; end
|
3
3
|
|
4
|
-
class Puppeteer::WebSocktTransportError < StandardError
|
4
|
+
class Puppeteer::WebSocktTransportError < StandardError; end
|
@@ -55,7 +55,7 @@ class Puppeteer::ExecutionContext
|
|
55
55
|
)
|
56
56
|
# }).catch(rewriteError);
|
57
57
|
|
58
|
-
exception_details = result[
|
58
|
+
exception_details = result['exceptionDetails']
|
59
59
|
if exception_details
|
60
60
|
raise EvaluationError.new("Evaluation failed: #{exception_details}")
|
61
61
|
end
|
@@ -111,10 +111,10 @@ class Puppeteer::ExecutionContext
|
|
111
111
|
returnByValue: @return_by_value,
|
112
112
|
awaitPromise: true,
|
113
113
|
userGesture: true,
|
114
|
-
)
|
114
|
+
) # .catch(rewriteError);
|
115
115
|
|
116
|
-
exception_details = result[
|
117
|
-
remote_object = Puppeteer::RemoteObject.new(result[
|
116
|
+
exception_details = result['exceptionDetails']
|
117
|
+
remote_object = Puppeteer::RemoteObject.new(result['result'])
|
118
118
|
|
119
119
|
if exception_details
|
120
120
|
raise EvaluationError.new("Evaluation failed: #{exceptionDetails}")
|
@@ -176,7 +176,7 @@ class Puppeteer::ExecutionContext
|
|
176
176
|
end
|
177
177
|
end
|
178
178
|
|
179
|
-
class EvaluationError < StandardError
|
179
|
+
class EvaluationError < StandardError; end
|
180
180
|
|
181
181
|
# @param return_by_value [Boolean]
|
182
182
|
# @param page_function [String]
|
@@ -186,7 +186,7 @@ class Puppeteer::ExecutionContext
|
|
186
186
|
# https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer
|
187
187
|
# But we don't support the syntax here.
|
188
188
|
js_object =
|
189
|
-
if [
|
189
|
+
if ['=>', 'async', 'function'].any? { |keyword| page_function.include?(keyword) }
|
190
190
|
JavaScriptFunction.new(self, page_function, args, return_by_value)
|
191
191
|
else
|
192
192
|
JavaScriptExpression.new(self, page_function, return_by_value)
|
data/lib/puppeteer/frame.rb
CHANGED
@@ -211,7 +211,7 @@ class Puppeteer::Frame
|
|
211
211
|
main_execution_context = @main_world.execution_context
|
212
212
|
result = main_execution_context.adopt_element_handle(handle)
|
213
213
|
handle.dispose
|
214
|
-
|
214
|
+
result
|
215
215
|
end
|
216
216
|
|
217
217
|
# @param {string} xpath
|
@@ -225,7 +225,7 @@ class Puppeteer::Frame
|
|
225
225
|
main_execution_context = @main_world.execution_context
|
226
226
|
result = main_execution_context.adopt_element_handle(handle)
|
227
227
|
handle.dispose
|
228
|
-
|
228
|
+
result
|
229
229
|
end
|
230
230
|
|
231
231
|
# @param {Function|string} pageFunction
|
@@ -80,7 +80,7 @@ class Puppeteer::FrameManager
|
|
80
80
|
|
81
81
|
attr_reader :network_manager
|
82
82
|
|
83
|
-
class NavigationError < StandardError
|
83
|
+
class NavigationError < StandardError; end
|
84
84
|
|
85
85
|
# @param frame [Puppeteer::Frame]
|
86
86
|
# @param url [String]
|
@@ -101,14 +101,14 @@ class Puppeteer::FrameManager
|
|
101
101
|
ensure_new_document_navigation = false
|
102
102
|
|
103
103
|
begin
|
104
|
-
navigate = future
|
104
|
+
navigate = future do
|
105
105
|
result = @client.send_message('Page.navigate', navigate_params)
|
106
106
|
loader_id = result['loaderId']
|
107
107
|
ensure_new_document_navigation = !!loader_id
|
108
108
|
if result['errorText']
|
109
109
|
raise NavigationError.new("#{result['errorText']} at #{url}")
|
110
110
|
end
|
111
|
-
|
111
|
+
end
|
112
112
|
await_any(
|
113
113
|
navigate,
|
114
114
|
watcher.timeout_or_termination_promise,
|
@@ -253,7 +253,7 @@ class Puppeteer::FrameManager
|
|
253
253
|
end
|
254
254
|
|
255
255
|
# Update frame payload.
|
256
|
-
frame.navigated(frame_payload)
|
256
|
+
frame.navigated(frame_payload)
|
257
257
|
|
258
258
|
emit_event 'Events.FrameManager.FrameNavigated', frame
|
259
259
|
end
|
@@ -346,12 +346,12 @@ class Puppeteer::FrameManager
|
|
346
346
|
# To avoid the problem, just skip recent created ids.
|
347
347
|
now = Time.now
|
348
348
|
context_ids_to_skip = @context_id_created.select { |k, v| now - v < 1 }.keys
|
349
|
-
@context_id_to_context.reject{ |k, v| context_ids_to_skip.include?(k) }.
|
349
|
+
@context_id_to_context.reject { |k, v| context_ids_to_skip.include?(k) }.each_value do |context|
|
350
350
|
if context.world
|
351
351
|
context.world.context = nil
|
352
352
|
end
|
353
353
|
end
|
354
|
-
@context_id_to_context.select!{ |k, v| context_ids_to_skip.include?(k) }
|
354
|
+
@context_id_to_context.select! { |k, v| context_ids_to_skip.include?(k) }
|
355
355
|
end
|
356
356
|
|
357
357
|
def execution_context_by_id(context_id)
|
@@ -359,7 +359,7 @@ class Puppeteer::FrameManager
|
|
359
359
|
if !context
|
360
360
|
raise "INTERNAL ERROR: missing context with id = #{context_id}"
|
361
361
|
end
|
362
|
-
|
362
|
+
context
|
363
363
|
end
|
364
364
|
|
365
365
|
# @param {!Frame} frame
|
data/lib/puppeteer/keyboard.rb
CHANGED
@@ -35,7 +35,7 @@ class Puppeteer::Keyboard
|
|
35
35
|
location: description.location,
|
36
36
|
isKeypad: description.location == 3,
|
37
37
|
}.compact
|
38
|
-
@client.send_message('Input.dispatchKeyEvent', params)
|
38
|
+
@client.send_message('Input.dispatchKeyEvent', params)
|
39
39
|
end
|
40
40
|
|
41
41
|
# @param key [String]
|
@@ -24,260 +24,260 @@ class Puppeteer::Keyboard
|
|
24
24
|
end
|
25
25
|
|
26
26
|
KEY_DEFINITIONS = {
|
27
|
-
'0': KeyDefinition.new({'keyCode': 48, 'key': '0', 'code': 'Digit0'}),
|
28
|
-
'1': KeyDefinition.new({'keyCode': 49, 'key': '1', 'code': 'Digit1'}),
|
29
|
-
'2': KeyDefinition.new({'keyCode': 50, 'key': '2', 'code': 'Digit2'}),
|
30
|
-
'3': KeyDefinition.new({'keyCode': 51, 'key': '3', 'code': 'Digit3'}),
|
31
|
-
'4': KeyDefinition.new({'keyCode': 52, 'key': '4', 'code': 'Digit4'}),
|
32
|
-
'5': KeyDefinition.new({'keyCode': 53, 'key': '5', 'code': 'Digit5'}),
|
33
|
-
'6': KeyDefinition.new({'keyCode': 54, 'key': '6', 'code': 'Digit6'}),
|
34
|
-
'7': KeyDefinition.new({'keyCode': 55, 'key': '7', 'code': 'Digit7'}),
|
35
|
-
'8': KeyDefinition.new({'keyCode': 56, 'key': '8', 'code': 'Digit8'}),
|
36
|
-
'9': KeyDefinition.new({'keyCode': 57, 'key': '9', 'code': 'Digit9'}),
|
37
|
-
'Power': KeyDefinition.new({'key': 'Power', 'code': 'Power'}),
|
38
|
-
'Eject': KeyDefinition.new({'key': 'Eject', 'code': 'Eject'}),
|
39
|
-
'Abort': KeyDefinition.new({'keyCode': 3, 'code': 'Abort', 'key': 'Cancel'}),
|
40
|
-
'Help': KeyDefinition.new({'keyCode': 6, 'code': 'Help', 'key': 'Help'}),
|
41
|
-
'Backspace': KeyDefinition.new({'keyCode': 8, 'code': 'Backspace', 'key': 'Backspace'}),
|
42
|
-
'Tab': KeyDefinition.new({'keyCode': 9, 'code': 'Tab', 'key': 'Tab'}),
|
43
|
-
'Numpad5': KeyDefinition.new({'keyCode': 12, 'shiftKeyCode': 101, 'key': 'Clear', 'code': 'Numpad5', 'shiftKey': '5', 'location': 3}),
|
44
|
-
'NumpadEnter': KeyDefinition.new({'keyCode': 13, 'code': 'NumpadEnter', 'key': 'Enter', 'text': '\r', 'location': 3}),
|
45
|
-
'Enter': KeyDefinition.new({'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r'}),
|
46
|
-
'\r': KeyDefinition.new({'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r'}),
|
47
|
-
'\n': KeyDefinition.new({'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r'}),
|
48
|
-
'ShiftLeft': KeyDefinition.new({'keyCode': 16, 'code': 'ShiftLeft', 'key': 'Shift', 'location': 1}),
|
49
|
-
'ShiftRight': KeyDefinition.new({'keyCode': 16, 'code': 'ShiftRight', 'key': 'Shift', 'location': 2}),
|
50
|
-
'ControlLeft': KeyDefinition.new({'keyCode': 17, 'code': 'ControlLeft', 'key': 'Control', 'location': 1}),
|
51
|
-
'ControlRight': KeyDefinition.new({'keyCode': 17, 'code': 'ControlRight', 'key': 'Control', 'location': 2}),
|
52
|
-
'AltLeft': KeyDefinition.new({'keyCode': 18, 'code': 'AltLeft', 'key': 'Alt', 'location': 1}),
|
53
|
-
'AltRight': KeyDefinition.new({'keyCode': 18, 'code': 'AltRight', 'key': 'Alt', 'location': 2}),
|
54
|
-
'Pause': KeyDefinition.new({'keyCode': 19, 'code': 'Pause', 'key': 'Pause'}),
|
55
|
-
'CapsLock': KeyDefinition.new({'keyCode': 20, 'code': 'CapsLock', 'key': 'CapsLock'}),
|
56
|
-
'Escape': KeyDefinition.new({'keyCode': 27, 'code': 'Escape', 'key': 'Escape'}),
|
57
|
-
'Convert': KeyDefinition.new({'keyCode': 28, 'code': 'Convert', 'key': 'Convert'}),
|
58
|
-
'NonConvert': KeyDefinition.new({'keyCode': 29, 'code': 'NonConvert', 'key': 'NonConvert'}),
|
59
|
-
'Space': KeyDefinition.new({'keyCode': 32, 'code': 'Space', 'key': ' '}),
|
60
|
-
'Numpad9': KeyDefinition.new({'keyCode': 33, 'shiftKeyCode': 105, 'key': 'PageUp', 'code': 'Numpad9', 'shiftKey': '9', 'location': 3}),
|
61
|
-
'PageUp': KeyDefinition.new({'keyCode': 33, 'code': 'PageUp', 'key': 'PageUp'}),
|
62
|
-
'Numpad3': KeyDefinition.new({'keyCode': 34, 'shiftKeyCode': 99, 'key': 'PageDown', 'code': 'Numpad3', 'shiftKey': '3', 'location': 3}),
|
63
|
-
'PageDown': KeyDefinition.new({'keyCode': 34, 'code': 'PageDown', 'key': 'PageDown'}),
|
64
|
-
'End': KeyDefinition.new({'keyCode': 35, 'code': 'End', 'key': 'End'}),
|
65
|
-
'Numpad1': KeyDefinition.new({'keyCode': 35, 'shiftKeyCode': 97, 'key': 'End', 'code': 'Numpad1', 'shiftKey': '1', 'location': 3}),
|
66
|
-
'Home': KeyDefinition.new({'keyCode': 36, 'code': 'Home', 'key': 'Home'}),
|
67
|
-
'Numpad7': KeyDefinition.new({'keyCode': 36, 'shiftKeyCode': 103, 'key': 'Home', 'code': 'Numpad7', 'shiftKey': '7', 'location': 3}),
|
68
|
-
'ArrowLeft': KeyDefinition.new({'keyCode': 37, 'code': 'ArrowLeft', 'key': 'ArrowLeft'}),
|
69
|
-
'Numpad4': KeyDefinition.new({'keyCode': 37, 'shiftKeyCode': 100, 'key': 'ArrowLeft', 'code': 'Numpad4', 'shiftKey': '4', 'location': 3}),
|
70
|
-
'Numpad8': KeyDefinition.new({'keyCode': 38, 'shiftKeyCode': 104, 'key': 'ArrowUp', 'code': 'Numpad8', 'shiftKey': '8', 'location': 3}),
|
71
|
-
'ArrowUp': KeyDefinition.new({'keyCode': 38, 'code': 'ArrowUp', 'key': 'ArrowUp'}),
|
72
|
-
'ArrowRight': KeyDefinition.new({'keyCode': 39, 'code': 'ArrowRight', 'key': 'ArrowRight'}),
|
73
|
-
'Numpad6': KeyDefinition.new({'keyCode': 39, 'shiftKeyCode': 102, 'key': 'ArrowRight', 'code': 'Numpad6', 'shiftKey': '6', 'location': 3}),
|
74
|
-
'Numpad2': KeyDefinition.new({'keyCode': 40, 'shiftKeyCode': 98, 'key': 'ArrowDown', 'code': 'Numpad2', 'shiftKey': '2', 'location': 3}),
|
75
|
-
'ArrowDown': KeyDefinition.new({'keyCode': 40, 'code': 'ArrowDown', 'key': 'ArrowDown'}),
|
76
|
-
'Select': KeyDefinition.new({'keyCode': 41, 'code': 'Select', 'key': 'Select'}),
|
77
|
-
'Open': KeyDefinition.new({'keyCode': 43, 'code': 'Open', 'key': 'Execute'}),
|
78
|
-
'PrintScreen': KeyDefinition.new({'keyCode': 44, 'code': 'PrintScreen', 'key': 'PrintScreen'}),
|
79
|
-
'Insert': KeyDefinition.new({'keyCode': 45, 'code': 'Insert', 'key': 'Insert'}),
|
80
|
-
'Numpad0': KeyDefinition.new({'keyCode': 45, 'shiftKeyCode': 96, 'key': 'Insert', 'code': 'Numpad0', 'shiftKey': '0', 'location': 3}),
|
81
|
-
'Delete': KeyDefinition.new({'keyCode': 46, 'code': 'Delete', 'key': 'Delete'}),
|
82
|
-
'NumpadDecimal': KeyDefinition.new({'keyCode': 46, 'shiftKeyCode': 110, 'code': 'NumpadDecimal', 'key': '\u0000', 'shiftKey': '.', 'location': 3}),
|
83
|
-
'Digit0': KeyDefinition.new({'keyCode': 48, 'code': 'Digit0', 'shiftKey': ')', 'key': '0'}),
|
84
|
-
'Digit1': KeyDefinition.new({'keyCode': 49, 'code': 'Digit1', 'shiftKey': '!', 'key': '1'}),
|
85
|
-
'Digit2': KeyDefinition.new({'keyCode': 50, 'code': 'Digit2', 'shiftKey': '@', 'key': '2'}),
|
86
|
-
'Digit3': KeyDefinition.new({'keyCode': 51, 'code': 'Digit3', 'shiftKey': '#', 'key': '3'}),
|
87
|
-
'Digit4': KeyDefinition.new({'keyCode': 52, 'code': 'Digit4', 'shiftKey': '$', 'key': '4'}),
|
88
|
-
'Digit5': KeyDefinition.new({'keyCode': 53, 'code': 'Digit5', 'shiftKey': '%', 'key': '5'}),
|
89
|
-
'Digit6': KeyDefinition.new({'keyCode': 54, 'code': 'Digit6', 'shiftKey': '^', 'key': '6'}),
|
90
|
-
'Digit7': KeyDefinition.new({'keyCode': 55, 'code': 'Digit7', 'shiftKey': '&', 'key': '7'}),
|
91
|
-
'Digit8': KeyDefinition.new({'keyCode': 56, 'code': 'Digit8', 'shiftKey': '*', 'key': '8'}),
|
92
|
-
'Digit9': KeyDefinition.new({'keyCode': 57, 'code': 'Digit9', 'shiftKey': '\(', 'key': '9'}),
|
93
|
-
'KeyA': KeyDefinition.new({'keyCode': 65, 'code': 'KeyA', 'shiftKey': 'A', 'key': 'a'}),
|
94
|
-
'KeyB': KeyDefinition.new({'keyCode': 66, 'code': 'KeyB', 'shiftKey': 'B', 'key': 'b'}),
|
95
|
-
'KeyC': KeyDefinition.new({'keyCode': 67, 'code': 'KeyC', 'shiftKey': 'C', 'key': 'c'}),
|
96
|
-
'KeyD': KeyDefinition.new({'keyCode': 68, 'code': 'KeyD', 'shiftKey': 'D', 'key': 'd'}),
|
97
|
-
'KeyE': KeyDefinition.new({'keyCode': 69, 'code': 'KeyE', 'shiftKey': 'E', 'key': 'e'}),
|
98
|
-
'KeyF': KeyDefinition.new({'keyCode': 70, 'code': 'KeyF', 'shiftKey': 'F', 'key': 'f'}),
|
99
|
-
'KeyG': KeyDefinition.new({'keyCode': 71, 'code': 'KeyG', 'shiftKey': 'G', 'key': 'g'}),
|
100
|
-
'KeyH': KeyDefinition.new({'keyCode': 72, 'code': 'KeyH', 'shiftKey': 'H', 'key': 'h'}),
|
101
|
-
'KeyI': KeyDefinition.new({'keyCode': 73, 'code': 'KeyI', 'shiftKey': 'I', 'key': 'i'}),
|
102
|
-
'KeyJ': KeyDefinition.new({'keyCode': 74, 'code': 'KeyJ', 'shiftKey': 'J', 'key': 'j'}),
|
103
|
-
'KeyK': KeyDefinition.new({'keyCode': 75, 'code': 'KeyK', 'shiftKey': 'K', 'key': 'k'}),
|
104
|
-
'KeyL': KeyDefinition.new({'keyCode': 76, 'code': 'KeyL', 'shiftKey': 'L', 'key': 'l'}),
|
105
|
-
'KeyM': KeyDefinition.new({'keyCode': 77, 'code': 'KeyM', 'shiftKey': 'M', 'key': 'm'}),
|
106
|
-
'KeyN': KeyDefinition.new({'keyCode': 78, 'code': 'KeyN', 'shiftKey': 'N', 'key': 'n'}),
|
107
|
-
'KeyO': KeyDefinition.new({'keyCode': 79, 'code': 'KeyO', 'shiftKey': 'O', 'key': 'o'}),
|
108
|
-
'KeyP': KeyDefinition.new({'keyCode': 80, 'code': 'KeyP', 'shiftKey': 'P', 'key': 'p'}),
|
109
|
-
'KeyQ': KeyDefinition.new({'keyCode': 81, 'code': 'KeyQ', 'shiftKey': 'Q', 'key': 'q'}),
|
110
|
-
'KeyR': KeyDefinition.new({'keyCode': 82, 'code': 'KeyR', 'shiftKey': 'R', 'key': 'r'}),
|
111
|
-
'KeyS': KeyDefinition.new({'keyCode': 83, 'code': 'KeyS', 'shiftKey': 'S', 'key': 's'}),
|
112
|
-
'KeyT': KeyDefinition.new({'keyCode': 84, 'code': 'KeyT', 'shiftKey': 'T', 'key': 't'}),
|
113
|
-
'KeyU': KeyDefinition.new({'keyCode': 85, 'code': 'KeyU', 'shiftKey': 'U', 'key': 'u'}),
|
114
|
-
'KeyV': KeyDefinition.new({'keyCode': 86, 'code': 'KeyV', 'shiftKey': 'V', 'key': 'v'}),
|
115
|
-
'KeyW': KeyDefinition.new({'keyCode': 87, 'code': 'KeyW', 'shiftKey': 'W', 'key': 'w'}),
|
116
|
-
'KeyX': KeyDefinition.new({'keyCode': 88, 'code': 'KeyX', 'shiftKey': 'X', 'key': 'x'}),
|
117
|
-
'KeyY': KeyDefinition.new({'keyCode': 89, 'code': 'KeyY', 'shiftKey': 'Y', 'key': 'y'}),
|
118
|
-
'KeyZ': KeyDefinition.new({'keyCode': 90, 'code': 'KeyZ', 'shiftKey': 'Z', 'key': 'z'}),
|
119
|
-
'MetaLeft': KeyDefinition.new({'keyCode': 91, 'code': 'MetaLeft', 'key': 'Meta', 'location': 1}),
|
120
|
-
'MetaRight': KeyDefinition.new({'keyCode': 92, 'code': 'MetaRight', 'key': 'Meta', 'location': 2}),
|
121
|
-
'ContextMenu': KeyDefinition.new({'keyCode': 93, 'code': 'ContextMenu', 'key': 'ContextMenu'}),
|
122
|
-
'NumpadMultiply': KeyDefinition.new({'keyCode': 106, 'code': 'NumpadMultiply', 'key': '*', 'location': 3}),
|
123
|
-
'NumpadAdd': KeyDefinition.new({'keyCode': 107, 'code': 'NumpadAdd', 'key': '+', 'location': 3}),
|
124
|
-
'NumpadSubtract': KeyDefinition.new({'keyCode': 109, 'code': 'NumpadSubtract', 'key': '-', 'location': 3}),
|
125
|
-
'NumpadDivide': KeyDefinition.new({'keyCode': 111, 'code': 'NumpadDivide', 'key': '/', 'location': 3}),
|
126
|
-
'F1': KeyDefinition.new({'keyCode': 112, 'code': 'F1', 'key': 'F1'}),
|
127
|
-
'F2': KeyDefinition.new({'keyCode': 113, 'code': 'F2', 'key': 'F2'}),
|
128
|
-
'F3': KeyDefinition.new({'keyCode': 114, 'code': 'F3', 'key': 'F3'}),
|
129
|
-
'F4': KeyDefinition.new({'keyCode': 115, 'code': 'F4', 'key': 'F4'}),
|
130
|
-
'F5': KeyDefinition.new({'keyCode': 116, 'code': 'F5', 'key': 'F5'}),
|
131
|
-
'F6': KeyDefinition.new({'keyCode': 117, 'code': 'F6', 'key': 'F6'}),
|
132
|
-
'F7': KeyDefinition.new({'keyCode': 118, 'code': 'F7', 'key': 'F7'}),
|
133
|
-
'F8': KeyDefinition.new({'keyCode': 119, 'code': 'F8', 'key': 'F8'}),
|
134
|
-
'F9': KeyDefinition.new({'keyCode': 120, 'code': 'F9', 'key': 'F9'}),
|
135
|
-
'F10': KeyDefinition.new({'keyCode': 121, 'code': 'F10', 'key': 'F10'}),
|
136
|
-
'F11': KeyDefinition.new({'keyCode': 122, 'code': 'F11', 'key': 'F11'}),
|
137
|
-
'F12': KeyDefinition.new({'keyCode': 123, 'code': 'F12', 'key': 'F12'}),
|
138
|
-
'F13': KeyDefinition.new({'keyCode': 124, 'code': 'F13', 'key': 'F13'}),
|
139
|
-
'F14': KeyDefinition.new({'keyCode': 125, 'code': 'F14', 'key': 'F14'}),
|
140
|
-
'F15': KeyDefinition.new({'keyCode': 126, 'code': 'F15', 'key': 'F15'}),
|
141
|
-
'F16': KeyDefinition.new({'keyCode': 127, 'code': 'F16', 'key': 'F16'}),
|
142
|
-
'F17': KeyDefinition.new({'keyCode': 128, 'code': 'F17', 'key': 'F17'}),
|
143
|
-
'F18': KeyDefinition.new({'keyCode': 129, 'code': 'F18', 'key': 'F18'}),
|
144
|
-
'F19': KeyDefinition.new({'keyCode': 130, 'code': 'F19', 'key': 'F19'}),
|
145
|
-
'F20': KeyDefinition.new({'keyCode': 131, 'code': 'F20', 'key': 'F20'}),
|
146
|
-
'F21': KeyDefinition.new({'keyCode': 132, 'code': 'F21', 'key': 'F21'}),
|
147
|
-
'F22': KeyDefinition.new({'keyCode': 133, 'code': 'F22', 'key': 'F22'}),
|
148
|
-
'F23': KeyDefinition.new({'keyCode': 134, 'code': 'F23', 'key': 'F23'}),
|
149
|
-
'F24': KeyDefinition.new({'keyCode': 135, 'code': 'F24', 'key': 'F24'}),
|
150
|
-
'NumLock': KeyDefinition.new({'keyCode': 144, 'code': 'NumLock', 'key': 'NumLock'}),
|
151
|
-
'ScrollLock': KeyDefinition.new({'keyCode': 145, 'code': 'ScrollLock', 'key': 'ScrollLock'}),
|
152
|
-
'AudioVolumeMute': KeyDefinition.new({'keyCode': 173, 'code': 'AudioVolumeMute', 'key': 'AudioVolumeMute'}),
|
153
|
-
'AudioVolumeDown': KeyDefinition.new({'keyCode': 174, 'code': 'AudioVolumeDown', 'key': 'AudioVolumeDown'}),
|
154
|
-
'AudioVolumeUp': KeyDefinition.new({'keyCode': 175, 'code': 'AudioVolumeUp', 'key': 'AudioVolumeUp'}),
|
155
|
-
'MediaTrackNext': KeyDefinition.new({'keyCode': 176, 'code': 'MediaTrackNext', 'key': 'MediaTrackNext'}),
|
156
|
-
'MediaTrackPrevious': KeyDefinition.new({'keyCode': 177, 'code': 'MediaTrackPrevious', 'key': 'MediaTrackPrevious'}),
|
157
|
-
'MediaStop': KeyDefinition.new({'keyCode': 178, 'code': 'MediaStop', 'key': 'MediaStop'}),
|
158
|
-
'MediaPlayPause': KeyDefinition.new({'keyCode': 179, 'code': 'MediaPlayPause', 'key': 'MediaPlayPause'}),
|
159
|
-
'Semicolon': KeyDefinition.new({'keyCode': 186, 'code': 'Semicolon', 'shiftKey': ':', 'key': ';'}),
|
160
|
-
'Equal': KeyDefinition.new({'keyCode': 187, 'code': 'Equal', 'shiftKey': '+', 'key': '='}),
|
161
|
-
'NumpadEqual': KeyDefinition.new({'keyCode': 187, 'code': 'NumpadEqual', 'key': '=', 'location': 3}),
|
162
|
-
'Comma': KeyDefinition.new({'keyCode': 188, 'code': 'Comma', 'shiftKey': '\<', 'key': ','}),
|
163
|
-
'Minus': KeyDefinition.new({'keyCode': 189, 'code': 'Minus', 'shiftKey': '_', 'key': '-'}),
|
164
|
-
'Period': KeyDefinition.new({'keyCode': 190, 'code': 'Period', 'shiftKey': '>', 'key': '.'}),
|
165
|
-
'Slash': KeyDefinition.new({'keyCode': 191, 'code': 'Slash', 'shiftKey': '?', 'key': '/'}),
|
166
|
-
'Backquote': KeyDefinition.new({'keyCode': 192, 'code': 'Backquote', 'shiftKey': '~', 'key': '`'}),
|
167
|
-
'BracketLeft': KeyDefinition.new({'keyCode': 219, 'code': 'BracketLeft', 'shiftKey': '{', 'key': '['}),
|
168
|
-
'Backslash': KeyDefinition.new({'keyCode': 220, 'code': 'Backslash', 'shiftKey': '|', 'key': '\\'}),
|
169
|
-
'BracketRight': KeyDefinition.new({'keyCode': 221, 'code': 'BracketRight', 'shiftKey': '}', 'key': ']'}),
|
170
|
-
'Quote': KeyDefinition.new({'keyCode': 222, 'code': 'Quote', 'shiftKey': '"', 'key': '\''}),
|
171
|
-
'AltGraph': KeyDefinition.new({'keyCode': 225, 'code': 'AltGraph', 'key': 'AltGraph'}),
|
172
|
-
'Props': KeyDefinition.new({'keyCode': 247, 'code': 'Props', 'key': 'CrSel'}),
|
173
|
-
'Cancel': KeyDefinition.new({'keyCode': 3, 'key': 'Cancel', 'code': 'Abort'}),
|
174
|
-
'Clear': KeyDefinition.new({'keyCode': 12, 'key': 'Clear', 'code': 'Numpad5', 'location': 3}),
|
175
|
-
'Shift': KeyDefinition.new({'keyCode': 16, 'key': 'Shift', 'code': 'ShiftLeft', 'location': 1}),
|
176
|
-
'Control': KeyDefinition.new({'keyCode': 17, 'key': 'Control', 'code': 'ControlLeft', 'location': 1}),
|
177
|
-
'Alt': KeyDefinition.new({'keyCode': 18, 'key': 'Alt', 'code': 'AltLeft', 'location': 1}),
|
178
|
-
'Accept': KeyDefinition.new({'keyCode': 30, 'key': 'Accept'}),
|
179
|
-
'ModeChange': KeyDefinition.new({'keyCode': 31, 'key': 'ModeChange'}),
|
180
|
-
' ': KeyDefinition.new({'keyCode': 32, 'key': ' ', 'code': 'Space'}),
|
181
|
-
'Print': KeyDefinition.new({'keyCode': 42, 'key': 'Print'}),
|
182
|
-
'Execute': KeyDefinition.new({'keyCode': 43, 'key': 'Execute', 'code': 'Open'}),
|
183
|
-
'\u0000': KeyDefinition.new({'keyCode': 46, 'key': '\u0000', 'code': 'NumpadDecimal', 'location': 3}),
|
184
|
-
'a': KeyDefinition.new({'keyCode': 65, 'key': 'a', 'code': 'KeyA'}),
|
185
|
-
'b': KeyDefinition.new({'keyCode': 66, 'key': 'b', 'code': 'KeyB'}),
|
186
|
-
'c': KeyDefinition.new({'keyCode': 67, 'key': 'c', 'code': 'KeyC'}),
|
187
|
-
'd': KeyDefinition.new({'keyCode': 68, 'key': 'd', 'code': 'KeyD'}),
|
188
|
-
'e': KeyDefinition.new({'keyCode': 69, 'key': 'e', 'code': 'KeyE'}),
|
189
|
-
'f': KeyDefinition.new({'keyCode': 70, 'key': 'f', 'code': 'KeyF'}),
|
190
|
-
'g': KeyDefinition.new({'keyCode': 71, 'key': 'g', 'code': 'KeyG'}),
|
191
|
-
'h': KeyDefinition.new({'keyCode': 72, 'key': 'h', 'code': 'KeyH'}),
|
192
|
-
'i': KeyDefinition.new({'keyCode': 73, 'key': 'i', 'code': 'KeyI'}),
|
193
|
-
'j': KeyDefinition.new({'keyCode': 74, 'key': 'j', 'code': 'KeyJ'}),
|
194
|
-
'k': KeyDefinition.new({'keyCode': 75, 'key': 'k', 'code': 'KeyK'}),
|
195
|
-
'l': KeyDefinition.new({'keyCode': 76, 'key': 'l', 'code': 'KeyL'}),
|
196
|
-
'm': KeyDefinition.new({'keyCode': 77, 'key': 'm', 'code': 'KeyM'}),
|
197
|
-
'n': KeyDefinition.new({'keyCode': 78, 'key': 'n', 'code': 'KeyN'}),
|
198
|
-
'o': KeyDefinition.new({'keyCode': 79, 'key': 'o', 'code': 'KeyO'}),
|
199
|
-
'p': KeyDefinition.new({'keyCode': 80, 'key': 'p', 'code': 'KeyP'}),
|
200
|
-
'q': KeyDefinition.new({'keyCode': 81, 'key': 'q', 'code': 'KeyQ'}),
|
201
|
-
'r': KeyDefinition.new({'keyCode': 82, 'key': 'r', 'code': 'KeyR'}),
|
202
|
-
's': KeyDefinition.new({'keyCode': 83, 'key': 's', 'code': 'KeyS'}),
|
203
|
-
't': KeyDefinition.new({'keyCode': 84, 'key': 't', 'code': 'KeyT'}),
|
204
|
-
'u': KeyDefinition.new({'keyCode': 85, 'key': 'u', 'code': 'KeyU'}),
|
205
|
-
'v': KeyDefinition.new({'keyCode': 86, 'key': 'v', 'code': 'KeyV'}),
|
206
|
-
'w': KeyDefinition.new({'keyCode': 87, 'key': 'w', 'code': 'KeyW'}),
|
207
|
-
'x': KeyDefinition.new({'keyCode': 88, 'key': 'x', 'code': 'KeyX'}),
|
208
|
-
'y': KeyDefinition.new({'keyCode': 89, 'key': 'y', 'code': 'KeyY'}),
|
209
|
-
'z': KeyDefinition.new({'keyCode': 90, 'key': 'z', 'code': 'KeyZ'}),
|
210
|
-
'Meta': KeyDefinition.new({'keyCode': 91, 'key': 'Meta', 'code': 'MetaLeft', 'location': 1}),
|
211
|
-
'*': KeyDefinition.new({'keyCode': 106, 'key': '*', 'code': 'NumpadMultiply', 'location': 3}),
|
212
|
-
'+': KeyDefinition.new({'keyCode': 107, 'key': '+', 'code': 'NumpadAdd', 'location': 3}),
|
213
|
-
'-': KeyDefinition.new({'keyCode': 109, 'key': '-', 'code': 'NumpadSubtract', 'location': 3}),
|
214
|
-
'/': KeyDefinition.new({'keyCode': 111, 'key': '/', 'code': 'NumpadDivide', 'location': 3}),
|
215
|
-
';': KeyDefinition.new({'keyCode': 186, 'key': ';', 'code': 'Semicolon'}),
|
216
|
-
'=': KeyDefinition.new({'keyCode': 187, 'key': '=', 'code': 'Equal'}),
|
217
|
-
',': KeyDefinition.new({'keyCode': 188, 'key': ',', 'code': 'Comma'}),
|
218
|
-
'.': KeyDefinition.new({'keyCode': 190, 'key': '.', 'code': 'Period'}),
|
219
|
-
'`': KeyDefinition.new({'keyCode': 192, 'key': '`', 'code': 'Backquote'}),
|
220
|
-
'[': KeyDefinition.new({'keyCode': 219, 'key': '[', 'code': 'BracketLeft'}),
|
221
|
-
'\\': KeyDefinition.new({'keyCode': 220, 'key': '\\', 'code': 'Backslash'}),
|
222
|
-
']': KeyDefinition.new({'keyCode': 221, 'key': ']', 'code': 'BracketRight'}),
|
223
|
-
'\'': KeyDefinition.new({'keyCode': 222, 'key': '\'', 'code': 'Quote'}),
|
224
|
-
'Attn': KeyDefinition.new({'keyCode': 246, 'key': 'Attn'}),
|
225
|
-
'CrSel': KeyDefinition.new({'keyCode': 247, 'key': 'CrSel', 'code': 'Props'}),
|
226
|
-
'ExSel': KeyDefinition.new({'keyCode': 248, 'key': 'ExSel'}),
|
227
|
-
'EraseEof': KeyDefinition.new({'keyCode': 249, 'key': 'EraseEof'}),
|
228
|
-
'Play': KeyDefinition.new({'keyCode': 250, 'key': 'Play'}),
|
229
|
-
'ZoomOut': KeyDefinition.new({'keyCode': 251, 'key': 'ZoomOut'}),
|
230
|
-
')': KeyDefinition.new({'keyCode': 48, 'key': ')', 'code': 'Digit0'}),
|
231
|
-
'!': KeyDefinition.new({'keyCode': 49, 'key': '!', 'code': 'Digit1'}),
|
232
|
-
'@': KeyDefinition.new({'keyCode': 50, 'key': '@', 'code': 'Digit2'}),
|
233
|
-
'#': KeyDefinition.new({'keyCode': 51, 'key': '#', 'code': 'Digit3'}),
|
234
|
-
'$': KeyDefinition.new({'keyCode': 52, 'key': '$', 'code': 'Digit4'}),
|
235
|
-
'%': KeyDefinition.new({'keyCode': 53, 'key': '%', 'code': 'Digit5'}),
|
236
|
-
'^': KeyDefinition.new({'keyCode': 54, 'key': '^', 'code': 'Digit6'}),
|
237
|
-
'&': KeyDefinition.new({'keyCode': 55, 'key': '&', 'code': 'Digit7'}),
|
238
|
-
'(': KeyDefinition.new({'keyCode': 57, 'key': '\(', 'code': 'Digit9'}),
|
239
|
-
'A': KeyDefinition.new({'keyCode': 65, 'key': 'A', 'code': 'KeyA'}),
|
240
|
-
'B': KeyDefinition.new({'keyCode': 66, 'key': 'B', 'code': 'KeyB'}),
|
241
|
-
'C': KeyDefinition.new({'keyCode': 67, 'key': 'C', 'code': 'KeyC'}),
|
242
|
-
'D': KeyDefinition.new({'keyCode': 68, 'key': 'D', 'code': 'KeyD'}),
|
243
|
-
'E': KeyDefinition.new({'keyCode': 69, 'key': 'E', 'code': 'KeyE'}),
|
244
|
-
'F': KeyDefinition.new({'keyCode': 70, 'key': 'F', 'code': 'KeyF'}),
|
245
|
-
'G': KeyDefinition.new({'keyCode': 71, 'key': 'G', 'code': 'KeyG'}),
|
246
|
-
'H': KeyDefinition.new({'keyCode': 72, 'key': 'H', 'code': 'KeyH'}),
|
247
|
-
'I': KeyDefinition.new({'keyCode': 73, 'key': 'I', 'code': 'KeyI'}),
|
248
|
-
'J': KeyDefinition.new({'keyCode': 74, 'key': 'J', 'code': 'KeyJ'}),
|
249
|
-
'K': KeyDefinition.new({'keyCode': 75, 'key': 'K', 'code': 'KeyK'}),
|
250
|
-
'L': KeyDefinition.new({'keyCode': 76, 'key': 'L', 'code': 'KeyL'}),
|
251
|
-
'M': KeyDefinition.new({'keyCode': 77, 'key': 'M', 'code': 'KeyM'}),
|
252
|
-
'N': KeyDefinition.new({'keyCode': 78, 'key': 'N', 'code': 'KeyN'}),
|
253
|
-
'O': KeyDefinition.new({'keyCode': 79, 'key': 'O', 'code': 'KeyO'}),
|
254
|
-
'P': KeyDefinition.new({'keyCode': 80, 'key': 'P', 'code': 'KeyP'}),
|
255
|
-
'Q': KeyDefinition.new({'keyCode': 81, 'key': 'Q', 'code': 'KeyQ'}),
|
256
|
-
'R': KeyDefinition.new({'keyCode': 82, 'key': 'R', 'code': 'KeyR'}),
|
257
|
-
'S': KeyDefinition.new({'keyCode': 83, 'key': 'S', 'code': 'KeyS'}),
|
258
|
-
'T': KeyDefinition.new({'keyCode': 84, 'key': 'T', 'code': 'KeyT'}),
|
259
|
-
'U': KeyDefinition.new({'keyCode': 85, 'key': 'U', 'code': 'KeyU'}),
|
260
|
-
'V': KeyDefinition.new({'keyCode': 86, 'key': 'V', 'code': 'KeyV'}),
|
261
|
-
'W': KeyDefinition.new({'keyCode': 87, 'key': 'W', 'code': 'KeyW'}),
|
262
|
-
'X': KeyDefinition.new({'keyCode': 88, 'key': 'X', 'code': 'KeyX'}),
|
263
|
-
'Y': KeyDefinition.new({'keyCode': 89, 'key': 'Y', 'code': 'KeyY'}),
|
264
|
-
'Z': KeyDefinition.new({'keyCode': 90, 'key': 'Z', 'code': 'KeyZ'}),
|
265
|
-
':': KeyDefinition.new({'keyCode': 186, 'key': ':', 'code': 'Semicolon'}),
|
266
|
-
'<': KeyDefinition.new({'keyCode': 188, 'key': '\<', 'code': 'Comma'}),
|
267
|
-
'_': KeyDefinition.new({'keyCode': 189, 'key': '_', 'code': 'Minus'}),
|
268
|
-
'>': KeyDefinition.new({'keyCode': 190, 'key': '>', 'code': 'Period'}),
|
269
|
-
'?': KeyDefinition.new({'keyCode': 191, 'key': '?', 'code': 'Slash'}),
|
270
|
-
'~': KeyDefinition.new({'keyCode': 192, 'key': '~', 'code': 'Backquote'}),
|
271
|
-
'{': KeyDefinition.new({'keyCode': 219, 'key': '{', 'code': 'BracketLeft'}),
|
272
|
-
'|': KeyDefinition.new({'keyCode': 220, 'key': '|', 'code': 'Backslash'}),
|
273
|
-
'}': KeyDefinition.new({'keyCode': 221, 'key': '}', 'code': 'BracketRight'}),
|
274
|
-
'"': KeyDefinition.new({'keyCode': 222, 'key': '"', 'code': 'Quote'}),
|
275
|
-
'SoftLeft': KeyDefinition.new({'key': 'SoftLeft', 'code': 'SoftLeft', 'location': 4}),
|
276
|
-
'SoftRight': KeyDefinition.new({'key': 'SoftRight', 'code': 'SoftRight', 'location': 4}),
|
277
|
-
'Camera': KeyDefinition.new({'keyCode': 44, 'key': 'Camera', 'code': 'Camera', 'location': 4}),
|
278
|
-
'Call': KeyDefinition.new({'key': 'Call', 'code': 'Call', 'location': 4}),
|
279
|
-
'EndCall': KeyDefinition.new({'keyCode': 95, 'key': 'EndCall', 'code': 'EndCall', 'location': 4}),
|
280
|
-
'VolumeDown': KeyDefinition.new({'keyCode': 182, 'key': 'VolumeDown', 'code': 'VolumeDown', 'location': 4}),
|
281
|
-
'VolumeUp': KeyDefinition.new({'keyCode': 183, 'key': 'VolumeUp', 'code': 'VolumeUp', 'location': 4}),
|
27
|
+
'0': KeyDefinition.new({ 'keyCode': 48, 'key': '0', 'code': 'Digit0' }),
|
28
|
+
'1': KeyDefinition.new({ 'keyCode': 49, 'key': '1', 'code': 'Digit1' }),
|
29
|
+
'2': KeyDefinition.new({ 'keyCode': 50, 'key': '2', 'code': 'Digit2' }),
|
30
|
+
'3': KeyDefinition.new({ 'keyCode': 51, 'key': '3', 'code': 'Digit3' }),
|
31
|
+
'4': KeyDefinition.new({ 'keyCode': 52, 'key': '4', 'code': 'Digit4' }),
|
32
|
+
'5': KeyDefinition.new({ 'keyCode': 53, 'key': '5', 'code': 'Digit5' }),
|
33
|
+
'6': KeyDefinition.new({ 'keyCode': 54, 'key': '6', 'code': 'Digit6' }),
|
34
|
+
'7': KeyDefinition.new({ 'keyCode': 55, 'key': '7', 'code': 'Digit7' }),
|
35
|
+
'8': KeyDefinition.new({ 'keyCode': 56, 'key': '8', 'code': 'Digit8' }),
|
36
|
+
'9': KeyDefinition.new({ 'keyCode': 57, 'key': '9', 'code': 'Digit9' }),
|
37
|
+
'Power': KeyDefinition.new({ 'key': 'Power', 'code': 'Power' }),
|
38
|
+
'Eject': KeyDefinition.new({ 'key': 'Eject', 'code': 'Eject' }),
|
39
|
+
'Abort': KeyDefinition.new({ 'keyCode': 3, 'code': 'Abort', 'key': 'Cancel' }),
|
40
|
+
'Help': KeyDefinition.new({ 'keyCode': 6, 'code': 'Help', 'key': 'Help' }),
|
41
|
+
'Backspace': KeyDefinition.new({ 'keyCode': 8, 'code': 'Backspace', 'key': 'Backspace' }),
|
42
|
+
'Tab': KeyDefinition.new({ 'keyCode': 9, 'code': 'Tab', 'key': 'Tab' }),
|
43
|
+
'Numpad5': KeyDefinition.new({ 'keyCode': 12, 'shiftKeyCode': 101, 'key': 'Clear', 'code': 'Numpad5', 'shiftKey': '5', 'location': 3 }),
|
44
|
+
'NumpadEnter': KeyDefinition.new({ 'keyCode': 13, 'code': 'NumpadEnter', 'key': 'Enter', 'text': '\r', 'location': 3 }),
|
45
|
+
'Enter': KeyDefinition.new({ 'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r' }),
|
46
|
+
'\r': KeyDefinition.new({ 'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r' }),
|
47
|
+
'\n': KeyDefinition.new({ 'keyCode': 13, 'code': 'Enter', 'key': 'Enter', 'text': '\r' }),
|
48
|
+
'ShiftLeft': KeyDefinition.new({ 'keyCode': 16, 'code': 'ShiftLeft', 'key': 'Shift', 'location': 1 }),
|
49
|
+
'ShiftRight': KeyDefinition.new({ 'keyCode': 16, 'code': 'ShiftRight', 'key': 'Shift', 'location': 2 }),
|
50
|
+
'ControlLeft': KeyDefinition.new({ 'keyCode': 17, 'code': 'ControlLeft', 'key': 'Control', 'location': 1 }),
|
51
|
+
'ControlRight': KeyDefinition.new({ 'keyCode': 17, 'code': 'ControlRight', 'key': 'Control', 'location': 2 }),
|
52
|
+
'AltLeft': KeyDefinition.new({ 'keyCode': 18, 'code': 'AltLeft', 'key': 'Alt', 'location': 1 }),
|
53
|
+
'AltRight': KeyDefinition.new({ 'keyCode': 18, 'code': 'AltRight', 'key': 'Alt', 'location': 2 }),
|
54
|
+
'Pause': KeyDefinition.new({ 'keyCode': 19, 'code': 'Pause', 'key': 'Pause' }),
|
55
|
+
'CapsLock': KeyDefinition.new({ 'keyCode': 20, 'code': 'CapsLock', 'key': 'CapsLock' }),
|
56
|
+
'Escape': KeyDefinition.new({ 'keyCode': 27, 'code': 'Escape', 'key': 'Escape' }),
|
57
|
+
'Convert': KeyDefinition.new({ 'keyCode': 28, 'code': 'Convert', 'key': 'Convert' }),
|
58
|
+
'NonConvert': KeyDefinition.new({ 'keyCode': 29, 'code': 'NonConvert', 'key': 'NonConvert' }),
|
59
|
+
'Space': KeyDefinition.new({ 'keyCode': 32, 'code': 'Space', 'key': ' ' }),
|
60
|
+
'Numpad9': KeyDefinition.new({ 'keyCode': 33, 'shiftKeyCode': 105, 'key': 'PageUp', 'code': 'Numpad9', 'shiftKey': '9', 'location': 3 }),
|
61
|
+
'PageUp': KeyDefinition.new({ 'keyCode': 33, 'code': 'PageUp', 'key': 'PageUp' }),
|
62
|
+
'Numpad3': KeyDefinition.new({ 'keyCode': 34, 'shiftKeyCode': 99, 'key': 'PageDown', 'code': 'Numpad3', 'shiftKey': '3', 'location': 3 }),
|
63
|
+
'PageDown': KeyDefinition.new({ 'keyCode': 34, 'code': 'PageDown', 'key': 'PageDown' }),
|
64
|
+
'End': KeyDefinition.new({ 'keyCode': 35, 'code': 'End', 'key': 'End' }),
|
65
|
+
'Numpad1': KeyDefinition.new({ 'keyCode': 35, 'shiftKeyCode': 97, 'key': 'End', 'code': 'Numpad1', 'shiftKey': '1', 'location': 3 }),
|
66
|
+
'Home': KeyDefinition.new({ 'keyCode': 36, 'code': 'Home', 'key': 'Home' }),
|
67
|
+
'Numpad7': KeyDefinition.new({ 'keyCode': 36, 'shiftKeyCode': 103, 'key': 'Home', 'code': 'Numpad7', 'shiftKey': '7', 'location': 3 }),
|
68
|
+
'ArrowLeft': KeyDefinition.new({ 'keyCode': 37, 'code': 'ArrowLeft', 'key': 'ArrowLeft' }),
|
69
|
+
'Numpad4': KeyDefinition.new({ 'keyCode': 37, 'shiftKeyCode': 100, 'key': 'ArrowLeft', 'code': 'Numpad4', 'shiftKey': '4', 'location': 3 }),
|
70
|
+
'Numpad8': KeyDefinition.new({ 'keyCode': 38, 'shiftKeyCode': 104, 'key': 'ArrowUp', 'code': 'Numpad8', 'shiftKey': '8', 'location': 3 }),
|
71
|
+
'ArrowUp': KeyDefinition.new({ 'keyCode': 38, 'code': 'ArrowUp', 'key': 'ArrowUp' }),
|
72
|
+
'ArrowRight': KeyDefinition.new({ 'keyCode': 39, 'code': 'ArrowRight', 'key': 'ArrowRight' }),
|
73
|
+
'Numpad6': KeyDefinition.new({ 'keyCode': 39, 'shiftKeyCode': 102, 'key': 'ArrowRight', 'code': 'Numpad6', 'shiftKey': '6', 'location': 3 }),
|
74
|
+
'Numpad2': KeyDefinition.new({ 'keyCode': 40, 'shiftKeyCode': 98, 'key': 'ArrowDown', 'code': 'Numpad2', 'shiftKey': '2', 'location': 3 }),
|
75
|
+
'ArrowDown': KeyDefinition.new({ 'keyCode': 40, 'code': 'ArrowDown', 'key': 'ArrowDown' }),
|
76
|
+
'Select': KeyDefinition.new({ 'keyCode': 41, 'code': 'Select', 'key': 'Select' }),
|
77
|
+
'Open': KeyDefinition.new({ 'keyCode': 43, 'code': 'Open', 'key': 'Execute' }),
|
78
|
+
'PrintScreen': KeyDefinition.new({ 'keyCode': 44, 'code': 'PrintScreen', 'key': 'PrintScreen' }),
|
79
|
+
'Insert': KeyDefinition.new({ 'keyCode': 45, 'code': 'Insert', 'key': 'Insert' }),
|
80
|
+
'Numpad0': KeyDefinition.new({ 'keyCode': 45, 'shiftKeyCode': 96, 'key': 'Insert', 'code': 'Numpad0', 'shiftKey': '0', 'location': 3 }),
|
81
|
+
'Delete': KeyDefinition.new({ 'keyCode': 46, 'code': 'Delete', 'key': 'Delete' }),
|
82
|
+
'NumpadDecimal': KeyDefinition.new({ 'keyCode': 46, 'shiftKeyCode': 110, 'code': 'NumpadDecimal', 'key': '\u0000', 'shiftKey': '.', 'location': 3 }),
|
83
|
+
'Digit0': KeyDefinition.new({ 'keyCode': 48, 'code': 'Digit0', 'shiftKey': ')', 'key': '0' }),
|
84
|
+
'Digit1': KeyDefinition.new({ 'keyCode': 49, 'code': 'Digit1', 'shiftKey': '!', 'key': '1' }),
|
85
|
+
'Digit2': KeyDefinition.new({ 'keyCode': 50, 'code': 'Digit2', 'shiftKey': '@', 'key': '2' }),
|
86
|
+
'Digit3': KeyDefinition.new({ 'keyCode': 51, 'code': 'Digit3', 'shiftKey': '#', 'key': '3' }),
|
87
|
+
'Digit4': KeyDefinition.new({ 'keyCode': 52, 'code': 'Digit4', 'shiftKey': '$', 'key': '4' }),
|
88
|
+
'Digit5': KeyDefinition.new({ 'keyCode': 53, 'code': 'Digit5', 'shiftKey': '%', 'key': '5' }),
|
89
|
+
'Digit6': KeyDefinition.new({ 'keyCode': 54, 'code': 'Digit6', 'shiftKey': '^', 'key': '6' }),
|
90
|
+
'Digit7': KeyDefinition.new({ 'keyCode': 55, 'code': 'Digit7', 'shiftKey': '&', 'key': '7' }),
|
91
|
+
'Digit8': KeyDefinition.new({ 'keyCode': 56, 'code': 'Digit8', 'shiftKey': '*', 'key': '8' }),
|
92
|
+
'Digit9': KeyDefinition.new({ 'keyCode': 57, 'code': 'Digit9', 'shiftKey': '\(', 'key': '9' }),
|
93
|
+
'KeyA': KeyDefinition.new({ 'keyCode': 65, 'code': 'KeyA', 'shiftKey': 'A', 'key': 'a' }),
|
94
|
+
'KeyB': KeyDefinition.new({ 'keyCode': 66, 'code': 'KeyB', 'shiftKey': 'B', 'key': 'b' }),
|
95
|
+
'KeyC': KeyDefinition.new({ 'keyCode': 67, 'code': 'KeyC', 'shiftKey': 'C', 'key': 'c' }),
|
96
|
+
'KeyD': KeyDefinition.new({ 'keyCode': 68, 'code': 'KeyD', 'shiftKey': 'D', 'key': 'd' }),
|
97
|
+
'KeyE': KeyDefinition.new({ 'keyCode': 69, 'code': 'KeyE', 'shiftKey': 'E', 'key': 'e' }),
|
98
|
+
'KeyF': KeyDefinition.new({ 'keyCode': 70, 'code': 'KeyF', 'shiftKey': 'F', 'key': 'f' }),
|
99
|
+
'KeyG': KeyDefinition.new({ 'keyCode': 71, 'code': 'KeyG', 'shiftKey': 'G', 'key': 'g' }),
|
100
|
+
'KeyH': KeyDefinition.new({ 'keyCode': 72, 'code': 'KeyH', 'shiftKey': 'H', 'key': 'h' }),
|
101
|
+
'KeyI': KeyDefinition.new({ 'keyCode': 73, 'code': 'KeyI', 'shiftKey': 'I', 'key': 'i' }),
|
102
|
+
'KeyJ': KeyDefinition.new({ 'keyCode': 74, 'code': 'KeyJ', 'shiftKey': 'J', 'key': 'j' }),
|
103
|
+
'KeyK': KeyDefinition.new({ 'keyCode': 75, 'code': 'KeyK', 'shiftKey': 'K', 'key': 'k' }),
|
104
|
+
'KeyL': KeyDefinition.new({ 'keyCode': 76, 'code': 'KeyL', 'shiftKey': 'L', 'key': 'l' }),
|
105
|
+
'KeyM': KeyDefinition.new({ 'keyCode': 77, 'code': 'KeyM', 'shiftKey': 'M', 'key': 'm' }),
|
106
|
+
'KeyN': KeyDefinition.new({ 'keyCode': 78, 'code': 'KeyN', 'shiftKey': 'N', 'key': 'n' }),
|
107
|
+
'KeyO': KeyDefinition.new({ 'keyCode': 79, 'code': 'KeyO', 'shiftKey': 'O', 'key': 'o' }),
|
108
|
+
'KeyP': KeyDefinition.new({ 'keyCode': 80, 'code': 'KeyP', 'shiftKey': 'P', 'key': 'p' }),
|
109
|
+
'KeyQ': KeyDefinition.new({ 'keyCode': 81, 'code': 'KeyQ', 'shiftKey': 'Q', 'key': 'q' }),
|
110
|
+
'KeyR': KeyDefinition.new({ 'keyCode': 82, 'code': 'KeyR', 'shiftKey': 'R', 'key': 'r' }),
|
111
|
+
'KeyS': KeyDefinition.new({ 'keyCode': 83, 'code': 'KeyS', 'shiftKey': 'S', 'key': 's' }),
|
112
|
+
'KeyT': KeyDefinition.new({ 'keyCode': 84, 'code': 'KeyT', 'shiftKey': 'T', 'key': 't' }),
|
113
|
+
'KeyU': KeyDefinition.new({ 'keyCode': 85, 'code': 'KeyU', 'shiftKey': 'U', 'key': 'u' }),
|
114
|
+
'KeyV': KeyDefinition.new({ 'keyCode': 86, 'code': 'KeyV', 'shiftKey': 'V', 'key': 'v' }),
|
115
|
+
'KeyW': KeyDefinition.new({ 'keyCode': 87, 'code': 'KeyW', 'shiftKey': 'W', 'key': 'w' }),
|
116
|
+
'KeyX': KeyDefinition.new({ 'keyCode': 88, 'code': 'KeyX', 'shiftKey': 'X', 'key': 'x' }),
|
117
|
+
'KeyY': KeyDefinition.new({ 'keyCode': 89, 'code': 'KeyY', 'shiftKey': 'Y', 'key': 'y' }),
|
118
|
+
'KeyZ': KeyDefinition.new({ 'keyCode': 90, 'code': 'KeyZ', 'shiftKey': 'Z', 'key': 'z' }),
|
119
|
+
'MetaLeft': KeyDefinition.new({ 'keyCode': 91, 'code': 'MetaLeft', 'key': 'Meta', 'location': 1 }),
|
120
|
+
'MetaRight': KeyDefinition.new({ 'keyCode': 92, 'code': 'MetaRight', 'key': 'Meta', 'location': 2 }),
|
121
|
+
'ContextMenu': KeyDefinition.new({ 'keyCode': 93, 'code': 'ContextMenu', 'key': 'ContextMenu' }),
|
122
|
+
'NumpadMultiply': KeyDefinition.new({ 'keyCode': 106, 'code': 'NumpadMultiply', 'key': '*', 'location': 3 }),
|
123
|
+
'NumpadAdd': KeyDefinition.new({ 'keyCode': 107, 'code': 'NumpadAdd', 'key': '+', 'location': 3 }),
|
124
|
+
'NumpadSubtract': KeyDefinition.new({ 'keyCode': 109, 'code': 'NumpadSubtract', 'key': '-', 'location': 3 }),
|
125
|
+
'NumpadDivide': KeyDefinition.new({ 'keyCode': 111, 'code': 'NumpadDivide', 'key': '/', 'location': 3 }),
|
126
|
+
'F1': KeyDefinition.new({ 'keyCode': 112, 'code': 'F1', 'key': 'F1' }),
|
127
|
+
'F2': KeyDefinition.new({ 'keyCode': 113, 'code': 'F2', 'key': 'F2' }),
|
128
|
+
'F3': KeyDefinition.new({ 'keyCode': 114, 'code': 'F3', 'key': 'F3' }),
|
129
|
+
'F4': KeyDefinition.new({ 'keyCode': 115, 'code': 'F4', 'key': 'F4' }),
|
130
|
+
'F5': KeyDefinition.new({ 'keyCode': 116, 'code': 'F5', 'key': 'F5' }),
|
131
|
+
'F6': KeyDefinition.new({ 'keyCode': 117, 'code': 'F6', 'key': 'F6' }),
|
132
|
+
'F7': KeyDefinition.new({ 'keyCode': 118, 'code': 'F7', 'key': 'F7' }),
|
133
|
+
'F8': KeyDefinition.new({ 'keyCode': 119, 'code': 'F8', 'key': 'F8' }),
|
134
|
+
'F9': KeyDefinition.new({ 'keyCode': 120, 'code': 'F9', 'key': 'F9' }),
|
135
|
+
'F10': KeyDefinition.new({ 'keyCode': 121, 'code': 'F10', 'key': 'F10' }),
|
136
|
+
'F11': KeyDefinition.new({ 'keyCode': 122, 'code': 'F11', 'key': 'F11' }),
|
137
|
+
'F12': KeyDefinition.new({ 'keyCode': 123, 'code': 'F12', 'key': 'F12' }),
|
138
|
+
'F13': KeyDefinition.new({ 'keyCode': 124, 'code': 'F13', 'key': 'F13' }),
|
139
|
+
'F14': KeyDefinition.new({ 'keyCode': 125, 'code': 'F14', 'key': 'F14' }),
|
140
|
+
'F15': KeyDefinition.new({ 'keyCode': 126, 'code': 'F15', 'key': 'F15' }),
|
141
|
+
'F16': KeyDefinition.new({ 'keyCode': 127, 'code': 'F16', 'key': 'F16' }),
|
142
|
+
'F17': KeyDefinition.new({ 'keyCode': 128, 'code': 'F17', 'key': 'F17' }),
|
143
|
+
'F18': KeyDefinition.new({ 'keyCode': 129, 'code': 'F18', 'key': 'F18' }),
|
144
|
+
'F19': KeyDefinition.new({ 'keyCode': 130, 'code': 'F19', 'key': 'F19' }),
|
145
|
+
'F20': KeyDefinition.new({ 'keyCode': 131, 'code': 'F20', 'key': 'F20' }),
|
146
|
+
'F21': KeyDefinition.new({ 'keyCode': 132, 'code': 'F21', 'key': 'F21' }),
|
147
|
+
'F22': KeyDefinition.new({ 'keyCode': 133, 'code': 'F22', 'key': 'F22' }),
|
148
|
+
'F23': KeyDefinition.new({ 'keyCode': 134, 'code': 'F23', 'key': 'F23' }),
|
149
|
+
'F24': KeyDefinition.new({ 'keyCode': 135, 'code': 'F24', 'key': 'F24' }),
|
150
|
+
'NumLock': KeyDefinition.new({ 'keyCode': 144, 'code': 'NumLock', 'key': 'NumLock' }),
|
151
|
+
'ScrollLock': KeyDefinition.new({ 'keyCode': 145, 'code': 'ScrollLock', 'key': 'ScrollLock' }),
|
152
|
+
'AudioVolumeMute': KeyDefinition.new({ 'keyCode': 173, 'code': 'AudioVolumeMute', 'key': 'AudioVolumeMute' }),
|
153
|
+
'AudioVolumeDown': KeyDefinition.new({ 'keyCode': 174, 'code': 'AudioVolumeDown', 'key': 'AudioVolumeDown' }),
|
154
|
+
'AudioVolumeUp': KeyDefinition.new({ 'keyCode': 175, 'code': 'AudioVolumeUp', 'key': 'AudioVolumeUp' }),
|
155
|
+
'MediaTrackNext': KeyDefinition.new({ 'keyCode': 176, 'code': 'MediaTrackNext', 'key': 'MediaTrackNext' }),
|
156
|
+
'MediaTrackPrevious': KeyDefinition.new({ 'keyCode': 177, 'code': 'MediaTrackPrevious', 'key': 'MediaTrackPrevious' }),
|
157
|
+
'MediaStop': KeyDefinition.new({ 'keyCode': 178, 'code': 'MediaStop', 'key': 'MediaStop' }),
|
158
|
+
'MediaPlayPause': KeyDefinition.new({ 'keyCode': 179, 'code': 'MediaPlayPause', 'key': 'MediaPlayPause' }),
|
159
|
+
'Semicolon': KeyDefinition.new({ 'keyCode': 186, 'code': 'Semicolon', 'shiftKey': ':', 'key': ';' }),
|
160
|
+
'Equal': KeyDefinition.new({ 'keyCode': 187, 'code': 'Equal', 'shiftKey': '+', 'key': '=' }),
|
161
|
+
'NumpadEqual': KeyDefinition.new({ 'keyCode': 187, 'code': 'NumpadEqual', 'key': '=', 'location': 3 }),
|
162
|
+
'Comma': KeyDefinition.new({ 'keyCode': 188, 'code': 'Comma', 'shiftKey': '\<', 'key': ',' }),
|
163
|
+
'Minus': KeyDefinition.new({ 'keyCode': 189, 'code': 'Minus', 'shiftKey': '_', 'key': '-' }),
|
164
|
+
'Period': KeyDefinition.new({ 'keyCode': 190, 'code': 'Period', 'shiftKey': '>', 'key': '.' }),
|
165
|
+
'Slash': KeyDefinition.new({ 'keyCode': 191, 'code': 'Slash', 'shiftKey': '?', 'key': '/' }),
|
166
|
+
'Backquote': KeyDefinition.new({ 'keyCode': 192, 'code': 'Backquote', 'shiftKey': '~', 'key': '`' }),
|
167
|
+
'BracketLeft': KeyDefinition.new({ 'keyCode': 219, 'code': 'BracketLeft', 'shiftKey': '{', 'key': '[' }),
|
168
|
+
'Backslash': KeyDefinition.new({ 'keyCode': 220, 'code': 'Backslash', 'shiftKey': '|', 'key': '\\' }),
|
169
|
+
'BracketRight': KeyDefinition.new({ 'keyCode': 221, 'code': 'BracketRight', 'shiftKey': '}', 'key': ']' }),
|
170
|
+
'Quote': KeyDefinition.new({ 'keyCode': 222, 'code': 'Quote', 'shiftKey': '"', 'key': '\'' }),
|
171
|
+
'AltGraph': KeyDefinition.new({ 'keyCode': 225, 'code': 'AltGraph', 'key': 'AltGraph' }),
|
172
|
+
'Props': KeyDefinition.new({ 'keyCode': 247, 'code': 'Props', 'key': 'CrSel' }),
|
173
|
+
'Cancel': KeyDefinition.new({ 'keyCode': 3, 'key': 'Cancel', 'code': 'Abort' }),
|
174
|
+
'Clear': KeyDefinition.new({ 'keyCode': 12, 'key': 'Clear', 'code': 'Numpad5', 'location': 3 }),
|
175
|
+
'Shift': KeyDefinition.new({ 'keyCode': 16, 'key': 'Shift', 'code': 'ShiftLeft', 'location': 1 }),
|
176
|
+
'Control': KeyDefinition.new({ 'keyCode': 17, 'key': 'Control', 'code': 'ControlLeft', 'location': 1 }),
|
177
|
+
'Alt': KeyDefinition.new({ 'keyCode': 18, 'key': 'Alt', 'code': 'AltLeft', 'location': 1 }),
|
178
|
+
'Accept': KeyDefinition.new({ 'keyCode': 30, 'key': 'Accept' }),
|
179
|
+
'ModeChange': KeyDefinition.new({ 'keyCode': 31, 'key': 'ModeChange' }),
|
180
|
+
' ': KeyDefinition.new({ 'keyCode': 32, 'key': ' ', 'code': 'Space' }),
|
181
|
+
'Print': KeyDefinition.new({ 'keyCode': 42, 'key': 'Print' }),
|
182
|
+
'Execute': KeyDefinition.new({ 'keyCode': 43, 'key': 'Execute', 'code': 'Open' }),
|
183
|
+
'\u0000': KeyDefinition.new({ 'keyCode': 46, 'key': '\u0000', 'code': 'NumpadDecimal', 'location': 3 }),
|
184
|
+
'a': KeyDefinition.new({ 'keyCode': 65, 'key': 'a', 'code': 'KeyA' }),
|
185
|
+
'b': KeyDefinition.new({ 'keyCode': 66, 'key': 'b', 'code': 'KeyB' }),
|
186
|
+
'c': KeyDefinition.new({ 'keyCode': 67, 'key': 'c', 'code': 'KeyC' }),
|
187
|
+
'd': KeyDefinition.new({ 'keyCode': 68, 'key': 'd', 'code': 'KeyD' }),
|
188
|
+
'e': KeyDefinition.new({ 'keyCode': 69, 'key': 'e', 'code': 'KeyE' }),
|
189
|
+
'f': KeyDefinition.new({ 'keyCode': 70, 'key': 'f', 'code': 'KeyF' }),
|
190
|
+
'g': KeyDefinition.new({ 'keyCode': 71, 'key': 'g', 'code': 'KeyG' }),
|
191
|
+
'h': KeyDefinition.new({ 'keyCode': 72, 'key': 'h', 'code': 'KeyH' }),
|
192
|
+
'i': KeyDefinition.new({ 'keyCode': 73, 'key': 'i', 'code': 'KeyI' }),
|
193
|
+
'j': KeyDefinition.new({ 'keyCode': 74, 'key': 'j', 'code': 'KeyJ' }),
|
194
|
+
'k': KeyDefinition.new({ 'keyCode': 75, 'key': 'k', 'code': 'KeyK' }),
|
195
|
+
'l': KeyDefinition.new({ 'keyCode': 76, 'key': 'l', 'code': 'KeyL' }),
|
196
|
+
'm': KeyDefinition.new({ 'keyCode': 77, 'key': 'm', 'code': 'KeyM' }),
|
197
|
+
'n': KeyDefinition.new({ 'keyCode': 78, 'key': 'n', 'code': 'KeyN' }),
|
198
|
+
'o': KeyDefinition.new({ 'keyCode': 79, 'key': 'o', 'code': 'KeyO' }),
|
199
|
+
'p': KeyDefinition.new({ 'keyCode': 80, 'key': 'p', 'code': 'KeyP' }),
|
200
|
+
'q': KeyDefinition.new({ 'keyCode': 81, 'key': 'q', 'code': 'KeyQ' }),
|
201
|
+
'r': KeyDefinition.new({ 'keyCode': 82, 'key': 'r', 'code': 'KeyR' }),
|
202
|
+
's': KeyDefinition.new({ 'keyCode': 83, 'key': 's', 'code': 'KeyS' }),
|
203
|
+
't': KeyDefinition.new({ 'keyCode': 84, 'key': 't', 'code': 'KeyT' }),
|
204
|
+
'u': KeyDefinition.new({ 'keyCode': 85, 'key': 'u', 'code': 'KeyU' }),
|
205
|
+
'v': KeyDefinition.new({ 'keyCode': 86, 'key': 'v', 'code': 'KeyV' }),
|
206
|
+
'w': KeyDefinition.new({ 'keyCode': 87, 'key': 'w', 'code': 'KeyW' }),
|
207
|
+
'x': KeyDefinition.new({ 'keyCode': 88, 'key': 'x', 'code': 'KeyX' }),
|
208
|
+
'y': KeyDefinition.new({ 'keyCode': 89, 'key': 'y', 'code': 'KeyY' }),
|
209
|
+
'z': KeyDefinition.new({ 'keyCode': 90, 'key': 'z', 'code': 'KeyZ' }),
|
210
|
+
'Meta': KeyDefinition.new({ 'keyCode': 91, 'key': 'Meta', 'code': 'MetaLeft', 'location': 1 }),
|
211
|
+
'*': KeyDefinition.new({ 'keyCode': 106, 'key': '*', 'code': 'NumpadMultiply', 'location': 3 }),
|
212
|
+
'+': KeyDefinition.new({ 'keyCode': 107, 'key': '+', 'code': 'NumpadAdd', 'location': 3 }),
|
213
|
+
'-': KeyDefinition.new({ 'keyCode': 109, 'key': '-', 'code': 'NumpadSubtract', 'location': 3 }),
|
214
|
+
'/': KeyDefinition.new({ 'keyCode': 111, 'key': '/', 'code': 'NumpadDivide', 'location': 3 }),
|
215
|
+
';': KeyDefinition.new({ 'keyCode': 186, 'key': ';', 'code': 'Semicolon' }),
|
216
|
+
'=': KeyDefinition.new({ 'keyCode': 187, 'key': '=', 'code': 'Equal' }),
|
217
|
+
',': KeyDefinition.new({ 'keyCode': 188, 'key': ',', 'code': 'Comma' }),
|
218
|
+
'.': KeyDefinition.new({ 'keyCode': 190, 'key': '.', 'code': 'Period' }),
|
219
|
+
'`': KeyDefinition.new({ 'keyCode': 192, 'key': '`', 'code': 'Backquote' }),
|
220
|
+
'[': KeyDefinition.new({ 'keyCode': 219, 'key': '[', 'code': 'BracketLeft' }),
|
221
|
+
'\\': KeyDefinition.new({ 'keyCode': 220, 'key': '\\', 'code': 'Backslash' }),
|
222
|
+
']': KeyDefinition.new({ 'keyCode': 221, 'key': ']', 'code': 'BracketRight' }),
|
223
|
+
'\'': KeyDefinition.new({ 'keyCode': 222, 'key': '\'', 'code': 'Quote' }),
|
224
|
+
'Attn': KeyDefinition.new({ 'keyCode': 246, 'key': 'Attn' }),
|
225
|
+
'CrSel': KeyDefinition.new({ 'keyCode': 247, 'key': 'CrSel', 'code': 'Props' }),
|
226
|
+
'ExSel': KeyDefinition.new({ 'keyCode': 248, 'key': 'ExSel' }),
|
227
|
+
'EraseEof': KeyDefinition.new({ 'keyCode': 249, 'key': 'EraseEof' }),
|
228
|
+
'Play': KeyDefinition.new({ 'keyCode': 250, 'key': 'Play' }),
|
229
|
+
'ZoomOut': KeyDefinition.new({ 'keyCode': 251, 'key': 'ZoomOut' }),
|
230
|
+
')': KeyDefinition.new({ 'keyCode': 48, 'key': ')', 'code': 'Digit0' }),
|
231
|
+
'!': KeyDefinition.new({ 'keyCode': 49, 'key': '!', 'code': 'Digit1' }),
|
232
|
+
'@': KeyDefinition.new({ 'keyCode': 50, 'key': '@', 'code': 'Digit2' }),
|
233
|
+
'#': KeyDefinition.new({ 'keyCode': 51, 'key': '#', 'code': 'Digit3' }),
|
234
|
+
'$': KeyDefinition.new({ 'keyCode': 52, 'key': '$', 'code': 'Digit4' }),
|
235
|
+
'%': KeyDefinition.new({ 'keyCode': 53, 'key': '%', 'code': 'Digit5' }),
|
236
|
+
'^': KeyDefinition.new({ 'keyCode': 54, 'key': '^', 'code': 'Digit6' }),
|
237
|
+
'&': KeyDefinition.new({ 'keyCode': 55, 'key': '&', 'code': 'Digit7' }),
|
238
|
+
'(': KeyDefinition.new({ 'keyCode': 57, 'key': '\(', 'code': 'Digit9' }),
|
239
|
+
'A': KeyDefinition.new({ 'keyCode': 65, 'key': 'A', 'code': 'KeyA' }),
|
240
|
+
'B': KeyDefinition.new({ 'keyCode': 66, 'key': 'B', 'code': 'KeyB' }),
|
241
|
+
'C': KeyDefinition.new({ 'keyCode': 67, 'key': 'C', 'code': 'KeyC' }),
|
242
|
+
'D': KeyDefinition.new({ 'keyCode': 68, 'key': 'D', 'code': 'KeyD' }),
|
243
|
+
'E': KeyDefinition.new({ 'keyCode': 69, 'key': 'E', 'code': 'KeyE' }),
|
244
|
+
'F': KeyDefinition.new({ 'keyCode': 70, 'key': 'F', 'code': 'KeyF' }),
|
245
|
+
'G': KeyDefinition.new({ 'keyCode': 71, 'key': 'G', 'code': 'KeyG' }),
|
246
|
+
'H': KeyDefinition.new({ 'keyCode': 72, 'key': 'H', 'code': 'KeyH' }),
|
247
|
+
'I': KeyDefinition.new({ 'keyCode': 73, 'key': 'I', 'code': 'KeyI' }),
|
248
|
+
'J': KeyDefinition.new({ 'keyCode': 74, 'key': 'J', 'code': 'KeyJ' }),
|
249
|
+
'K': KeyDefinition.new({ 'keyCode': 75, 'key': 'K', 'code': 'KeyK' }),
|
250
|
+
'L': KeyDefinition.new({ 'keyCode': 76, 'key': 'L', 'code': 'KeyL' }),
|
251
|
+
'M': KeyDefinition.new({ 'keyCode': 77, 'key': 'M', 'code': 'KeyM' }),
|
252
|
+
'N': KeyDefinition.new({ 'keyCode': 78, 'key': 'N', 'code': 'KeyN' }),
|
253
|
+
'O': KeyDefinition.new({ 'keyCode': 79, 'key': 'O', 'code': 'KeyO' }),
|
254
|
+
'P': KeyDefinition.new({ 'keyCode': 80, 'key': 'P', 'code': 'KeyP' }),
|
255
|
+
'Q': KeyDefinition.new({ 'keyCode': 81, 'key': 'Q', 'code': 'KeyQ' }),
|
256
|
+
'R': KeyDefinition.new({ 'keyCode': 82, 'key': 'R', 'code': 'KeyR' }),
|
257
|
+
'S': KeyDefinition.new({ 'keyCode': 83, 'key': 'S', 'code': 'KeyS' }),
|
258
|
+
'T': KeyDefinition.new({ 'keyCode': 84, 'key': 'T', 'code': 'KeyT' }),
|
259
|
+
'U': KeyDefinition.new({ 'keyCode': 85, 'key': 'U', 'code': 'KeyU' }),
|
260
|
+
'V': KeyDefinition.new({ 'keyCode': 86, 'key': 'V', 'code': 'KeyV' }),
|
261
|
+
'W': KeyDefinition.new({ 'keyCode': 87, 'key': 'W', 'code': 'KeyW' }),
|
262
|
+
'X': KeyDefinition.new({ 'keyCode': 88, 'key': 'X', 'code': 'KeyX' }),
|
263
|
+
'Y': KeyDefinition.new({ 'keyCode': 89, 'key': 'Y', 'code': 'KeyY' }),
|
264
|
+
'Z': KeyDefinition.new({ 'keyCode': 90, 'key': 'Z', 'code': 'KeyZ' }),
|
265
|
+
':': KeyDefinition.new({ 'keyCode': 186, 'key': ':', 'code': 'Semicolon' }),
|
266
|
+
'<': KeyDefinition.new({ 'keyCode': 188, 'key': '\<', 'code': 'Comma' }),
|
267
|
+
'_': KeyDefinition.new({ 'keyCode': 189, 'key': '_', 'code': 'Minus' }),
|
268
|
+
'>': KeyDefinition.new({ 'keyCode': 190, 'key': '>', 'code': 'Period' }),
|
269
|
+
'?': KeyDefinition.new({ 'keyCode': 191, 'key': '?', 'code': 'Slash' }),
|
270
|
+
'~': KeyDefinition.new({ 'keyCode': 192, 'key': '~', 'code': 'Backquote' }),
|
271
|
+
'{': KeyDefinition.new({ 'keyCode': 219, 'key': '{', 'code': 'BracketLeft' }),
|
272
|
+
'|': KeyDefinition.new({ 'keyCode': 220, 'key': '|', 'code': 'Backslash' }),
|
273
|
+
'}': KeyDefinition.new({ 'keyCode': 221, 'key': '}', 'code': 'BracketRight' }),
|
274
|
+
'"': KeyDefinition.new({ 'keyCode': 222, 'key': '"', 'code': 'Quote' }),
|
275
|
+
'SoftLeft': KeyDefinition.new({ 'key': 'SoftLeft', 'code': 'SoftLeft', 'location': 4 }),
|
276
|
+
'SoftRight': KeyDefinition.new({ 'key': 'SoftRight', 'code': 'SoftRight', 'location': 4 }),
|
277
|
+
'Camera': KeyDefinition.new({ 'keyCode': 44, 'key': 'Camera', 'code': 'Camera', 'location': 4 }),
|
278
|
+
'Call': KeyDefinition.new({ 'key': 'Call', 'code': 'Call', 'location': 4 }),
|
279
|
+
'EndCall': KeyDefinition.new({ 'keyCode': 95, 'key': 'EndCall', 'code': 'EndCall', 'location': 4 }),
|
280
|
+
'VolumeDown': KeyDefinition.new({ 'keyCode': 182, 'key': 'VolumeDown', 'code': 'VolumeDown', 'location': 4 }),
|
281
|
+
'VolumeUp': KeyDefinition.new({ 'keyCode': 183, 'key': 'VolumeUp', 'code': 'VolumeUp', 'location': 4 }),
|
282
282
|
}
|
283
283
|
end
|