kkeyserver_x11.h
00001 #ifndef _KKEYSERVER_X11_H
00002 #define _KKEYSERVER_X11_H
00003
00004 #include "kshortcut.h"
00005 #include "kkeynative.h"
00006
00012 namespace KKeyServer
00013 {
00018 enum ExtraModFlag { MODE_SWITCH = 0x2000 };
00019
00020 struct CodeMod { int code, mod; };
00021
00027 struct Sym
00028 {
00029 public:
00031 uint m_sym;
00032
00034 Sym()
00035 { m_sym = 0; }
00040 Sym( uint sym )
00041 { m_sym = sym; }
00047 Sym( const QString& s )
00048 { init( s ); }
00049
00056 bool initQt( int keyQt );
00057
00064 bool init( const QString &s );
00065
00070 int qt() const;
00071
00075 QString toStringInternal() const;
00076
00081 QString toString() const;
00082
00090 uint getModsRequired() const;
00091
00095 uint getSymVariation() const;
00096
00100 operator uint() const { return m_sym; }
00101
00105 Sym& operator =( uint sym ) { m_sym = sym; return *this; }
00106
00107 private:
00108 QString toString( bool bUserSpace ) const;
00109
00110 static void capitalizeKeyname( QString& );
00111 };
00112
00117 struct Key
00118 {
00120 enum { CODE_FOR_QT = 256 };
00121
00123 uint m_code;
00124
00126 uint m_mod;
00127
00129 uint m_sym;
00130
00139 bool init( const KKey& key, bool bQt );
00140
00148 bool isNative() const { return m_code != CODE_FOR_QT; }
00149
00154 uint code() const { return m_code; }
00155
00160 uint mod() const { return m_mod; }
00161
00166 uint sym() const { return m_sym; }
00167
00172 int keyCodeQt() const { return (int) m_sym; }
00173
00178 void setKeycodeQt( int keyQt )
00179 { m_code = CODE_FOR_QT; m_sym = keyQt; }
00180
00185 Key& operator =( const KKeyNative& key );
00186
00198 int compare( const Key& key ) const;
00199
00204 bool operator ==( const Key& b ) const
00205 { return compare( b ) == 0; }
00206
00211 bool operator <( const Key& b ) const
00212 { return compare( b ) < 0; }
00213
00218 KKey key() const;
00219 };
00220
00224 struct Variations
00225 {
00226 enum { MAX_VARIATIONS = 4 };
00227
00228 Key m_rgkey[MAX_VARIATIONS];
00229 uint m_nVariations;
00230
00231 Variations() { m_nVariations = 0; }
00232
00233 void init( const KKey&, bool bQt );
00234
00235 uint count() const { return m_nVariations; }
00236 const Key& key( uint i ) const { return m_rgkey[i]; }
00237 };
00238
00240 bool initializeMods();
00241
00247 uint modX( KKey::ModFlag modFlag );
00248
00255 bool keyboardHasWinKey();
00256
00262 uint modXShift();
00263
00269 uint modXLock();
00270
00276 uint modXCtrl();
00277
00283 uint modXAlt();
00284
00290 uint modXNumLock();
00291
00298 uint modXWin();
00299
00305 uint modXScrollLock();
00306
00318 uint accelModMaskX();
00319
00329 bool keyQtToSym( int keyQt, uint& sym );
00330
00339 bool keyQtToMod( int keyQt, uint& mod );
00340
00349 bool symToKeyQt( uint sym, int& keyQt );
00350
00361 bool modToModQt( uint mod, int& modQt );
00362
00372 bool modToModX( uint mod, uint& modX );
00373
00383 bool modXToModQt( uint modX, int& modQt );
00384
00394 bool modXToMod( uint modX, uint& mod );
00395
00407 bool codeXToSym( uchar codeX, uint modX, uint& symX );
00408
00412 QString modToStringInternal( uint mod );
00413
00420 QString modToStringUser( uint mod );
00421
00426 bool stringToSymMod( const QString&, uint& sym, uint& mod );
00427
00432 void keyQtToKeyX( uint keyCombQt, unsigned char *pKeyCodeX, uint *pKeySymX, uint *pKeyModX );
00433 }
00434
00435 #endif // !_KKEYSERVER_X11_H
This file is part of the documentation for kdelibs Version 3.1.5.