x11.xinput2.ffi
parent
af7f389b97
commit
715973905f
|
@ -0,0 +1 @@
|
|||
Niklas Waern
|
|
@ -0,0 +1,482 @@
|
|||
! Copyright (C) 2010 Niklas Waern.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
USING: alien alien.c-types alien.libraries alien.syntax
|
||||
classes.struct locals sequences x11.syntax x11.xlib ;
|
||||
EXCLUDE: math => float ;
|
||||
IN: x11.xinput2.ffi
|
||||
|
||||
<< "xinput2" "libXi.so" cdecl add-library >>
|
||||
|
||||
LIBRARY: xinput2
|
||||
|
||||
|
||||
! *********
|
||||
! * XI2.h *
|
||||
! *********
|
||||
:: XISetMask ( mask event -- )
|
||||
event -3 shift :> index
|
||||
event 7 bitand 2^ :> bit-mask
|
||||
bit-mask index mask nth bitor
|
||||
index mask set-nth ; inline
|
||||
|
||||
:: XIClearMask ( mask event -- )
|
||||
event -3 shift :> index
|
||||
event 7 bitand 2^ bitnot :> bit-mask
|
||||
bit-mask index mask nth bitand
|
||||
index mask set-nth ; inline
|
||||
|
||||
:: XIMaskIsSet ( mask event -- n )
|
||||
event -3 shift :> index
|
||||
event 7 bitand 2^ :> bit-mask
|
||||
bit-mask index mask nth bitand ;
|
||||
|
||||
: XIMaskLen ( event -- n ) 7 + -3 shift ;
|
||||
|
||||
|
||||
! *************
|
||||
! * XInput2.h *
|
||||
! *************
|
||||
STRUCT: XIAddMasterInfo
|
||||
{ type int }
|
||||
{ name c-string }
|
||||
{ send_core Bool }
|
||||
{ enable Bool } ;
|
||||
|
||||
STRUCT: XIRemoveMasterInfo
|
||||
{ type int }
|
||||
{ deviceid int }
|
||||
{ return_mode int }
|
||||
{ return_pointer int }
|
||||
{ return_keyboard int } ;
|
||||
|
||||
STRUCT: XIAttachSlaveInfo
|
||||
{ type int }
|
||||
{ deviceid int }
|
||||
{ new_master int } ;
|
||||
|
||||
STRUCT: XIDetachSlaveInfo
|
||||
{ type int }
|
||||
{ deviceid int } ;
|
||||
|
||||
UNION-STRUCT: XIAnyHierarchyChangeInfo
|
||||
{ type int }
|
||||
{ add XIAddMasterInfo }
|
||||
{ remove XIRemoveMasterInfo }
|
||||
{ attach XIAttachSlaveInfo }
|
||||
{ detach XIDetachSlaveInfo } ;
|
||||
|
||||
STRUCT: XIModifierState
|
||||
{ base int }
|
||||
{ latched int }
|
||||
{ locked int }
|
||||
{ effective int } ;
|
||||
|
||||
TYPEDEF: XIModifierState XIGroupState
|
||||
|
||||
STRUCT: XIButtonState
|
||||
{ mask_len int }
|
||||
{ mask uchar* } ;
|
||||
|
||||
STRUCT: XIValuatorState
|
||||
{ mask_len int }
|
||||
{ mask uchar* }
|
||||
{ values double* } ;
|
||||
|
||||
STRUCT: XIEventMask
|
||||
{ deviceid int }
|
||||
{ mask_len int }
|
||||
{ mask uchar* } ;
|
||||
|
||||
STRUCT: XIAnyClassInfo
|
||||
{ type int }
|
||||
{ sourceid int } ;
|
||||
|
||||
STRUCT: XIButtonClassInfo
|
||||
{ type int }
|
||||
{ sourceid int }
|
||||
{ num_buttons int }
|
||||
{ labels Atom* }
|
||||
{ state XIButtonState } ;
|
||||
|
||||
STRUCT: XIKeyClassInfo
|
||||
{ type int }
|
||||
{ sourceid int }
|
||||
{ num_keycodes int }
|
||||
{ keycodes int* } ;
|
||||
|
||||
STRUCT: XIValuatorClassInfo
|
||||
{ type int }
|
||||
{ sourceid int }
|
||||
{ number int }
|
||||
{ label Atom }
|
||||
{ min double }
|
||||
{ max double }
|
||||
{ value double }
|
||||
{ resolution int }
|
||||
{ mode int } ;
|
||||
|
||||
STRUCT: XIDeviceInfo
|
||||
{ deviceid int }
|
||||
{ name c-string }
|
||||
{ use int }
|
||||
{ attachment int }
|
||||
{ enabled Bool }
|
||||
{ num_classes int }
|
||||
{ classes XIAnyClassInfo** } ;
|
||||
|
||||
STRUCT: XIGrabModifiers
|
||||
{ modifiers int }
|
||||
{ status int } ;
|
||||
|
||||
|
||||
! Generic XI2 event. All XI2 events have the same header.
|
||||
STRUCT: XIEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time } ;
|
||||
|
||||
STRUCT: XIHierarchyInfo
|
||||
{ deviceid int }
|
||||
{ attachment int }
|
||||
{ use int }
|
||||
{ enabled Bool }
|
||||
{ flags int } ;
|
||||
|
||||
! Notifies the client that the device hierarcy has been changed
|
||||
! The client is expected to re-query the server for the device
|
||||
! hierarchy.
|
||||
STRUCT: XIHierarchyEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ flags int }
|
||||
{ num_info int }
|
||||
{ info XIHierarchyInfo* } ;
|
||||
|
||||
! Notifies the client that the classes have been changed.
|
||||
! This happens when the slave device that sends through the
|
||||
! master changes.
|
||||
STRUCT: XIDeviceChangedEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ deviceid int }
|
||||
{ sourceid int }
|
||||
{ reason int }
|
||||
{ num_classes int }
|
||||
{ classes XIAnyClassInfo** } ;
|
||||
|
||||
STRUCT: XIDeviceEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ deviceid int }
|
||||
{ sourceid int }
|
||||
{ detail int }
|
||||
{ root Window }
|
||||
{ event Window }
|
||||
{ child Window }
|
||||
{ root_x double }
|
||||
{ root_y double }
|
||||
{ event_x double }
|
||||
{ event_y double }
|
||||
{ flags int }
|
||||
{ buttons XIButtonState }
|
||||
{ valuators XIValuatorState }
|
||||
{ mods XIModifierState }
|
||||
{ group XIGroupState } ;
|
||||
|
||||
STRUCT: XIRawEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ deviceid int }
|
||||
{ sourceid int }
|
||||
{ detail int }
|
||||
{ flags int }
|
||||
{ valuators XIValuatorState }
|
||||
{ raw_values double* } ;
|
||||
|
||||
STRUCT: XIEnterEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ deviceid int }
|
||||
{ sourceid int }
|
||||
{ detail int }
|
||||
{ root Window }
|
||||
{ event Window }
|
||||
{ child Window }
|
||||
{ root_x double }
|
||||
{ root_y double }
|
||||
{ event_x double }
|
||||
{ event_y double }
|
||||
{ mode int }
|
||||
{ focus Bool }
|
||||
{ same_screen Bool }
|
||||
{ buttons XIButtonState }
|
||||
{ mods XIModifierState }
|
||||
{ group XIGroupState } ;
|
||||
|
||||
TYPEDEF: XIEnterEvent XILeaveEvent
|
||||
TYPEDEF: XIEnterEvent XIFocusInEvent
|
||||
TYPEDEF: XIEnterEvent XIFocusOutEvent
|
||||
|
||||
STRUCT: XIPropertyEvent
|
||||
{ type int }
|
||||
{ serial ulong }
|
||||
{ send_event Bool }
|
||||
{ display Display* }
|
||||
{ extension int }
|
||||
{ evtype int }
|
||||
{ time Time }
|
||||
{ deviceid int }
|
||||
{ property Atom }
|
||||
{ what int } ;
|
||||
|
||||
|
||||
|
||||
X-FUNCTION: Bool XIQueryPointer (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window win,
|
||||
Window* root,
|
||||
Window* child,
|
||||
double* root_x,
|
||||
double* root_y,
|
||||
double* win_x,
|
||||
double* win_y,
|
||||
XIButtonState* buttons,
|
||||
XIModifierState* mods,
|
||||
XIGroupState* group ) ;
|
||||
|
||||
X-FUNCTION: Bool XIWarpPointer (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window src_win,
|
||||
Window dst_win,
|
||||
double src_x,
|
||||
double src_y,
|
||||
uint src_width,
|
||||
uint src_height,
|
||||
double dst_x,
|
||||
double dst_y ) ;
|
||||
|
||||
X-FUNCTION: Status XIDefineCursor (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window win,
|
||||
Cursor cursor ) ;
|
||||
|
||||
X-FUNCTION: Status XIUndefineCursor (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window win ) ;
|
||||
|
||||
X-FUNCTION: Status XIChangeHierarchy (
|
||||
Display* display,
|
||||
XIAnyHierarchyChangeInfo* changes,
|
||||
int num_changes ) ;
|
||||
|
||||
X-FUNCTION: Status XISetClientPointer (
|
||||
Display* dpy,
|
||||
Window win,
|
||||
int deviceid ) ;
|
||||
|
||||
X-FUNCTION: Bool XIGetClientPointer (
|
||||
Display* dpy,
|
||||
Window win,
|
||||
int* deviceid ) ;
|
||||
|
||||
X-FUNCTION: int XISelectEvents (
|
||||
Display* dpy,
|
||||
Window win,
|
||||
XIEventMask* masks,
|
||||
int num_masks ) ;
|
||||
|
||||
X-FUNCTION: XIEventMask* XIGetSelectedEvents (
|
||||
Display* dpy,
|
||||
Window win,
|
||||
int* num_masks_return ) ;
|
||||
|
||||
X-FUNCTION: Status XIQueryVersion (
|
||||
Display* display,
|
||||
int* major_version_inout,
|
||||
int* minor_version_inout ) ;
|
||||
|
||||
X-FUNCTION: XIDeviceInfo* XIQueryDevice (
|
||||
Display* dpy,
|
||||
int deviceid,
|
||||
int* ndevices_return ) ;
|
||||
|
||||
X-FUNCTION: Status XISetFocus (
|
||||
Display* dpy,
|
||||
int deviceid,
|
||||
Window focus,
|
||||
Time time ) ;
|
||||
|
||||
X-FUNCTION: Status XIGetFocus (
|
||||
Display* dpy,
|
||||
int deviceid,
|
||||
Window* focus_return ) ;
|
||||
|
||||
X-FUNCTION: Status XIGrabDevice (
|
||||
Display* dpy,
|
||||
int deviceid,
|
||||
Window grab_window,
|
||||
Time time,
|
||||
Cursor cursor,
|
||||
int grab_mode,
|
||||
int paired_device_mode,
|
||||
Bool owner_events,
|
||||
XIEventMask* mask ) ;
|
||||
|
||||
X-FUNCTION: Status XIUngrabDevice (
|
||||
Display* dpy,
|
||||
int deviceid,
|
||||
Time time ) ;
|
||||
|
||||
X-FUNCTION: Status XIAllowEvents (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int event_mode,
|
||||
Time time ) ;
|
||||
|
||||
X-FUNCTION: int XIGrabButton (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int button,
|
||||
Window grab_window,
|
||||
Cursor cursor,
|
||||
int grab_mode,
|
||||
int paired_device_mode,
|
||||
int owner_events,
|
||||
XIEventMask* mask,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers_inout ) ;
|
||||
|
||||
X-FUNCTION: int XIGrabKeycode (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int keycode,
|
||||
Window grab_window,
|
||||
int grab_mode,
|
||||
int paired_device_mode,
|
||||
int owner_events,
|
||||
XIEventMask* mask,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers_inout ) ;
|
||||
|
||||
X-FUNCTION: int XIGrabEnter (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window grab_window,
|
||||
Cursor cursor,
|
||||
int grab_mode,
|
||||
int paired_device_mode,
|
||||
int owner_events,
|
||||
XIEventMask* mask,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers_inout ) ;
|
||||
|
||||
X-FUNCTION: int XIGrabFocusIn (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window grab_window,
|
||||
int grab_mode,
|
||||
int paired_device_mode,
|
||||
int owner_events,
|
||||
XIEventMask* mask,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers_inout ) ;
|
||||
|
||||
X-FUNCTION: Status XIUngrabButton (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int button,
|
||||
Window grab_window,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers ) ;
|
||||
|
||||
X-FUNCTION: Status XIUngrabKeycode (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int keycode,
|
||||
Window grab_window,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers ) ;
|
||||
|
||||
X-FUNCTION: Status XIUngrabEnter (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window grab_window,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers ) ;
|
||||
|
||||
X-FUNCTION: Status XIUngrabFocusIn (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Window grab_window,
|
||||
int num_modifiers,
|
||||
XIGrabModifiers* modifiers ) ;
|
||||
|
||||
X-FUNCTION: Atom* XIListProperties (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
int* num_props_return ) ;
|
||||
|
||||
X-FUNCTION: void XIChangeProperty (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Atom property,
|
||||
Atom type,
|
||||
int format,
|
||||
int mode,
|
||||
uchar* data,
|
||||
int num_items ) ;
|
||||
|
||||
X-FUNCTION: void XIDeleteProperty (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Atom property ) ;
|
||||
|
||||
X-FUNCTION: Status XIGetProperty (
|
||||
Display* display,
|
||||
int deviceid,
|
||||
Atom property,
|
||||
long offset,
|
||||
long length,
|
||||
Bool delete_property,
|
||||
Atom type,
|
||||
Atom* type_return,
|
||||
int* format_return,
|
||||
ulong* num_items_return,
|
||||
ulong* bytes_after_return,
|
||||
uchar** data ) ;
|
||||
|
||||
X-FUNCTION: void XIFreeDeviceInfo ( XIDeviceInfo* info ) ;
|
||||
|
Loading…
Reference in New Issue