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