aboutsummaryrefslogtreecommitdiff
path: root/console-client/xkb/xkb.h
diff options
context:
space:
mode:
Diffstat (limited to 'console-client/xkb/xkb.h')
-rw-r--r--console-client/xkb/xkb.h405
1 files changed, 9 insertions, 396 deletions
diff --git a/console-client/xkb/xkb.h b/console-client/xkb/xkb.h
index bfc93a53..4150e4a1 100644
--- a/console-client/xkb/xkb.h
+++ b/console-client/xkb/xkb.h
@@ -16,416 +16,29 @@
#include <errno.h>
#include <argp.h>
-#include <X11/Xlib.h>
+#include <xkbcommon/xkbcommon.h>
+
+extern struct xkb_context *ctx;
typedef int keycode_t;
typedef unsigned int scancode_t;
-typedef int symbol;
-typedef int group_t;
-typedef unsigned int boolctrls;
-
-#define KEYCONSUMED 1
-#define KEYNOTCONSUMED 0
-
-#define RedirectIntoRange 1
-#define ClampIntoRange 2
-#define WrapIntoRange 0
-
-typedef enum mergemode
- {
- augment,
- override,
- replace,
- alternate,
- defaultmm
- } mergemode;
-
-extern mergemode merge_mode;
-
-typedef unsigned long KeySym;
-
-/* Real modifiers. */
-#define RMOD_SHIFT 1 << 0
-#define RMOD_LOCK 1 << 1
-#define RMOD_CTRL 1 << 2
-#define RMOD_MOD1 1 << 3
-#define RMOD_MOD2 1 << 4
-#define RMOD_MOD3 1 << 5
-#define RMOD_MOD4 1 << 6
-#define RMOD_MOD5 1 << 7
-
-/* If set the key has action(s). */
-#define KEYHASACTION (1<<4)
-/* Normally the keytype will be calculated, but some keys like SYSRQ
- can't be calculated. For these keys the name for the keytypes will
- be given for every group fro whch the bit is set. */
-#define KEYHASTYPES 0xf
-#define KEYHASBEHAVIOUR (1<<5)
-/* Will the key be repeated when held down, or not. */
-#define KEYREPEAT (1<<6)
-#define KEYNOREPEAT (1<<7)
-
-/* The complete set of modifiers. */
-typedef struct modmap
-{
- /* Real modifiers. */
- int rmods;
- /* Virtual modifiers. */
- int vmods;
-} modmap_t;
-
-/* Modifier counter. */
-typedef struct modcount
-{
- int rmods[8];
- int vmods[16];
-} modcount_t;
-
-/* Map modifiers to a shift level. */
-typedef struct typemap
-{
- /* Shift level used when required modifiers match the active modifiers. */
- int level;
- modmap_t mods;
- modmap_t preserve;
- struct typemap *next;
-} typemap_t;
-
-/* The keypad symbol range. */
-#define KEYPAD_FIRST_KEY 0xFF80
-#define KEYPAD_LAST_KEY 0xFFB9
-#define KEYPAD_MASK 0xFF80
-
-/* Convert a keypad symbol to a ASCII symbol. */
-#define keypad_to_ascii(c) c = (c & (~KEYPAD_MASK))
-
-/* The default keytypes. These can be calculated. */
-#define KT_ONE_LEVEL 0
-#define KT_TWO_LEVEL 1
-#define KT_ALPHA 2
-#define KT_KEYPAD 3
-
-typedef struct keytype
-{
- /* Mask that determines which modifiers should be checked. */
- modmap_t modmask;
- /* Amount of levels. */
- int levels;
- /* The required set of modifiers for one specific level. */
- struct typemap *maps;
-
- char *name;
- struct keytype *hnext;
- struct keytype **prevp;
-} keytype_t;
-
-extern struct keytype *keytypes;
-extern int keytype_count;
-
-/* All Actions as described in the protocol specification. */
-typedef enum actiontype
- {
- SA_NoAction,
- SA_SetMods,
- SA_LatchMods,
- SA_LockMods,
- SA_SetGroup,
- SA_LatchGroup,
- SA_LockGroup,
- SA_MovePtr,
- SA_PtrBtn,
- SA_LockPtrBtn,
- SA_SetPtrDflt,
- SA_ISOLock,
- SA_TerminateServer,
- SA_SwitchScreen,
- SA_SetControls,
- SA_LockControls,
- SA_ActionMessage,
- SA_RedirectKey,
- SA_DeviceBtn,
- SA_LockDeviceBtn,
- SA_DeviceValuator,
- SA_ConsScroll
- } actiontype_t;
-
-typedef struct xkb_action
-{
- actiontype_t type;
- int data[15];
-} xkb_action_t;
-
-#define useModMap 4
-#define clearLocks 1
-#define latchToLock 2
-#define noLock 1
-#define noUnlock 2
-#define groupAbsolute 4
-#define NoAcceleration 1
-#define MoveAbsoluteX 2
-#define MoveAbsoluteY 4
-/* XXX: This flag is documentated and I've implemented it. Weird
- stuff. */
-#define useDfltBtn 0
-#define DfltBtnAbsolute 2
-#define AffectDfltBtn 1
-#define switchApp 1
-#define screenAbs 4
-#define lineAbs 2
-#define usePercentage 8
-
-/* Defines how symbols and rmods are interpreted. This is used to
- bound an action to a key that doesn't have an action bound to it,
- only a modifier or action describing symbol. */
-typedef struct xkb_interpret
-{
- symbol symbol;
- int rmods;
- int match;
- int vmod; /* XXX: Why does this field have a size of only 8 bits? */
- int flags;
- struct xkb_action action;
- struct xkb_interpret *next;
-} xkb_interpret_t;
-
-extern xkb_interpret_t *interpretations;
-extern int interpret_count;
-
-/* These are the parameter names that are used by the actions that
- control modifiers. (this is stored in the data field of
- xkb_action)*/
-typedef struct action_setmods
-{
- actiontype_t type;
- /* The flags configure the behaviour of the action. */
- int flags;
- /* XXX: The real modifiers that can be controlled by this action. */
- int modmask;
- /* The modifiers that are will be set/unset by this action. */
- modmap_t modmap;
-} action_setmods_t;
-
-typedef struct action_setgroup
-{
- actiontype_t type;
- int flags;
- int group;
-} action_setgroup_t;
-
-typedef struct action_moveptr
-{
- actiontype_t type;
- int flags;
- int x;
- int y;
-} action_moveptr_t;
-
-typedef struct action_ptrbtn
-{
- actiontype_t type;
- int flags;
- int count; /* Isn't used for LockPtrBtn. */
- int button;
-} action_ptrbtn_t;
-
-typedef struct action_ptr_dflt
-{
- actiontype_t type;
- int flags;
- int affect;
- int value;
-} action_ptr_dflt_t;
-
-typedef struct action_switchscrn
-{
- actiontype_t type;
- int flags;
- int screen;
-} action_switchscrn_t;
-
-typedef struct action_consscroll
-{
- actiontype_t type;
- int flags;
- double screen;
- int line;
- int percent;
-} action_consscroll_t;
-
-typedef struct action_redirkey
-{
- actiontype_t type;
- int newkey;
- int rmodsmask;
- int rmods;
- int vmodsmask;
- int vmods;
-} action_redirkey_t;
-
-typedef struct action_setcontrols
-{
- actiontype_t type;
- int controls;
-} action_setcontrols_t;
-
-/* Every key can have 4 groups, this is the information stored per
- group. */
-struct keygroup
-{
- /* All symbols for every available shift level and group. */
- symbol *symbols;
- /* All actions for every available shift level and group. */
- struct xkb_action **actions;
- /* The keytype of this key. The keytype determines the available
- shift levels and which modiers are used to set the shift level.
- */
- struct keytype *keytype;
- /* Amount of symbols held in this group of this key. */
- int width;
- int actionwidth;
-};
-
-/* A single key scancode stored in memory. */
-typedef struct key
-{
- /* The flags that can be set for this key (To change the behaviour
- of this key). */
- int flags;
- /* Every key has a maximum of 4 groups. (XXX: According to Ivan
- Pascal's documentation... I'm not really sure if that is true.) */
- struct keygroup groups[4];
- int numgroups;
- struct modmap mods;
-} keyinf_t;
-
-extern struct key *keys;
-extern int min_keys;
-extern int max_keys;
-
-/* The current state of every key. */
-typedef struct keystate
-{
- /* Key is pressed. */
- unsigned short keypressed:1;
- unsigned short prevstate:1;
- /* The key was disabled for bouncekeys. */
- unsigned short disabled:1;
- /* Information about locked modifiers at the time of the keypress,
- this information is required for unlocking when the key is released. */
- modmap_t lmods;
- /* The modifiers and group that were active at keypress, make them
- active again on keyrelease so the action will be undone. */
- modmap_t prevmods;
- boolctrls bool;
- group_t prevgroup;
- group_t oldgroup;
-} keystate_t;
-
-extern struct keystate keystate[255];
typedef struct keypress
{
keycode_t keycode;
- keycode_t prevkc;
- unsigned short repeat:1; /* It this a real keypress?. */
- unsigned short redir:1; /* This is not a real keypress. */
unsigned short rel; /* Key release. */
} keypress_t;
-/* Flags for indicators. */
-#define IM_NoExplicit 0x80
-#define IM_NoAutomatic 0x40
-#define IM_LEDDrivesKB 0x20
-
-#define IM_UseCompat 0x10
-#define IM_UseEffective 0x08
-#define IM_UseLocked 0x04
-#define IM_UseLatched 0x02
-#define IM_UseBase 0x01
-
-
-typedef struct xkb_indicator
-{
- int flags;
- int which_mods;
- modmap_t modmap;
- int which_groups;
- int groups;
- unsigned int ctrls;
-} xkb_indicator_t;
-
-unsigned int KeySymToUcs4(int keysym);
-symbol compose_symbols (symbol symbol);
-error_t read_composefile (char *);
-struct keytype *keytype_find (char *name);
-
-void key_set_action (struct key *key, group_t group, int level,
- xkb_action_t *action);
-
-
-/* Interfaces for xkbdata.c: */
-extern struct xkb_interpret default_interpretation;
-
-
-/* Assign the name KEYNAME to the keycode KEYCODE. */
-error_t keyname_add (char *keyname, int keycode);
-
-/* Find the numberic representation of the keycode with the name
- KEYNAME. */
-int keyname_find (char *keyname);
-
-/* Search the keytype with the name NAME. */
-struct keytype *keytype_find (char *name);
-
-/* Remove the keytype KT. */
-void keytype_delete (struct keytype *kt);
-
-/* Create a new keytype with the name NAME. */
-error_t keytype_new (char *name, struct keytype **new_kt);
-
-/* Add a level (LEVEL) to modifiers (MODS) mapping to the current
- keytype. */
-error_t keytype_mapadd (struct keytype *kt, modmap_t mods, int level);
-
-/* For the current keytype the modifiers PRESERVE should be preserved
- when the modifiers MODS are pressed. */
-error_t keytype_preserve_add (struct keytype *kt, modmap_t mods,
- modmap_t preserve);
-
-/* Add a new interpretation. */
-error_t interpret_new (xkb_interpret_t **new_interpret, symbol ks);
-
-/* Get the number assigned to the virtualmodifier with the name
- VMODNAME. */
-int vmod_find (char *vmodname);
-
-/* Give the virtualmodifier VMODNAME a number and add it to the
- hashtable. */
-error_t vmod_add (char *vmodname);
-
-/* Initialize the list for keysyms to realmodifiers mappings. */
-void ksrm_init (void);
-
-/* Add keysym to realmodifier mapping. */
-error_t ksrm_add (symbol ks, int rmod);
-
-/* Apply the rkms (realmods to keysyms) table to all keysyms. */
-void ksrm_apply (void);
-
-/* Set the current rmod for the key with keyname KEYNAME. */
-/* XXX: It shouldn't be applied immediately because the key can be
- replaced. */
-void set_rmod_keycode (char *keyname, int rmod);
/* Initialize XKB data structures. */
-error_t xkb_data_init (void);
+error_t xkb_context_init (const char *rules, const char *model, const char *layout, const char *variant, const char* options, const char *composefile);
+void xkb_context_cleanup (void);
-error_t xkb_input_key (int key);
+void process_input (keypress_t key);
+void process_keypress_event (keycode_t keycode);
+void xkb_timer_notify_input (keypress_t key);
+int get_min_keycode (void);
error_t xkb_init_repeat (int delay, int repeat);
-void xkb_input (keypress_t key);
-
int debug_printf (const char *f, ...);
-
-error_t xkb_load_layout (char *xkbdir, char *xkbkeymapfile, char *xkbkeymap);