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 #include <X11/extensions/XKBui.h>
00036 
00037 namespace SaX {
00038 //====================================
00039 // Defines...
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 // Interface class for dlopen ability
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 // Class SaXKeyRules...
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 // Interface class for dlopen ability
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 // Class SaXManipulateKeyboard...
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 } // end namespace
00248 #endif

Generated on Mon Jun 19 12:42:49 2006 for libsax by  doxygen 1.4.6