xkeyrap 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/xkeyrap +5 -3
- data/lib/xkeyrap/command.rb +0 -1
- data/lib/xkeyrap/key.rb +3 -0
- data/lib/xkeyrap/version.rb +1 -1
- data/lib/xkeyrap.rb +13 -10
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53d65df084224617a2b2e9e7c785c26169a699129b04a6304e3d8dbd692609b0
|
4
|
+
data.tar.gz: 273876407024ab07ae36d093783e7fb509dbd15dabb2c7ca65b0d0f33f928419
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76e0757655a469cae1a96329117aa128d05c9a74fdd3b0f89ce733082a8b1de1f61f1018bea08c067f8cafc7dbd500cc1b6c5034637f6805704e6be4ba03f5b5
|
7
|
+
data.tar.gz: 0c73fa4e02107bb8c7543b61dc0d83f4649a2c986436e8843d70b1dede44fb12c873d20fe7769d06d4b2e5b53382ff7c4c7e4f8e11562e7b988513f81f1e58c0
|
data/bin/xkeyrap
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'xkeyrap'
|
4
|
-
|
5
|
-
puts "
|
6
|
-
|
4
|
+
keyboard_device = ARGV[1]
|
5
|
+
puts "#########################################"
|
6
|
+
puts "grab device: #{keyboard_device}"
|
7
|
+
puts "#########################################"
|
8
|
+
Xkeyrap::Cli.run(keyboard_device)
|
data/lib/xkeyrap/command.rb
CHANGED
data/lib/xkeyrap/key.rb
CHANGED
data/lib/xkeyrap/version.rb
CHANGED
data/lib/xkeyrap.rb
CHANGED
@@ -9,10 +9,9 @@ require 'uinput/device'
|
|
9
9
|
|
10
10
|
module Xkeyrap
|
11
11
|
class Cli
|
12
|
-
|
13
|
-
def self.run(device)
|
12
|
+
def self.run(keyboard_device)
|
14
13
|
display = XlibObj::Display.new(':0')
|
15
|
-
|
14
|
+
virtual_device = Uinput::Device.new do
|
16
15
|
self.name = "Xkeyrap virtual device"
|
17
16
|
self.type = LinuxInput::BUS_VIRTUAL
|
18
17
|
|
@@ -24,12 +23,12 @@ module Xkeyrap
|
|
24
23
|
self.add_event(:EV_SYN)
|
25
24
|
end
|
26
25
|
|
27
|
-
keyboard = Evdev.new(
|
26
|
+
keyboard = Evdev.new(keyboard_device)
|
28
27
|
keyboard.grab
|
29
28
|
|
30
|
-
command = Command.new(
|
29
|
+
command = Command.new(virtual_device, nil)
|
31
30
|
|
32
|
-
|
31
|
+
keyboard.on(*Xkeyrap::Key::ALL_KEYS) do |state, key|
|
33
32
|
root_window = display.screens.first.root_window
|
34
33
|
top_level_windows = root_window.property(:_NET_CLIENT_LIST_STACKING)
|
35
34
|
focused_window = display.focused_window
|
@@ -57,10 +56,14 @@ module Xkeyrap
|
|
57
56
|
parent = FFI::MemoryPointer.new :Window
|
58
57
|
number = FFI::MemoryPointer.new :uint
|
59
58
|
children = FFI::MemoryPointer.new :pointer
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
59
|
+
begin
|
60
|
+
q = Xlib.XQueryTree(display.to_native, focused_window.to_native, root, parent, children, number)
|
61
|
+
parent_window_id = parent.read(:int)
|
62
|
+
parent_window = top_level_windows.select {|tlw| tlw.id == parent_window_id }.first
|
63
|
+
parent_window.property("WM_CLASS")[1]
|
64
|
+
rescue
|
65
|
+
"global"
|
66
|
+
end
|
64
67
|
end
|
65
68
|
end
|
66
69
|
end
|