|
libsax 7.2
|
00001 /************** 00002 FILE : keyboard.h 00003 *************** 00004 PROJECT : SaX2 - library interface [header] 00005 : 00006 AUTHOR : Marcus Schäfer <ms@suse.de> 00007 : 00008 BELONGS TO : SaX2 - SuSE advanced X11 configuration 00009 : 00010 : 00011 DESCRIPTION : native C++ class library to access SaX2 00012 : functionality. Easy to use interface for 00013 : //.../ 00014 : - importing/exporting X11 configurations 00015 : - modifying/creating X11 configurations 00016 : --- 00017 : 00018 : 00019 STATUS : Status: Development 00020 **************/ 00021 #ifndef SAX_KEYBOARD_H 00022 #define SAX_KEYBOARD_H 1 00023 00024 //==================================== 00025 // Includes... 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 // Defines... 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 // Interface class for dlopen ability 00058 //------------------------------------ 00066 class SaXKeyRulesIF : public SaXException { 00067 public: 00068 virtual Q3Dict<QString> getModels ( void ) = 0; 00069 virtual Q3Dict<QString> getLayouts ( void ) = 0; 00070 virtual Q3Dict<QString> getOptions ( void ) = 0; 00071 virtual QList<QString> getVariants ( const QString& ) = 0; 00072 00073 public: 00074 virtual ~SaXKeyRulesIF ( void ) { } 00075 }; 00076 //==================================== 00077 // Class SaXKeyRules... 00078 //------------------------------------ 00085 class SaXKeyRules : public SaXKeyRulesIF { 00086 protected: 00087 void loadRules ( QString ); 00088 00089 private: 00090 Q3Dict<QString> mModels; 00091 Q3Dict<QString> mLayouts; 00092 Q3Dict<QString> mOptions; 00093 Q3Dict<QStringList> mVarLists; 00094 QString mX11Dir; 00095 00096 public: 00097 Q3Dict<QString> getModels ( void ); 00098 Q3Dict<QString> getLayouts ( void ); 00099 Q3Dict<QString> getOptions ( void ); 00100 QList<QString> getVariants ( const QString& ); 00101 00102 public: 00103 SaXKeyRules ( QString rule=SAX_DEFAULT_RULE ); 00104 }; 00105 00106 //==================================== 00107 // Interface class for dlopen ability 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 // Class SaXManipulateKeyboard... 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 } // end namespace 00247 #endif
1.7.3