rkremap 0.2.0 → 0.2.1
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/example/tmtms.rb +9 -9
- data/lib/rkremap/version.rb +1 -1
- data/lib/rkremap/winattr.rb +17 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d204d310504030119a941b532fec985cae5747c1d1e04958baefbb112327a629
|
4
|
+
data.tar.gz: c98176cf3e753eb59da16e614159a5516e9bc1701e63806ec02d3e3bd8c4d076
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e04feb18bbae681fc1b5bbd2f8a95ea85b58aff976865d857fd044274214eb9f2502c34bb7ff4cb9b620f3658e55f82157b4c6b98dbe4eb5dce8ce8446ff042d
|
7
|
+
data.tar.gz: 941f5b2893c031a7891151635b8cfb83d5ce410d8c0751da86a2b2699ce440a10221684dba881849bd54f4afa10f3b18cd8defe98b0a7601cfed4f5eb15bd7b6
|
data/example/tmtms.rb
CHANGED
@@ -159,16 +159,16 @@ rk.start do |code, mod, app|
|
|
159
159
|
|
160
160
|
# Ctrl は他のキーに変換
|
161
161
|
if mod[KEY_LEFTCTRL] || mod[KEY_RIGHTCTRL]
|
162
|
-
# Ctrl
|
162
|
+
# Ctrl-K/I/O は日本語変換時はそのまま
|
163
|
+
if (code == KEY_K || code == KEY_I || code ==KEY_O) && File.exist?('/tmp/fcitx-enabled')
|
164
|
+
rk.key(code, mod)
|
165
|
+
next
|
166
|
+
end
|
167
|
+
# Ctrl+K は行末まで削除
|
163
168
|
if code == KEY_K
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
else
|
168
|
-
rk.key(KEY_END, mod_disable_all.merge({KEY_LEFTSHIFT => true}))
|
169
|
-
rk.key(KEY_X, mod_disable_all.merge({KEY_LEFTCTRL => true}))
|
170
|
-
next
|
171
|
-
end
|
169
|
+
rk.key(KEY_END, mod_disable_all.merge({KEY_LEFTSHIFT => true}))
|
170
|
+
rk.key(KEY_X, mod_disable_all.merge({KEY_LEFTCTRL => true}))
|
171
|
+
next
|
172
172
|
end
|
173
173
|
# 単純な変換
|
174
174
|
if ctrl_map[code]
|
data/lib/rkremap/version.rb
CHANGED
data/lib/rkremap/winattr.rb
CHANGED
@@ -11,26 +11,26 @@ class Rkremap
|
|
11
11
|
|
12
12
|
# @return [Integer] Window
|
13
13
|
def focus_win
|
14
|
-
|
15
|
-
X11.XGetInputFocus(@display,
|
16
|
-
|
14
|
+
win = X11::Window.malloc(Fiddle::RUBY_FREE)
|
15
|
+
X11.XGetInputFocus(@display, win, @buf)
|
16
|
+
win.window
|
17
17
|
end
|
18
18
|
|
19
19
|
# @return [Array<window, name, class>]
|
20
20
|
def app_win(window)
|
21
21
|
return @app_win[window] if @app_win[window]
|
22
|
-
class_hint = X11::XClassHint.malloc
|
23
|
-
parent =
|
24
|
-
children =
|
22
|
+
class_hint = X11::XClassHint.malloc(Fiddle::RUBY_FREE)
|
23
|
+
parent = X11::Window.malloc(Fiddle::RUBY_FREE)
|
24
|
+
children = X11::Pointer.malloc(Fiddle::RUBY_FREE)
|
25
25
|
win = window
|
26
26
|
while win > 0
|
27
27
|
class_hint.name = nil
|
28
28
|
class_hint.class_name = nil
|
29
29
|
X11.XGetClassHint(@display, win, class_hint)
|
30
30
|
X11.XQueryTree(@display, win, @buf, parent, children, @buf)
|
31
|
-
X11.XFree(
|
31
|
+
X11.XFree(children.ptr)
|
32
32
|
break unless class_hint.name.null? && class_hint.class_name.null?
|
33
|
-
win = parent.
|
33
|
+
win = parent.window
|
34
34
|
end
|
35
35
|
unless class_hint.name.null?
|
36
36
|
win_name = class_hint.name.to_s
|
@@ -46,25 +46,27 @@ class Rkremap
|
|
46
46
|
# @return [String]
|
47
47
|
def app_title(window)
|
48
48
|
win = app_win(window)[0]
|
49
|
-
prop = X11::XTextProperty.malloc
|
50
|
-
text_list =
|
49
|
+
prop = X11::XTextProperty.malloc(Fiddle::RUBY_FREE)
|
50
|
+
text_list = X11::Pointer.malloc(Fiddle::RUBY_FREE)
|
51
51
|
X11.XGetWMName(@display, win, prop)
|
52
52
|
X11.Xutf8TextPropertyToTextList(@display, prop, text_list, @buf)
|
53
|
-
title =
|
54
|
-
X11.XFreeStringList(
|
53
|
+
title = text_list.ptr.ptr.to_s.force_encoding('utf-8')
|
54
|
+
X11.XFreeStringList(text_list.ptr)
|
55
55
|
title
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
module X11
|
60
60
|
extend Fiddle::Importer
|
61
|
-
dlload 'libX11.so'
|
61
|
+
dlload 'libX11.so.6'
|
62
62
|
typealias 'XID', 'unsigned long'
|
63
63
|
typealias 'Window', 'XID'
|
64
64
|
typealias 'Status', 'int'
|
65
65
|
typealias 'Atom', 'unsigned long'
|
66
|
-
|
67
|
-
|
66
|
+
Window = struct ['Window window']
|
67
|
+
Pointer = struct ['void *ptr']
|
68
|
+
XClassHint = struct ['char *name', 'char *class_name']
|
69
|
+
XTextProperty = struct ['unsigned char *value', 'Atom encoding', 'int format', 'unsigned long nitems']
|
68
70
|
|
69
71
|
extern 'Display* XOpenDisplay(char*)'
|
70
72
|
extern 'int XGetInputFocus(Display*, Window*, int*)'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rkremap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
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-01-
|
11
|
+
date: 2022-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: key remapper
|
14
14
|
email:
|