rkremap 0.2.1 → 0.4.0
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 +4 -4
- data/README.md +76 -4
- data/example/henkan-super.rb +52 -0
- data/example/keylogger.rb +2 -2
- data/example/mac-shortcut.rb +48 -11
- data/example/tmtms.rb +98 -100
- data/lib/rkremap/evdev.rb +49 -61
- data/lib/rkremap/evdev_list.rb +84 -0
- data/lib/rkremap/event.rb +58 -0
- data/lib/rkremap/keycode.rb +81 -1
- data/lib/rkremap/uinput.rb +40 -0
- data/lib/rkremap/version.rb +1 -1
- data/lib/rkremap/winattr.rb +4 -1
- data/lib/rkremap.rb +108 -57
- metadata +25 -8
- data/example/henkan-alt.rb +0 -93
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rkremap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- TOMITA Masahiro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
12
|
-
dependencies:
|
11
|
+
date: 2022-08-19 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tmtms_timer
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.3'
|
13
27
|
description: key remapper
|
14
28
|
email:
|
15
29
|
- tommy@tmtm.org
|
@@ -18,21 +32,24 @@ extensions: []
|
|
18
32
|
extra_rdoc_files: []
|
19
33
|
files:
|
20
34
|
- README.md
|
21
|
-
- example/henkan-
|
35
|
+
- example/henkan-super.rb
|
22
36
|
- example/keylogger.rb
|
23
37
|
- example/mac-shortcut.rb
|
24
38
|
- example/tmtms.rb
|
25
39
|
- lib/rkremap.rb
|
26
40
|
- lib/rkremap/evdev.rb
|
41
|
+
- lib/rkremap/evdev_list.rb
|
42
|
+
- lib/rkremap/event.rb
|
27
43
|
- lib/rkremap/keycode.rb
|
44
|
+
- lib/rkremap/uinput.rb
|
28
45
|
- lib/rkremap/version.rb
|
29
46
|
- lib/rkremap/winattr.rb
|
30
|
-
homepage: https://
|
47
|
+
homepage: https://gitlab.com/tmtms/rkremap
|
31
48
|
licenses:
|
32
49
|
- MIT
|
33
50
|
metadata:
|
34
|
-
homepage_uri: https://
|
35
|
-
source_code_uri: https://
|
51
|
+
homepage_uri: https://gitlab.com/tmtms/rkremap
|
52
|
+
source_code_uri: https://gitlab.com/tmtms/rkremap
|
36
53
|
documentation_uri: https://www.rubydoc.info/gems/rkremap
|
37
54
|
rubygems_mfa_required: 'true'
|
38
55
|
post_install_message:
|
@@ -50,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
50
67
|
- !ruby/object:Gem::Version
|
51
68
|
version: '0'
|
52
69
|
requirements: []
|
53
|
-
rubygems_version: 3.3.
|
70
|
+
rubygems_version: 3.3.7
|
54
71
|
signing_key:
|
55
72
|
specification_version: 4
|
56
73
|
summary: key remapper
|
data/example/henkan-alt.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
# 変換/無変換キーを0.5秒以上押してるとALTキーとして扱う。
|
2
|
-
# 0.5秒以内でも変換/無変換キーを押しながら他のキーを押すとALTキーとして扱う。
|
3
|
-
|
4
|
-
require 'rkremap'
|
5
|
-
include Rkremap::KeyCode
|
6
|
-
|
7
|
-
rk = Rkremap.new
|
8
|
-
rk.grab = true
|
9
|
-
|
10
|
-
class State
|
11
|
-
attr_accessor :converted
|
12
|
-
|
13
|
-
def initialize
|
14
|
-
@press = nil
|
15
|
-
@converted = false
|
16
|
-
@thread = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def press(thread)
|
20
|
-
@press = true
|
21
|
-
@converted = false
|
22
|
-
@thread = thread
|
23
|
-
end
|
24
|
-
|
25
|
-
def release
|
26
|
-
@press = false
|
27
|
-
@converted = false
|
28
|
-
@thread.kill
|
29
|
-
@thread = nil
|
30
|
-
end
|
31
|
-
|
32
|
-
def pressed?
|
33
|
-
@press
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
state = {
|
38
|
-
KEY_HENKAN => State.new,
|
39
|
-
KEY_MUHENKAN => State.new,
|
40
|
-
}
|
41
|
-
|
42
|
-
MAP = {
|
43
|
-
KEY_HENKAN => KEY_RIGHTALT,
|
44
|
-
KEY_MUHENKAN => KEY_LEFTALT,
|
45
|
-
}
|
46
|
-
|
47
|
-
rk.match(code: [KEY_HENKAN, KEY_MUHENKAN], type: :press) do |event|
|
48
|
-
thr = Thread.new(event.code) do |code|
|
49
|
-
sleep 0.5
|
50
|
-
rk.synchronize do
|
51
|
-
if state[code].pressed?
|
52
|
-
rk.event(code: MAP[code], type: :press)
|
53
|
-
state[code].converted = true
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
state[event.code].press(thr)
|
58
|
-
event.skip
|
59
|
-
end
|
60
|
-
|
61
|
-
rk.match(code: [KEY_HENKAN, KEY_MUHENKAN], type: :release) do |event|
|
62
|
-
if state[event.code].converted
|
63
|
-
rk.event(code: MAP[event.code], type: :release)
|
64
|
-
event.skip
|
65
|
-
else
|
66
|
-
rk.event(code: event.code, type: :press)
|
67
|
-
rk.event(code: event.code, type: :release)
|
68
|
-
end
|
69
|
-
state[event.code].release
|
70
|
-
end
|
71
|
-
|
72
|
-
rk.match(code: [KEY_HENKAN, KEY_MUHENKAN], type: :repeat) do |event|
|
73
|
-
event.skip
|
74
|
-
end
|
75
|
-
|
76
|
-
rk.match(type: :press) do
|
77
|
-
[KEY_HENKAN, KEY_MUHENKAN].each do |code|
|
78
|
-
if state[code].pressed?
|
79
|
-
rk.event(code: MAP[code], type: :press)
|
80
|
-
state[code].converted = true
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def code2key(code)
|
86
|
-
Rkremap::CODE_KEY[code].to_s.sub(/\AKEY_/, '')
|
87
|
-
end
|
88
|
-
|
89
|
-
rk.start do |code, mod|
|
90
|
-
key = (mod.select{|_, v| v}.keys + [code]).map{|c| code2key(c)}.join('-')
|
91
|
-
puts key
|
92
|
-
rk.key(code, mod)
|
93
|
-
end
|