class Vigilem::X11::InputSystemHandler
Attributes
demultiplexer[R]
window_xid[R]
Public Class Methods
new(win_xid, display_obj_pointer_or_name, event_mask=nil)
click to toggle source
@param [Integer] win_xid @param [String || Display
|| ::FFI::Pointer] display_pointer_or_name @param [Integer] event_mask
# File lib/vigilem/x11/input_system_handler.rb, line 24 def initialize(win_xid, display_obj_pointer_or_name, event_mask=nil) initialize_input_system_handler display = Display.open(display_obj_pointer_or_name) @demultiplexer = Core::Demultiplexer.acquire(EventQueue.new(display), [[self.buffer, {:func => :concat}]]) do |dem| dem.input.respond.fileno == display.fileno end @window_xid = win_xid self.select_input(event_mask) if event_mask end
Public Instance Methods
get_input_focus()
click to toggle source
@see www.unix.com/man-page/All/3x/XGetInputFocus/ @return [Array<Integer, Fixnum>] [xwindow_id, revert_to_return]
# File lib/vigilem/x11/input_system_handler.rb, line 63 def get_input_focus X11.get_input_focus(display, window_xid, 0)[1..-1] end
query_tree(opts={})
click to toggle source
@see ::query_tree @return [Hash]
# File lib/vigilem/x11/input_system_handler.rb, line 69 def query_tree(opts={}) X11.query_tree(display, window_xid, opts) end
read_many_nonblock(num=1)
click to toggle source
@param [Fixnum] num @return [Array]
# File lib/vigilem/x11/input_system_handler.rb, line 45 def read_many_nonblock(num=1) synchronize { demultiplexer.demux(num) buffer.slice!(0, num) } end
select_input(event_mask)
click to toggle source
@todo handle `X Error of failed request: BadWindow (invalid Window parameter)' @param [Fixnum] @return [Fixnum]
# File lib/vigilem/x11/input_system_handler.rb, line 55 def select_input(event_mask) Xlib.XSelectInput(demultiplexer.input.display, window_xid, event_mask) end