rkremap 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|