00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SAX_KEYBOARD_H
00022 #define SAX_KEYBOARD_H 1
00023
00024
00025
00026
00027 #include "import.h"
00028
00029 #include <X11/Xlib.h>
00030 #include <X11/XKBlib.h>
00031 #include <X11/extensions/XKBrules.h>
00032 #include <X11/extensions/XKBgeom.h>
00033 #include <X11/extensions/XKM.h>
00034 #include <X11/extensions/XKBfile.h>
00035
00036 namespace SaX {
00037
00038
00039
00040 #define SAX_DEFAULT_RULE "xorg"
00041 #define XKB_LEFT_ALT "LeftAlt"
00042 #define XKB_RIGHT_ALT "RightAlt"
00043 #define XKB_SCROLL_LOCK "ScrollLock"
00044 #define XKB_RIGHT_CTL "RightCtl"
00045
00046 #define XKB_MAP_META "Meta"
00047 #define XKB_MAP_COMPOSE "Compose"
00048 #define XKB_MAP_MODESHIFT "ModeShift"
00049 #define XKB_MAP_MODELOCK "ModeLock"
00050 #define XKB_MAP_SCROLLLOCK "ScrollLock"
00051 #define XKB_MAP_CONTROL "Control"
00052
00053 #define SAX_CORE_KBD 0
00054 #define SAX_NEXT_KBD(x) ((x)+2)
00055
00056
00057
00058
00066 class SaXKeyRulesIF : public SaXException {
00067 public:
00068 virtual QDict<QString> getModels ( void ) = 0;
00069 virtual QDict<QString> getLayouts ( void ) = 0;
00070 virtual QDict<QString> getOptions ( void ) = 0;
00071 virtual QList<QString> getVariants ( const QString& ) = 0;
00072
00073 public:
00074 virtual ~SaXKeyRulesIF ( void ) { }
00075 };
00076
00077
00078
00085 class SaXKeyRules : public SaXKeyRulesIF {
00086 protected:
00087 void loadRules ( QString );
00088
00089 private:
00090 QDict<QString> mModels;
00091 QDict<QString> mLayouts;
00092 QDict<QString> mOptions;
00093 QDict<QStringList> mVarLists;
00094 QString mX11Dir;
00095
00096 public:
00097 QDict<QString> getModels ( void );
00098 QDict<QString> getLayouts ( void );
00099 QDict<QString> getOptions ( void );
00100 QList<QString> getVariants ( const QString& );
00101
00102 public:
00103 SaXKeyRules ( QString rule=SAX_DEFAULT_RULE );
00104 };
00105
00106
00107
00108
00116 class SaXManipulateKeyboardIF : public SaXKeyRules {
00117 public:
00118 virtual void setXKBModel ( const QString& ) = 0;
00119
00120 public:
00121 virtual void setXKBLayout ( const QString& ) = 0;
00122 virtual void addXKBLayout ( const QString& ) = 0;
00123 virtual void removeXKBLayout ( const QString& ) = 0;
00124
00125 public:
00126 virtual void setXKBOption ( const QString& ) = 0;
00127 virtual void addXKBOption ( const QString& ) = 0;
00128 virtual void removeXKBOption ( const QString& ) = 0;
00129
00130 public:
00131 virtual void setXKBVariant ( const QString& , const QString& ) = 0;
00132 virtual void removeXKBVariant ( const QString& ) = 0;
00133
00134 public:
00135 virtual void setMapping ( const QString& , const QString& ) = 0;
00136
00137 public:
00138 virtual QString getXKBVariant ( const QString& ) = 0;
00139 virtual QString getXKBModel ( void ) = 0;
00140
00141 public:
00142 virtual QList<QString> getXKBOptionList ( void ) = 0;
00143 virtual QList<QString> getXKBLayout ( void ) = 0;
00144 virtual QList<QString> getXKBVariantList ( void ) = 0;
00145 virtual QString getDriver ( void ) = 0;
00146
00147 public:
00148 virtual bool selectKeyboard ( int ) = 0;
00149
00150 public:
00151 virtual ~SaXManipulateKeyboardIF ( void ) { }
00152
00153 protected:
00154 SaXManipulateKeyboardIF ( void ) : SaXKeyRules() { }
00155 };
00156
00157
00158
00201 class SaXManipulateKeyboard : public SaXManipulateKeyboardIF {
00202 private:
00203 SaXImport* mImport;
00204 int mKeyboard;
00205
00206 private:
00207 int findLayout ( const QString& );
00208 QList<QString> createList ( const QString& );
00209
00210 public:
00211 virtual void setXKBModel ( const QString& );
00212
00213 public:
00214 void setXKBLayout ( const QString& );
00215 void addXKBLayout ( const QString& );
00216 void removeXKBLayout ( const QString& );
00217
00218 public:
00219 void setXKBOption ( const QString& );
00220 void addXKBOption ( const QString& );
00221 void removeXKBOption ( const QString& );
00222
00223 public:
00224 void setXKBVariant ( const QString& , const QString& );
00225 void removeXKBVariant ( const QString& );
00226
00227 public:
00228 void setMapping ( const QString& , const QString& );
00229
00230 public:
00231 QString getXKBVariant ( const QString& );
00232 QString getXKBModel ( void );
00233
00234 public:
00235 QList<QString> getXKBOptionList ( void );
00236 QList<QString> getXKBLayout ( void );
00237 QList<QString> getXKBVariantList ( void );
00238 QString getDriver ( void );
00239
00240 public:
00241 bool selectKeyboard ( int );
00242
00243 public:
00244 SaXManipulateKeyboard ( SaXImport*, int = 0 );
00245 };
00246 }
00247 #endif