#ifndef _XKBLIB_H_
#define _XKBLIB_H_
#include <X11/Xlib.h>
#include <X11/extensions/XKBstr.h>
typedef struct _XkbAnyEvent {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
unsigned int device;
} XkbAnyEvent;
typedef struct _XkbNewKeyboardNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
int old_device;
int min_key_code;
int max_key_code;
int old_min_key_code;
int old_max_key_code;
unsigned int changed;
char req_major;
char req_minor;
} XkbNewKeyboardNotifyEvent;
typedef struct _XkbMapNotifyEvent {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed;
unsigned int flags;
int first_type;
int num_types;
KeyCode min_key_code;
KeyCode max_key_code;
KeyCode first_key_sym;
KeyCode first_key_act;
KeyCode first_key_behavior;
KeyCode first_key_explicit;
KeyCode first_modmap_key;
KeyCode first_vmodmap_key;
int num_key_syms;
int num_key_acts;
int num_key_behaviors;
int num_key_explicit;
int num_modmap_keys;
int num_vmodmap_keys;
unsigned int vmods;
} XkbMapNotifyEvent;
typedef struct _XkbStateNotifyEvent {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed;
int group;
int base_group;
int latched_group;
int locked_group;
unsigned int mods;
unsigned int base_mods;
unsigned int latched_mods;
unsigned int locked_mods;
int compat_state;
unsigned char grab_mods;
unsigned char compat_grab_mods;
unsigned char lookup_mods;
unsigned char compat_lookup_mods;
int ptr_buttons;
KeyCode keycode;
char event_type;
char req_major;
char req_minor;
} XkbStateNotifyEvent;
typedef struct _XkbControlsNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed_ctrls;
unsigned int enabled_ctrls;
unsigned int enabled_ctrl_changes;
int num_groups;
KeyCode keycode;
char event_type;
char req_major;
char req_minor;
} XkbControlsNotifyEvent;
typedef struct _XkbIndicatorNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed;
unsigned int state;
} XkbIndicatorNotifyEvent;
typedef struct _XkbNamesNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed;
int first_type;
int num_types;
int first_lvl;
int num_lvls;
int num_aliases;
int num_radio_groups;
unsigned int changed_vmods;
unsigned int changed_groups;
unsigned int changed_indicators;
int first_key;
int num_keys;
} XkbNamesNotifyEvent;
typedef struct _XkbCompatMapNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int changed_groups;
int first_si;
int num_si;
int num_total_si;
} XkbCompatMapNotifyEvent;
typedef struct _XkbBellNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
int percent;
int pitch;
int duration;
int bell_class;
int bell_id;
Atom name;
Window window;
Bool event_only;
} XkbBellNotifyEvent;
typedef struct _XkbActionMessage {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
KeyCode keycode;
Bool press;
Bool key_event_follows;
int group;
unsigned int mods;
char message[XkbActionMessageLength+1];
} XkbActionMessageEvent;
typedef struct _XkbAccessXNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
int detail;
int keycode;
int sk_delay;
int debounce_delay;
} XkbAccessXNotifyEvent;
typedef struct _XkbExtensionDeviceNotify {
int type;
unsigned long serial;
Bool send_event;
Display * display;
Time time;
int xkb_type;
int device;
unsigned int reason;
unsigned int supported;
unsigned int unsupported;
int first_btn;
int num_btns;
unsigned int leds_defined;
unsigned int led_state;
int led_class;
int led_id;
} XkbExtensionDeviceNotifyEvent;
typedef union _XkbEvent {
int type;
XkbAnyEvent any;
XkbNewKeyboardNotifyEvent new_kbd;
XkbMapNotifyEvent map;
XkbStateNotifyEvent state;
XkbControlsNotifyEvent ctrls;
XkbIndicatorNotifyEvent indicators;
XkbNamesNotifyEvent names;
XkbCompatMapNotifyEvent compat;
XkbBellNotifyEvent bell;
XkbActionMessageEvent message;
XkbAccessXNotifyEvent accessx;
XkbExtensionDeviceNotifyEvent device;
XEvent core;
} XkbEvent;
typedef struct _XkbKbdDpyState XkbKbdDpyStateRec,*XkbKbdDpyStatePtr;
#define XkbOD_Success 0
#define XkbOD_BadLibraryVersion 1
#define XkbOD_ConnectionRefused 2
#define XkbOD_NonXkbServer 3
#define XkbOD_BadServerVersion 4
#define XkbLC_ForceLatin1Lookup (1<<0)
#define XkbLC_ConsumeLookupMods (1<<1)
#define XkbLC_AlwaysConsumeShiftAndLock (1<<2)
#define XkbLC_IgnoreNewKeyboards (1<<3)
#define XkbLC_ControlFallback (1<<4)
#define XkbLC_ConsumeKeysOnComposeFail (1<<29)
#define XkbLC_ComposeLED (1<<30)
#define XkbLC_BeepOnComposeFail (1<<31)
#define XkbLC_AllComposeControls (0xc0000000)
#define XkbLC_AllControls (0xc000001f)
_XFUNCPROTOBEGIN
extern Bool XkbIgnoreExtension(
Bool
);
extern Display *XkbOpenDisplay(
char * ,
int * ,
int * ,
int * ,
int * ,
int *
);
extern Bool XkbQueryExtension(
Display * ,
int * ,
int * ,
int * ,
int * ,
int *
);
extern Bool XkbUseExtension(
Display * ,
int * ,
int *
);
extern Bool XkbLibraryVersion(
int * ,
int *
);
extern unsigned int XkbSetXlibControls(
Display* ,
unsigned int ,
unsigned int
);
extern unsigned int XkbGetXlibControls(
Display*
);
extern unsigned int XkbXlibControlsImplemented(void);
typedef Atom (*XkbInternAtomFunc)(
Display * ,
_Xconst char * ,
Bool
);
typedef char * (*XkbGetAtomNameFunc)(
Display * ,
Atom
);
extern void XkbSetAtomFuncs(
XkbInternAtomFunc ,
XkbGetAtomNameFunc
);
extern KeySym XkbKeycodeToKeysym(
Display * ,
#if NeedWidePrototypes
unsigned int ,
#else
KeyCode ,
#endif
int ,
int
);
extern unsigned int XkbKeysymToModifiers(
Display * ,
KeySym
);
extern Bool XkbLookupKeySym(
Display * ,
KeyCode ,
unsigned int ,
unsigned int * ,
KeySym *
);
extern int XkbLookupKeyBinding(
Display * ,
KeySym ,
unsigned int ,
char * ,
int ,
int *
);
extern Bool XkbTranslateKeyCode(
XkbDescPtr ,
KeyCode ,
unsigned int ,
unsigned int * ,
KeySym *
);
extern int XkbTranslateKeySym(
Display * ,
register KeySym * ,
unsigned int ,
char * ,
int ,
int *
);
extern Bool XkbSetAutoRepeatRate(
Display * ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbGetAutoRepeatRate(
Display * ,
unsigned int ,
unsigned int * ,
unsigned int *
);
extern Bool XkbChangeEnabledControls(
Display * ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbDeviceBell(
Display * ,
Window ,
int ,
int ,
int ,
int ,
Atom
);
extern Bool XkbForceDeviceBell(
Display * ,
int ,
int ,
int ,
int
);
extern Bool XkbDeviceBellEvent(
Display * ,
Window ,
int ,
int ,
int ,
int ,
Atom
);
extern Bool XkbBell(
Display * ,
Window ,
int ,
Atom
);
extern Bool XkbForceBell(
Display * ,
int
);
extern Bool XkbBellEvent(
Display * ,
Window ,
int ,
Atom
);
extern Bool XkbSelectEvents(
Display * ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbSelectEventDetails(
Display * ,
unsigned int ,
unsigned int ,
unsigned long ,
unsigned long
);
extern void XkbNoteMapChanges(
XkbMapChangesPtr ,
XkbMapNotifyEvent * ,
unsigned int
);
extern void XkbNoteNameChanges(
XkbNameChangesPtr ,
XkbNamesNotifyEvent * ,
unsigned int
);
extern Status XkbGetIndicatorState(
Display * ,
unsigned int ,
unsigned int *
);
extern Status XkbGetDeviceIndicatorState(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int *
);
extern Status XkbGetIndicatorMap(
Display * ,
unsigned long ,
XkbDescPtr
);
extern Bool XkbSetIndicatorMap(
Display * ,
unsigned long ,
XkbDescPtr
);
#define XkbNoteIndicatorMapChanges(o,n,w) \
((o)->map_changes|=((n)->map_changes&(w)))
#define XkbNoteIndicatorStateChanges(o,n,w)\
((o)->state_changes|=((n)->state_changes&(w)))
#define XkbGetIndicatorMapChanges(d,x,c) \
(XkbGetIndicatorMap((d),(c)->map_changes,x)
#define XkbChangeIndicatorMaps(d,x,c) \
(XkbSetIndicatorMap((d),(c)->map_changes,x))
extern Bool XkbGetNamedIndicator(
Display * ,
Atom ,
int * ,
Bool * ,
XkbIndicatorMapPtr ,
Bool *
);
extern Bool XkbGetNamedDeviceIndicator(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
Atom ,
int * ,
Bool * ,
XkbIndicatorMapPtr ,
Bool *
);
extern Bool XkbSetNamedIndicator(
Display * ,
Atom ,
Bool ,
Bool ,
Bool ,
XkbIndicatorMapPtr
);
extern Bool XkbSetNamedDeviceIndicator(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
Atom ,
Bool ,
Bool ,
Bool ,
XkbIndicatorMapPtr
);
extern Bool XkbLockModifiers(
Display * ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbLatchModifiers(
Display * ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbLockGroup(
Display * ,
unsigned int ,
unsigned int
);
extern Bool XkbLatchGroup(
Display * ,
unsigned int ,
unsigned int
);
extern Bool XkbSetServerInternalMods(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbSetIgnoreLockMods(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbVirtualModsToReal(
XkbDescPtr ,
unsigned int ,
unsigned int *
);
extern Bool XkbComputeEffectiveMap(
XkbDescPtr ,
XkbKeyTypePtr ,
unsigned char *
);
extern Status XkbInitCanonicalKeyTypes(
XkbDescPtr ,
unsigned int ,
int
);
extern XkbDescPtr XkbAllocKeyboard(
void
);
extern void XkbFreeKeyboard(
XkbDescPtr ,
unsigned int ,
Bool
);
extern Status XkbAllocClientMap(
XkbDescPtr ,
unsigned int ,
unsigned int
);
extern Status XkbAllocServerMap(
XkbDescPtr ,
unsigned int ,
unsigned int
);
extern void XkbFreeClientMap(
XkbDescPtr ,
unsigned int ,
Bool
);
extern void XkbFreeServerMap(
XkbDescPtr ,
unsigned int ,
Bool
);
extern XkbKeyTypePtr XkbAddKeyType(
XkbDescPtr ,
Atom ,
int ,
Bool ,
int
);
extern Status XkbAllocIndicatorMaps(
XkbDescPtr
);
extern void XkbFreeIndicatorMaps(
XkbDescPtr
);
extern XkbDescPtr XkbGetMap(
Display * ,
unsigned int ,
unsigned int
);
extern Status XkbGetUpdatedMap(
Display * ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetMapChanges(
Display * ,
XkbDescPtr ,
XkbMapChangesPtr
);
extern Status XkbRefreshKeyboardMapping(
XkbMapNotifyEvent *
);
extern Status XkbGetKeyTypes(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeySyms(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeyActions(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeyBehaviors(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetVirtualMods(
Display * ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeyExplicitComponents(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeyModifierMap(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbGetKeyVirtualModMap(
Display * ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Status XkbAllocControls(
XkbDescPtr ,
unsigned int
);
extern void XkbFreeControls(
XkbDescPtr ,
unsigned int ,
Bool
);
extern Status XkbGetControls(
Display * ,
unsigned long ,
XkbDescPtr
);
extern Bool XkbSetControls(
Display * ,
unsigned long ,
XkbDescPtr
);
extern void XkbNoteControlsChanges(
XkbControlsChangesPtr ,
XkbControlsNotifyEvent * ,
unsigned int
);
#define XkbGetControlsChanges(d,x,c) XkbGetControls(d,(c)->changed_ctrls,x)
#define XkbChangeControls(d,x,c) XkbSetControls(d,(c)->changed_ctrls,x)
extern Status XkbAllocCompatMap(
XkbDescPtr ,
unsigned int ,
unsigned int
);
extern void XkbFreeCompatMap(
XkbDescPtr ,
unsigned int ,
Bool
);
extern Status XkbGetCompatMap(
Display * ,
unsigned int ,
XkbDescPtr
);
extern Bool XkbSetCompatMap(
Display * ,
unsigned int ,
XkbDescPtr ,
Bool
);
extern XkbSymInterpretPtr XkbAddSymInterpret(
XkbDescPtr ,
XkbSymInterpretPtr ,
Bool ,
XkbChangesPtr
);
extern Status XkbAllocNames(
XkbDescPtr ,
unsigned int ,
int ,
int
);
extern Status XkbGetNames(
Display * ,
unsigned int ,
XkbDescPtr
);
extern Bool XkbSetNames(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
XkbDescPtr
);
extern Bool XkbChangeNames(
Display * ,
XkbDescPtr ,
XkbNameChangesPtr
);
extern void XkbFreeNames(
XkbDescPtr ,
unsigned int ,
Bool
);
extern Status XkbGetState(
Display * ,
unsigned int ,
XkbStatePtr
);
extern Bool XkbSetMap(
Display * ,
unsigned int ,
XkbDescPtr
);
extern Bool XkbChangeMap(
Display* ,
XkbDescPtr ,
XkbMapChangesPtr
);
extern Bool XkbSetDetectableAutoRepeat(
Display * ,
Bool ,
Bool *
);
extern Bool XkbGetDetectableAutoRepeat(
Display * ,
Bool *
);
extern Bool XkbSetAutoResetControls(
Display * ,
unsigned int ,
unsigned int * ,
unsigned int *
);
extern Bool XkbGetAutoResetControls(
Display * ,
unsigned int * ,
unsigned int *
);
extern Bool XkbSetPerClientControls(
Display * ,
unsigned int ,
unsigned int *
);
extern Bool XkbGetPerClientControls(
Display * ,
unsigned int *
);
extern Status XkbCopyKeyType(
XkbKeyTypePtr ,
XkbKeyTypePtr
);
extern Status XkbCopyKeyTypes(
XkbKeyTypePtr ,
XkbKeyTypePtr ,
int
);
extern Status XkbResizeKeyType(
XkbDescPtr ,
int ,
int ,
Bool ,
int
);
extern KeySym *XkbResizeKeySyms(
XkbDescPtr ,
int ,
int
);
extern XkbAction *XkbResizeKeyActions(
XkbDescPtr ,
int ,
int
);
extern Status XkbChangeTypesOfKey(
XkbDescPtr ,
int ,
int ,
unsigned int ,
int * ,
XkbMapChangesPtr
);
extern Status XkbChangeKeycodeRange(
XkbDescPtr ,
int ,
int ,
XkbChangesPtr
);
extern XkbComponentListPtr XkbListComponents(
Display * ,
unsigned int ,
XkbComponentNamesPtr ,
int *
);
extern void XkbFreeComponentList(
XkbComponentListPtr
);
extern XkbDescPtr XkbGetKeyboard(
Display * ,
unsigned int ,
unsigned int
);
extern XkbDescPtr XkbGetKeyboardByName(
Display * ,
unsigned int ,
XkbComponentNamesPtr ,
unsigned int ,
unsigned int ,
Bool
);
extern int XkbKeyTypesForCoreSymbols(
XkbDescPtr ,
int ,
KeySym * ,
unsigned int ,
int * ,
KeySym *
);
extern Bool XkbApplyCompatMapToKey(
XkbDescPtr ,
KeyCode ,
XkbChangesPtr
);
extern Bool XkbUpdateMapFromCore(
XkbDescPtr ,
KeyCode ,
int ,
int ,
KeySym * ,
XkbChangesPtr
);
extern XkbDeviceLedInfoPtr XkbAddDeviceLedInfo(
XkbDeviceInfoPtr ,
unsigned int ,
unsigned int
);
extern Status XkbResizeDeviceButtonActions(
XkbDeviceInfoPtr ,
unsigned int
);
extern XkbDeviceInfoPtr XkbAllocDeviceInfo(
unsigned int ,
unsigned int ,
unsigned int
);
extern void XkbFreeDeviceInfo(
XkbDeviceInfoPtr ,
unsigned int ,
Bool
);
extern void XkbNoteDeviceChanges(
XkbDeviceChangesPtr ,
XkbExtensionDeviceNotifyEvent * ,
unsigned int
);
extern XkbDeviceInfoPtr XkbGetDeviceInfo(
Display * ,
unsigned int ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Status XkbGetDeviceInfoChanges(
Display * ,
XkbDeviceInfoPtr ,
XkbDeviceChangesPtr
);
extern Status XkbGetDeviceButtonActions(
Display * ,
XkbDeviceInfoPtr ,
Bool ,
unsigned int ,
unsigned int
);
extern Status XkbGetDeviceLedInfo(
Display * ,
XkbDeviceInfoPtr ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbSetDeviceInfo(
Display * ,
unsigned int ,
XkbDeviceInfoPtr
);
extern Bool XkbChangeDeviceInfo(
Display* ,
XkbDeviceInfoPtr ,
XkbDeviceChangesPtr
);
extern Bool XkbSetDeviceLedInfo(
Display * ,
XkbDeviceInfoPtr ,
unsigned int ,
unsigned int ,
unsigned int
);
extern Bool XkbSetDeviceButtonActions(
Display * ,
XkbDeviceInfoPtr ,
unsigned int ,
unsigned int
);
extern char XkbToControl(
char
);
extern Bool XkbSetDebuggingFlags(
Display * ,
unsigned int ,
unsigned int ,
char * ,
unsigned int ,
unsigned int ,
unsigned int * ,
unsigned int *
);
extern Bool XkbApplyVirtualModChanges(
XkbDescPtr ,
unsigned int ,
XkbChangesPtr
);
extern Bool XkbUpdateActionVirtualMods(
XkbDescPtr ,
XkbAction * ,
unsigned int
);
extern void XkbUpdateKeyTypeVirtualMods(
XkbDescPtr ,
XkbKeyTypePtr ,
unsigned int ,
XkbChangesPtr
);
_XFUNCPROTOEND
#endif