• Skip to content
  • Skip to link menu
KDE 4.3 API Reference
  • KDE API Reference
  • kdelibs
  • Sitemap
  • Contact Us
 

KDEUI

kkeyserver_win.cpp

Go to the documentation of this file.
00001 /*
00002  Copyright (C) 2008 Carlo Segato <brandon.ml@gmail.com>
00003  
00004  This library is free software; you can redistribute it and/or
00005  modify it under the terms of the GNU Library General Public
00006  License as published by the Free Software Foundation; either
00007  version 2 of the License, or (at your option) any later version.
00008  
00009  This library is distributed in the hope that it will be useful,
00010  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  Library General Public License for more details.
00013  
00014  You should have received a copy of the GNU Library General Public License
00015  along with this library; see the file COPYING.LIB.  If not, write to
00016  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017  Boston, MA 02110-1301, USA.
00018  */
00019 
00020 #include "kkeyserver_win.h"
00021 
00022 #include <kdebug.h>
00023 #include <windows.h>
00024 
00025 namespace KKeyServer
00026 {
00027 
00028     struct TransKey {
00029         uint keySymQt;
00030         uint keySymWin;
00031     };
00032 
00033     static const TransKey KeyTbl[] =
00034     {
00035         { Qt::Key_Cancel,       VK_CANCEL },
00036         { Qt::Key_Backspace,    VK_BACK },
00037         { Qt::Key_Tab,          VK_TAB },
00038         { Qt::Key_Clear,        VK_CLEAR },
00039         { Qt::Key_Return,       VK_RETURN },
00040         { Qt::Key_Shift,            VK_SHIFT },
00041         { Qt::Key_Control,          VK_CONTROL },
00042         { Qt::Key_Alt,          VK_MENU },
00043         { Qt::Key_Pause,            VK_PAUSE },
00044         { Qt::Key_CapsLock,         VK_CAPITAL },
00045         { Qt::Key_Escape,           VK_ESCAPE },
00046         { Qt::Key_Mode_switch,          VK_MODECHANGE },
00047         { Qt::Key_Space,            VK_SPACE },
00048         { Qt::Key_PageUp,           VK_PRIOR },
00049         { Qt::Key_PageDown,         VK_NEXT },
00050         { Qt::Key_End,          VK_END },
00051         { Qt::Key_Home,         VK_HOME },
00052         { Qt::Key_Left,         VK_LEFT },
00053         { Qt::Key_Up,           VK_UP },
00054         { Qt::Key_Right,            VK_RIGHT },
00055         { Qt::Key_Down,         VK_DOWN },
00056         { Qt::Key_Select,           VK_SELECT },
00057         { Qt::Key_Printer,          VK_PRINT },
00058         { Qt::Key_Execute,          VK_EXECUTE },
00059         { Qt::Key_Print,            VK_SNAPSHOT },
00060         { Qt::Key_Insert,           VK_INSERT },
00061         { Qt::Key_Delete,           VK_DELETE },
00062         { Qt::Key_Help,         VK_HELP },
00063 /*        { 0,            VK_0 },
00064         { 0,            VK_1 },
00065         { 0,            VK_2 },
00066         { 0,            VK_3 },
00067         { 0,            VK_4 },
00068         { 0,            VK_5 },
00069         { 0,            VK_6 },
00070         { 0,            VK_7 },
00071         { 0,            VK_8 },
00072         { 0,            VK_9 },
00073         { 0,            VK_A },
00074         { 0,            VK_B },
00075         { 0,            VK_C },
00076         { 0,            VK_D },
00077         { 0,            VK_E },
00078         { 0,            VK_F },
00079         { 0,            VK_G },
00080         { 0,            VK_H },
00081         { 0,            VK_I },
00082         { 0,            VK_J },
00083         { 0,            VK_K },
00084         { 0,            VK_L },
00085         { 0,            VK_M },
00086         { 0,            VK_N },
00087         { 0,            VK_O },
00088         { 0,            VK_P },
00089         { 0,            VK_Q },
00090         { 0,            VK_R },
00091         { 0,            VK_S },
00092         { 0,            VK_T },
00093         { 0,            VK_U },
00094         { 0,            VK_V },
00095         { 0,            VK_W },
00096         { 0,            VK_X },
00097         { 0,            VK_Y },
00098         { 0,            VK_Z },*/
00099         { Qt::Key_Meta,         VK_LWIN },
00100         { Qt::Key_Meta,         VK_RWIN },
00101         { Qt::Key_Menu,         VK_APPS },
00102         { Qt::Key_Sleep,            VK_SLEEP },
00103         { Qt::Key_0,            VK_NUMPAD0 },
00104         { Qt::Key_1,            VK_NUMPAD1 },
00105         { Qt::Key_2,            VK_NUMPAD2 },
00106         { Qt::Key_3,            VK_NUMPAD3 },
00107         { Qt::Key_4,            VK_NUMPAD4 },
00108         { Qt::Key_5,            VK_NUMPAD5 },
00109         { Qt::Key_6,            VK_NUMPAD6 },
00110         { Qt::Key_7,            VK_NUMPAD7 },
00111         { Qt::Key_8,            VK_NUMPAD8 },
00112         { Qt::Key_9,            VK_NUMPAD9 },
00113         { Qt::Key_Asterisk,         VK_MULTIPLY },
00114         { Qt::Key_Plus,         VK_ADD },
00115         { Qt::Key_Comma,            VK_SEPARATOR },
00116         { Qt::Key_Minus,            VK_SUBTRACT },
00117         { Qt::Key_Period,           VK_DECIMAL },
00118         { Qt::Key_Slash,            VK_DIVIDE },
00119         { Qt::Key_F1,           VK_F1 },
00120         { Qt::Key_F2,           VK_F2 },
00121         { Qt::Key_F3,           VK_F3 },
00122         { Qt::Key_F4,           VK_F4 },
00123         { Qt::Key_F5,           VK_F5 },
00124         { Qt::Key_F6,           VK_F6 },
00125         { Qt::Key_F7,           VK_F7 },
00126         { Qt::Key_F8,           VK_F8 },
00127         { Qt::Key_F9,           VK_F9 },
00128         { Qt::Key_F10,          VK_F10 },
00129         { Qt::Key_F11,          VK_F11 },
00130         { Qt::Key_F12,          VK_F12 },
00131         { Qt::Key_F13,          VK_F13 },
00132         { Qt::Key_F14,          VK_F14 },
00133         { Qt::Key_F15,          VK_F15 },
00134         { Qt::Key_F16,          VK_F16 },
00135         { Qt::Key_F17,          VK_F17 },
00136         { Qt::Key_F18,          VK_F18 },
00137         { Qt::Key_F19,          VK_F19 },
00138         { Qt::Key_F20,          VK_F20 },
00139         { Qt::Key_F21,          VK_F21 },
00140         { Qt::Key_F22,          VK_F22 },
00141         { Qt::Key_F23,          VK_F23 },
00142         { Qt::Key_F24,          VK_F24 },
00143         { Qt::Key_NumLock,          VK_NUMLOCK },
00144         { Qt::Key_ScrollLock,           VK_SCROLL },
00145 //         { 0,            VK_OEM_FJ_JISHO },
00146 //         { Qt::Key_Massyo,           VK_OEM_FJ_MASSHOU },
00147 //         { Qt::Key_Touroku,          VK_OEM_FJ_TOUROKU },
00148 //         { 0,            VK_OEM_FJ_LOYA },
00149 //         { 0,            VK_OEM_FJ_ROYA },
00150         { Qt::Key_Shift,            VK_LSHIFT },
00151         { Qt::Key_Shift,            VK_RSHIFT },
00152         { Qt::Key_Control,          VK_LCONTROL },
00153         { Qt::Key_Control,          VK_RCONTROL },
00154         { Qt::Key_Alt,          VK_LMENU },
00155         { Qt::Key_Alt,          VK_RMENU },
00156 
00157 //  winuser.h from psdk w2kserver2003R2 defines the following constants only for _WIN32_WINNT >= 0x0500
00158 // and we should also do so - otherwise the constants may not be available
00159 #if(_WIN32_WINNT >= 0x0500)        
00160         { Qt::Key_Back,         VK_BROWSER_BACK },
00161         { Qt::Key_Forward,          VK_BROWSER_FORWARD },
00162         { Qt::Key_Refresh,          VK_BROWSER_REFRESH },
00163         { Qt::Key_Stop,         VK_BROWSER_STOP },
00164         { Qt::Key_Search,           VK_BROWSER_SEARCH },
00165         { Qt::Key_Favorites,            VK_BROWSER_FAVORITES },
00166         { Qt::Key_HomePage,         VK_BROWSER_HOME },
00167         { Qt::Key_VolumeMute,           VK_VOLUME_MUTE },
00168         { Qt::Key_VolumeDown,           VK_VOLUME_DOWN },
00169         { Qt::Key_VolumeUp,         VK_VOLUME_UP },
00170         { Qt::Key_MediaNext,            VK_MEDIA_NEXT_TRACK },
00171         { Qt::Key_MediaPrevious,            VK_MEDIA_PREV_TRACK },
00172         { Qt::Key_MediaStop,            VK_MEDIA_STOP },
00173         { Qt::Key_MediaPlay,            VK_MEDIA_PLAY_PAUSE },
00174         { Qt::Key_LaunchMail,           VK_LAUNCH_MAIL },
00175         { Qt::Key_LaunchMedia,          VK_LAUNCH_MEDIA_SELECT },
00176         { Qt::Key_Launch0,          VK_LAUNCH_APP1 },
00177         { Qt::Key_Launch1,          VK_LAUNCH_APP2 },
00178 #endif        
00179 /*        { 0,            VK_OEM_1 },
00180         { 0,            VK_OEM_PLUS },
00181         { 0,            VK_OEM_COMMA },
00182         { 0,            VK_OEM_MINUS },
00183         { 0,            VK_OEM_PERIOD },
00184         { 0,            VK_OEM_2 },
00185         { 0,            VK_OEM_3 },
00186         { 0,            VK_OEM_4 },
00187         { 0,            VK_OEM_5 },
00188         { 0,            VK_OEM_6 },
00189         { 0,            VK_OEM_7 },
00190         { 0,            VK_OEM_8 },*/
00191         { Qt::Key_Play,         VK_PLAY },
00192         { Qt::Key_Zoom,         VK_ZOOM },
00193         { Qt::Key_Clear,            VK_OEM_CLEAR },
00194 //         { 0
00195     };
00196 
00197     bool keyQtToModWin( int keyQt, uint* mod )
00198     {
00199         *mod = 0;
00200         if (keyQt & Qt::ShiftModifier) {
00201             *mod |= MOD_SHIFT;
00202         }
00203         if (keyQt & Qt::ControlModifier) {
00204             *mod |= MOD_CONTROL;
00205         }
00206         if (keyQt & Qt::AltModifier) {
00207             *mod |= MOD_ALT;
00208         }
00209         if (keyQt & Qt::MetaModifier) {
00210             *mod |= MOD_WIN;
00211         }
00212         
00213         return true;
00214     }
00215     
00216     bool modWinToKeyQt( uint mod, int *keyQt )
00217     {
00218         *keyQt = 0;
00219         if (mod & MOD_SHIFT) {
00220             *keyQt |= Qt::ShiftModifier;
00221         }
00222         if (mod & MOD_CONTROL) {
00223             *keyQt |= Qt::ControlModifier;
00224         }
00225         if (mod & MOD_ALT) {
00226             *keyQt |= Qt::AltModifier;
00227         }
00228         if (mod & MOD_WIN) {
00229             *keyQt |= Qt::MetaModifier;
00230         }
00231         
00232         return true;
00233     }
00234 
00235     bool keyQtToCodeWin( int keyQt, uint* sym )
00236     {
00237         int symQt = keyQt & ~Qt::KeyboardModifierMask;
00238 
00239         if( symQt >= Qt::Key_A && symQt <= Qt::Key_Z ) {
00240             *sym = symQt;
00241             return true;
00242         }
00243 
00244         for( uint i = 0; i < sizeof(KeyTbl); i++ ) {
00245             if( KeyTbl[i].keySymQt == symQt ) {
00246                 *sym = KeyTbl[i].keySymWin;
00247                 return true;
00248             }
00249         }
00250 
00251         *sym = 0;
00252         if( symQt != Qt::Key_Shift && symQt != Qt::Key_Control && symQt != Qt::Key_Alt &&
00253             symQt != Qt::Key_Meta && symQt != Qt::Key_Direction_L && symQt != Qt::Key_Direction_R )
00254             kDebug(125) << "Sym::initQt( " << QString::number(keyQt,16) << " ): failed to convert key.";
00255         return false;
00256     }
00257 
00258     bool codeWinToKeyQt( uint sym, int* keyQt )
00259     {
00260         if( sym >= Qt::Key_A && sym <= Qt::Key_Z ) {
00261             *keyQt = sym;
00262             return true;
00263         }
00264 
00265         for( uint i = 0; i < sizeof(KeyTbl); i++ ) {
00266             if( KeyTbl[i].keySymWin == sym ) {
00267                 *keyQt = KeyTbl[i].keySymQt;
00268                 return true;
00269             }
00270         }
00271 
00272         *keyQt = 0;
00273         return false;
00274     }
00275 
00276 }

KDEUI

Skip menu "KDEUI"
  • Main Page
  • Modules
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.6.1
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal