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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9cb72d3bf69bf2d0641eb7856903d110f0a253d5377c2d97ea452a1f0fd5c13
4
- data.tar.gz: 1dd89d3569fc5396a6c314618bcc975e04b63b0f2a55d9c3dd8cd5497f1e2164
3
+ metadata.gz: d204d310504030119a941b532fec985cae5747c1d1e04958baefbb112327a629
4
+ data.tar.gz: c98176cf3e753eb59da16e614159a5516e9bc1701e63806ec02d3e3bd8c4d076
5
5
  SHA512:
6
- metadata.gz: 8cf20b635b0aa1584e81cc0317040931f62f011e004189e30428534c04456159cde7ac37c5f790cc1af06d396b9d60c36c4398a5d51947dcf99309eb3edb584b
7
- data.tar.gz: cde725ba50b0d5b2fd3daf837af9e1244a1cc5cb3d40f497d9dbf00e6655edc0e436dcdc94056b8bc9efa3887ec2419fd7e53b11e8289c142217be2dd577f8ef
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+K は行末まで削除 (日本語変換時はそのまま)
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
- if File.exist?('/tmp/fcitx-enabled')
165
- rk.key(code, mod)
166
- next
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]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Rkremap
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
@@ -11,26 +11,26 @@ class Rkremap
11
11
 
12
12
  # @return [Integer] Window
13
13
  def focus_win
14
- win_buf = ' ' * X11.sizeof('Window')
15
- X11.XGetInputFocus(@display, win_buf, @buf)
16
- win_buf.unpack1('L')
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 = ' ' * X11.sizeof('Window')
24
- children = ' ' * X11.sizeof('void*')
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(Fiddle::Pointer[children].ptr)
31
+ X11.XFree(children.ptr)
32
32
  break unless class_hint.name.null? && class_hint.class_name.null?
33
- win = parent.unpack1('L')
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 = ' ' * X11.sizeof('void*')
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 = Fiddle::Pointer[text_list].ptr.ptr.to_s.force_encoding('utf-8')
54
- X11.XFreeStringList(Fiddle::Pointer[text_list].ptr)
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
- XClassHint = struct(['char *name', 'char *class_name'])
67
- XTextProperty = struct(['unsigned char *value', 'Atom encoding', 'int format', 'unsigned long nitems'])
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.0
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-12 00:00:00.000000000 Z
11
+ date: 2022-01-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: key remapper
14
14
  email: