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 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: