00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <core/core.h>
00030
00035 class ModifierHandler
00036 {
00037 public:
00038
00039 ModifierHandler ();
00040 ~ModifierHandler ();
00041
00042 typedef enum
00043 {
00044 Alt = 1,
00045 Meta,
00046 Super,
00047 Hyper,
00048 ModeSwitch,
00049 NumLock,
00050 ScrollLock,
00051 ModNum
00052 } Modifier;
00053
00054 typedef enum
00055 {
00056 AltMask = (1 << 16),
00057 MetaMask = (1 << 17),
00058 SuperMask = (1 << 18),
00059 HyperMask = (1 << 19),
00060 ModeSwitchMask = (1 << 20),
00061 NumLockMask = (1 << 21),
00062 ScrollLockMask = (1 << 22),
00063 NoMask = (1 << 25),
00064 } ModMask;
00065
00066 public:
00067
00068
00073 unsigned int keycodeToModifiers (int keycode);
00074
00078 void updateModifierMappings ();
00079
00084 unsigned int virtualToRealModMask (unsigned int modMask);
00085
00089 unsigned int modMask (Modifier);
00090
00094 unsigned int ignoredModMask ();
00095
00099 const XModifierKeymap * modMap ();
00100
00101 friend class CompScreen;
00102
00103 private:
00104
00105 static const unsigned int virtualModMask[7];
00106
00107 static const int maskTable[8];
00108
00109 static const int maskTableSize = 8;
00110
00111 ModMask mModMask[ModNum];
00112 unsigned int mIgnoredModMask;
00113 XModifierKeymap *mModMap;
00114 };