summaryrefslogtreecommitdiff
path: root/libxklavier/xklavier_private_xmm.h
blob: 9ac4e1930a858841cb0e6625b15b8af3e0d2c1ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#ifndef __XKLAVIER_PRIVATE_XMM_H__
#define __XKLAVIER_PRIVATE_XMM_H__

typedef struct _XmmShortcut 
{
  int keysym;
  int modifiers;
} XmmShortcut, *XmmShortcutPtr;

#define MAX_SHORTCUTS_PER_OPTION 4
typedef struct _XmmSwitchOption
{
  const char* optionName;
  int numShortcuts;
  XmmShortcut shortcuts[MAX_SHORTCUTS_PER_OPTION];
  int shortcutSteps[MAX_SHORTCUTS_PER_OPTION];
} XmmSwitchOption, *XmmSwitchOptionPtr;

extern char* currentXmmRules;

extern XklConfigRec currentXmmConfig;

extern Atom xmmStateAtom;

/* in the ideal world this should be a hashmap */
extern XmmSwitchOption allSwitchOptions[];

extern void _XklXmmGrabIgnoringIndicators( int keycode, int modifiers );

extern void _XklXmmUngrabIgnoringIndicators( int keycode, int modifiers );

extern void _XklXmmGrabShortcuts( void );

extern void _XklXmmUngrabShortcuts( void );

extern const char* _XklXmmGetCurrentShortcutOptionName( void );

extern const XmmSwitchOptionPtr _XklXmmGetCurrentShortcut( void );

extern void _XklXmmActualizeGroup( int group );

extern const XmmSwitchOptionPtr _XklXmmFindSwitchOption( unsigned keycode, 
                                                         unsigned state,
                                                         int * currentShortcut_rv );

/* Start VTable methods */

extern Bool _XklXmmConfigActivate( const XklConfigRecPtr data );

extern void _XklXmmConfigInit( void );

extern Bool _XklXmmConfigLoadRegistry( void );

extern int _XklXmmEventHandler( XEvent * kev );

extern void _XklXmmFreeAllInfo( void );

extern const char **_XklXmmGetGroupNames( void );

extern unsigned _XklXmmGetMaxNumGroups( void );

extern unsigned _XklXmmGetNumGroups( void );

extern void _XklXmmGetRealState( XklState * curState_return );

extern Bool _XklXmmLoadAllInfo( void );

extern void _XklXmmLockGroup( int group );

extern int _XklXmmPauseListen( void );

extern int _XklXmmResumeListen( void );

/* End of VTable methods */

#endif