lib/xkeyrap.rb in xkeyrap-0.0.2 vs lib/xkeyrap.rb in xkeyrap-0.0.4
- old
+ new
@@ -8,11 +8,11 @@
require 'uinput/device'
module Xkeyrap
class Cli
- def self.run(input_device, config_file)
+ def self.run(device)
display = XlibObj::Display.new(':0')
device = Uinput::Device.new do
self.name = "Xkeyrap virtual device"
self.type = LinuxInput::BUS_VIRTUAL
@@ -22,14 +22,18 @@
self.add_event(:EV_KEY)
self.add_event(:EV_SYN)
end
- keyboard = Evdev.new(input_device)
+ keyboard = Evdev.new(device)
+
+
+ #puts keyboard.supports_event? :KEY_ENTER
+ #puts keyboard.supports_event? :KEY_KPENTER
keyboard.grab
- command = Command.new(device, config_file)
+ command = Command.new(device, nil)
key_handler = keyboard.on(*Xkeyrap::Key::ALL_KEYS) do |state, key|
root_window = display.screens.first.root_window
top_level_windows = root_window.property(:_NET_CLIENT_LIST_STACKING)
focused_window = display.focused_window
@@ -55,12 +59,16 @@
def self.get_parent_window_name(display, top_level_windows, focused_window)
root = FFI::MemoryPointer.new :Window
parent = FFI::MemoryPointer.new :Window
number = FFI::MemoryPointer.new :uint
children = FFI::MemoryPointer.new :pointer
- q = Xlib.XQueryTree(display.to_native, focused_window.to_native, root, parent, children, number)
- parent_window_id = parent.read(:int)
- parent_window = top_level_windows.select {|tlw| tlw.id == parent_window_id }.first
- parent_window.property("WM_CLASS")[1]
+ begin
+ q = Xlib.XQueryTree(display.to_native, focused_window.to_native, root, parent, children, number)
+ parent_window_id = parent.read(:int)
+ parent_window = top_level_windows.select {|tlw| tlw.id == parent_window_id }.first
+ parent_window.property("WM_CLASS")[1]
+ rescue
+ "global"
+ end
end
end
end