Module: Xlib::XI
- Defined in:
- lib/xlib/xi.rb,
lib/xlib/xi/event_mask.rb
Defined Under Namespace
Classes: EventMask
Class Method Summary collapse
- .free_device_info(device_info) ⇒ Object
- .get_focus(display, device) ⇒ Object
- .grab_device(display, device, window, time, cursor, mode, pair_mode, owner_events, event_mask) ⇒ Object
- .query_device(display, device_id) ⇒ Object
- .select_events(display, devices, window, event_mask) ⇒ Object
- .set_focus(display, device, window, time) ⇒ Object
- .ungrab_device(display, device, time) ⇒ Object
Class Method Details
.free_device_info(device_info) ⇒ Object
15 16 17 18 |
# File 'lib/xlib/xi.rb', line 15 def free_device_info(device_info) Xlib.XIFreeDeviceInfo(device_info.pointer) true end |
.get_focus(display, device) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/xlib/xi.rb', line 26 def get_focus(display, device) window_id_ptr = FFI::MemoryPointer.new :Window if 0 == Xlib::XIGetFocus(display.to_native, device.to_native, window_id_ptr) case window_id = window_id_ptr.read_int when Xlib::PointerRoot display.screens.first.root_window when Xlib::None nil else XlibObj::Window.new(display, window_id) end end end |
.grab_device(display, device, window, time, cursor, mode, pair_mode, owner_events, event_mask) ⇒ Object
40 41 42 43 44 45 46 |
# File 'lib/xlib/xi.rb', line 40 def grab_device(display, device, window, time, cursor, mode, pair_mode, owner_events, event_mask) event_mask = EventMask.new(device, event_mask) 0 == Xlib::XIGrabDevice(display.to_native, device.to_native, window.to_native, time, cursor, mode, pair_mode, owner_events, event_mask.to_native).tap do Xlib::X.flush(display) end end |
.query_device(display, device_id) ⇒ Object
4 5 6 7 8 9 10 11 12 13 |
# File 'lib/xlib/xi.rb', line 4 def query_device(display, device_id) ndevices_ptr = FFI::MemoryPointer.new :int device_infos_ptr = Xlib::XIQueryDevice(display.to_native, device_id, ndevices_ptr) ndevices = ndevices_ptr.read_int 0.upto(ndevices-1).map do |position| device_info_ptr = device_infos_ptr + position * Xlib::XIDeviceInfo.size Xlib::XIDeviceInfo.new(device_info_ptr) end end |
.select_events(display, devices, window, event_mask) ⇒ Object
54 55 56 57 58 59 |
# File 'lib/xlib/xi.rb', line 54 def select_events(display, devices, window, event_mask) event_mask = EventMask.new(devices, event_mask) Xlib.XISelectEvents(display.to_native, window.to_native, event_mask.to_native, devices.size) Xlib::X.flush(display) true end |