Module: Xlib::XI

Defined in:
lib/xlib/xi.rb,
lib/xlib/xi/event_mask.rb

Defined Under Namespace

Classes: EventMask

Class Method Summary collapse

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

.set_focus(display, device, window, time) ⇒ Object



20
21
22
23
24
# File 'lib/xlib/xi.rb', line 20

def set_focus(display, device, window, time)
  0 == Xlib::XISetFocus(display.to_native, device.to_native, window.to_native, time).tap do
    Xlib::X.flush(display)
  end
end

.ungrab_device(display, device, time) ⇒ Object



48
49
50
51
52
# File 'lib/xlib/xi.rb', line 48

def ungrab_device(display, device, time)
  0 == Xlib::XIUngrabDevice(display.to_native, device.to_native, time).tap do
    Xlib::X.flush(display)
  end
end