keyboard.h

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 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 // Class SaXKeyRules...
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 // 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

Generated on Tue Nov 28 19:09:12 2006 for libsax by  doxygen 1.5.0