*
********************************************************/
-#ifndef ACTION_H
-#define ACTION_H 1
+#ifndef XKBCOMP_ACTION_H
+#define XKBCOMP_ACTION_H
-#include "xkbcomp-priv.h"
-#include "expr.h"
+/*
+ * This struct contains the default values which every new action
+ * (e.g. in an interpret statement) starts off with. It can be
+ * modified within the files (see calls to SetActionField).
+ */
+typedef struct {
+ union xkb_action actions[_ACTION_TYPE_NUM_ENTRIES];
+} ActionsInfo;
-#define F_ClearLocks 0
-#define F_LatchToLock 1
-#define F_GenKeyEvent 2
-#define F_Report 3
-#define F_Default 4
-#define F_Affect 5
-#define F_Increment 6
-#define F_Modifiers 7
-#define F_Group 8
-#define F_X 9
-#define F_Y 10
-#define F_Accel 11
-#define F_Button 12
-#define F_Value 13
-#define F_Controls 14
-#define F_Type 15
-#define F_Count 16
-#define F_Screen 17
-#define F_Same 18
-#define F_Data 19
-#define F_Device 20
-#define F_Keycode 21
-#define F_ModsToClear 22
-#define F_LastField F_ModsToClear
-#define F_NumFields (F_LastField + 1)
+ActionsInfo *
+NewActionsInfo(void);
-#define PrivateAction (XkbSA_LastAction + 1)
+void
+FreeActionsInfo(ActionsInfo *info);
-typedef struct _ActionInfo {
- unsigned action;
- unsigned field;
- ExprDef *array_ndx;
- ExprDef *value;
- struct _ActionInfo *next;
-} ActionInfo;
+bool
+HandleActionDef(struct xkb_context *ctx, ActionsInfo *info,
+ const struct xkb_mod_set *mods, ExprDef *def,
+ union xkb_action *action);
-extern int
-HandleActionDef(ExprDef *def, struct xkb_keymap *keymap,
- struct xkb_any_action *action,
- ActionInfo *info);
+bool
+SetActionField(struct xkb_context *ctx, ActionsInfo *info,
+ struct xkb_mod_set *mods, const char *elem,
+ const char *field, ExprDef *array_ndx, ExprDef *value);
-extern int
-SetActionField(struct xkb_keymap *keymap, const char *elem, const char *field,
- ExprDef *index, ExprDef *value,
- ActionInfo **info_rtrn);
-extern const LookupEntry ctrlNames[];
-
-#endif /* ACTION_H */
+#endif