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 #include <X11/extensions/XKBui.h>
00036
00037 namespace SaX {
00038
00039
00040
00041 #define SAX_DEFAULT_RULE "xfree86"
00042 #define XKB_LEFT_ALT "LeftAlt"
00043 #define XKB_RIGHT_ALT "RightAlt"
00044 #define XKB_SCROLL_LOCK "ScrollLock"
00045 #define XKB_RIGHT_CTL "RightCtl"
00046
00047 #define XKB_MAP_META "Meta"
00048 #define XKB_MAP_COMPOSE "Compose"
00049 #define XKB_MAP_MODESHIFT "ModeShift"
00050 #define XKB_MAP_MODELOCK "ModeLock"
00051 #define XKB_MAP_SCROLLLOCK "ScrollLock"
00052 #define XKB_MAP_CONTROL "Control"
00053
00054 #define SAX_CORE_KBD 0
00055 #define SAX_NEXT_KBD(x) ((x)+2)
00056
00057
00058
00059
00067 class SaXKeyRulesIF : public SaXException {
00068 public:
00069 virtual QDict<QString> getModels ( void ) = 0;
00070 virtual QDict<QString> getLayouts ( void ) = 0;
00071 virtual QDict<QString> getOptions ( void ) = 0;
00072 virtual QList<QString> getVariants ( const QString& ) = 0;
00073
00074 public:
00075 virtual ~SaXKeyRulesIF ( void ) { }
00076 };
00077
00078
00079
00086 class SaXKeyRules : public SaXKeyRulesIF {
00087 protected:
00088 void loadRules ( QString );
00089
00090 private:
00091 QDict<QString> mModels;
00092 QDict<QString> mLayouts;
00093 QDict<QString> mOptions;
00094 QDict<QStringList> mVarLists;
00095 QString mX11Dir;
00096
00097 public:
00098 QDict<QString> getModels ( void );
00099 QDict<QString> getLayouts ( void );
00100 QDict<QString> getOptions ( void );
00101 QList<QString> getVariants ( const QString& );
00102
00103 public:
00104 SaXKeyRules ( QString rule=SAX_DEFAULT_RULE );
00105 };
00106
00107
00108
00109
00117 class SaXManipulateKeyboardIF : public SaXKeyRules {
00118 public:
00119 virtual void setXKBModel ( const QString& ) = 0;
00120
00121 public:
00122 virtual void setXKBLayout ( const QString& ) = 0;
00123 virtual void addXKBLayout ( const QString& ) = 0;
00124 virtual void removeXKBLayout ( const QString& ) = 0;
00125
00126 public:
00127 virtual void setXKBOption ( const QString& ) = 0;
00128 virtual void addXKBOption ( const QString& ) = 0;
00129 virtual void removeXKBOption ( const QString& ) = 0;
00130
00131 public:
00132 virtual void setXKBVariant ( const QString& , const QString& ) = 0;
00133 virtual void removeXKBVariant ( const QString& ) = 0;
00134
00135 public:
00136 virtual void setMapping ( const QString& , const QString& ) = 0;
00137
00138 public:
00139 virtual QString getXKBVariant ( const QString& ) = 0;
00140 virtual QString getXKBModel ( void ) = 0;
00141
00142 public:
00143 virtual QList<QString> getXKBOptionList ( void ) = 0;
00144 virtual QList<QString> getXKBLayout ( void ) = 0;
00145 virtual QList<QString> getXKBVariantList ( void ) = 0;
00146 virtual QString getDriver ( void ) = 0;
00147
00148 public:
00149 virtual bool selectKeyboard ( int ) = 0;
00150
00151 public:
00152 virtual ~SaXManipulateKeyboardIF ( void ) { }
00153
00154 protected:
00155 SaXManipulateKeyboardIF ( void ) : SaXKeyRules() { }
00156 };
00157
00158
00159
00202 class SaXManipulateKeyboard : public SaXManipulateKeyboardIF {
00203 private:
00204 SaXImport* mImport;
00205 int mKeyboard;
00206
00207 private:
00208 int findLayout ( const QString& );
00209 QList<QString> createList ( const QString& );
00210
00211 public:
00212 virtual void setXKBModel ( const QString& );
00213
00214 public:
00215 void setXKBLayout ( const QString& );
00216 void addXKBLayout ( const QString& );
00217 void removeXKBLayout ( const QString& );
00218
00219 public:
00220 void setXKBOption ( const QString& );
00221 void addXKBOption ( const QString& );
00222 void removeXKBOption ( const QString& );
00223
00224 public:
00225 void setXKBVariant ( const QString& , const QString& );
00226 void removeXKBVariant ( const QString& );
00227
00228 public:
00229 void setMapping ( const QString& , const QString& );
00230
00231 public:
00232 QString getXKBVariant ( const QString& );
00233 QString getXKBModel ( void );
00234
00235 public:
00236 QList<QString> getXKBOptionList ( void );
00237 QList<QString> getXKBLayout ( void );
00238 QList<QString> getXKBVariantList ( void );
00239 QString getDriver ( void );
00240
00241 public:
00242 bool selectKeyboard ( int );
00243
00244 public:
00245 SaXManipulateKeyboard ( SaXImport*, int = 0 );
00246 };
00247 }
00248 #endif