/* Action structures used in the server */
#define XkbcAnyActionDataSize 18
-typedef struct _XkbcAnyAction {
+struct xkb_any_action {
unsigned char type;
unsigned char pad[XkbcAnyActionDataSize];
-} XkbcAnyAction;
+};
-typedef struct _XkbcModAction {
+struct xkb_mod_action {
unsigned char type;
uint8_t flags;
uint8_t real_mods;
uint32_t mask;
uint32_t vmods;
-} XkbcModAction;
+};
-typedef struct _XkbcGroupAction {
+struct xkb_group_action {
unsigned char type;
unsigned char flags;
int16_t group;
-} XkbcGroupAction;
+};
-typedef struct _XkbcISOAction {
+struct xkb_iso_action {
unsigned char type;
uint8_t flags;
int16_t group;
uint32_t mask;
uint32_t vmods;
uint8_t real_mods;
- uint8_t affect;
-} XkbcISOAction;
+
+ uint8_t affect;
+};
-typedef struct _XkbcCtrlsAction {
+struct xkb_controls_action {
unsigned char type;
uint8_t flags;
uint32_t ctrls;
-} XkbcCtrlsAction;
+};
-typedef struct _XkbcDeviceBtnAction {
+struct xkb_device_button_action {
unsigned char type;
uint8_t flags;
uint16_t device;
uint16_t button;
uint8_t count;
-} XkbcDeviceBtnAction;
+};
-typedef struct _XkbcDeviceValuatorAction {
+struct xkb_device_valuator_action {
unsigned char type;
uint8_t v1_what;
uint16_t device;
uint16_t v2_index;
int16_t v2_value;
uint8_t v2_what;
-} XkbcDeviceValuatorAction;
+};
-typedef struct _XkbcPtrDfltAction {
+struct xkb_pointer_default_action {
unsigned char type;
uint8_t flags;
uint8_t affect;
uint8_t value;
-} XkbcPtrDfltAction;
+};
-typedef struct _XkbcSwitchScreenAction {
+struct xkb_switch_screen_action {
unsigned char type;
uint8_t flags;
uint8_t screen;
-} XkbcSwitchScreenAction;
-
-typedef union _XkbcAction {
- XkbcAnyAction any;
- XkbcModAction mods;
- XkbcGroupAction group;
- XkbcISOAction iso;
- XkbcCtrlsAction ctrls;
- XkbcDeviceBtnAction devbtn;
- XkbcDeviceValuatorAction devval;
- XkbcPtrDfltAction dflt;
- XkbcSwitchScreenAction screen;
- XkbRedirectKeyAction redirect; /* XXX wholly unnecessary? */
- XkbPtrAction ptr; /* XXX delete for DeviceValuator */
- XkbPtrBtnAction btn; /* XXX delete for DeviceBtn */
- XkbMessageAction msg; /* XXX just delete */
- unsigned char type;
-} XkbcAction;
+};
+
+struct xkb_redirect_key_action {
+ unsigned char type;
+ unsigned char new_key;
+ unsigned char mods_mask;
+ unsigned char mods;
+ unsigned char vmods_mask0;
+ unsigned char vmods_mask1;
+ unsigned char vmods0;
+ unsigned char vmods1;
+};
+
+struct xkb_pointer_action {
+ unsigned char type;
+ unsigned char flags;
+ unsigned char high_XXX;
+ unsigned char low_XXX;
+ unsigned char high_YYY;
+ unsigned char low_YYY;
+};
+
+struct xkb_message_action {
+ unsigned char type;
+ unsigned char flags;
+ unsigned char message[6];
+};
+
+struct xkb_pointer_button_action {
+ unsigned char type;
+ unsigned char flags;
+ unsigned char count;
+ unsigned char button;
+};
+
+union xkb_action {
+ struct xkb_any_action any;
+ struct xkb_mod_action mods;
+ struct xkb_group_action group;
+ struct xkb_iso_action iso;
+ struct xkb_controls_action ctrls;
+ struct xkb_device_button_action devbtn;
+ struct xkb_device_valuator_action devval;
+ struct xkb_pointer_default_action dflt;
+ struct xkb_switch_screen_action screen;
+ struct xkb_redirect_key_action redirect; /* XXX wholly unnecessary? */
+ struct xkb_pointer_action ptr; /* XXX delete for DeviceValuator */
+ struct xkb_pointer_button_action btn; /* XXX delete for DeviceBtn */
+ struct xkb_message_action msg; /* XXX just delete */
+ unsigned char type;
+};
typedef struct _XkbcMods {
uint32_t mask; /* effective mods */
unsigned char match;
uint8_t mods; /* XXX real or virt? */
uint32_t virtual_mod;
- XkbcAnyAction act;
+ struct xkb_any_action act;
} XkbcSymInterpretRec, *XkbcSymInterpretPtr;
typedef struct _XkbcCompatMapRec {
unsigned char * explicit;
#endif
- XkbcAction *acts;
+ union xkb_action *acts;
XkbBehavior *behaviors;
unsigned short *key_acts;
unsigned char *explicits;