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

Kate

katevikeysequenceparser.cpp

Go to the documentation of this file.
00001 /* This file is part of the KDE libraries
00002  * Copyright (C) 2008 Erlend Hamberg <ehamberg@gmail.com>
00003  * Copyright (C) 2008 Evgeniy Ivanov <powerfox@kde.ru>
00004  *
00005  * This library is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU Library General Public
00007  * License as published by the Free Software Foundation; either
00008  * version 2 of the License, or (at your option) version 3.
00009  *
00010  * This library is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  * Library General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU Library General Public License
00016  * along with this library; see the file COPYING.LIB.  If not, write to
00017  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
00019  */
00020 
00021 #include "katevikeysequenceparser.h"
00022 #include <QStringList>
00023 #include <QKeyEvent>
00024 
00025 KateViKeySequenceParser::KateViKeySequenceParser()
00026 {
00027   m_qt2katevi = new QHash<int, QString>;
00028   m_katevi2qt = new QHash<QString, int>;
00029   m_nameToKeyCode = new QHash<QString, int>;
00030   m_keyCodeToName = new QHash<int, QString>;
00031 
00032   initKeyTables();
00033 }
00034 
00035 void KateViKeySequenceParser::initKeyTables()
00036 {
00037   m_qt2katevi->insert( Qt::Key_Escape, QString( "esc" ) );
00038   m_qt2katevi->insert( Qt::Key_Tab, QString( "tab" ) );
00039   m_qt2katevi->insert( Qt::Key_Backtab, QString( "backtab" ) );
00040   m_qt2katevi->insert( Qt::Key_Backspace, QString( "backspace" ) );
00041   m_qt2katevi->insert( Qt::Key_Return, QString( "return" ) );
00042   m_qt2katevi->insert( Qt::Key_Enter, QString( "enter" ) );
00043   m_qt2katevi->insert( Qt::Key_Insert, QString( "insert" ) );
00044   m_qt2katevi->insert( Qt::Key_Delete, QString( "delete" ) );
00045   m_qt2katevi->insert( Qt::Key_Pause, QString( "pause" ) );
00046   m_qt2katevi->insert( Qt::Key_Print, QString( "print" ) );
00047   m_qt2katevi->insert( Qt::Key_SysReq, QString( "sysreq" ) );
00048   m_qt2katevi->insert( Qt::Key_Clear, QString( "clear" ) );
00049   m_qt2katevi->insert( Qt::Key_Home, QString( "home" ) );
00050   m_qt2katevi->insert( Qt::Key_End, QString( "end" ) );
00051   m_qt2katevi->insert( Qt::Key_Left, QString( "left" ) );
00052   m_qt2katevi->insert( Qt::Key_Up, QString( "up" ) );
00053   m_qt2katevi->insert( Qt::Key_Right, QString( "right" ) );
00054   m_qt2katevi->insert( Qt::Key_Down, QString( "down" ) );
00055   m_qt2katevi->insert( Qt::Key_PageUp, QString( "pageup" ) );
00056   m_qt2katevi->insert( Qt::Key_PageDown, QString( "pagedown" ) );
00057   m_qt2katevi->insert( Qt::Key_Shift, QString( "shift" ) );
00058   m_qt2katevi->insert( Qt::Key_Control, QString( "control" ) );
00059   m_qt2katevi->insert( Qt::Key_Meta, QString( "meta" ) );
00060   m_qt2katevi->insert( Qt::Key_Alt, QString( "alt" ) );
00061   m_qt2katevi->insert( Qt::Key_AltGr, QString( "altgr" ) );
00062   m_qt2katevi->insert( Qt::Key_CapsLock, QString( "capslock" ) );
00063   m_qt2katevi->insert( Qt::Key_NumLock, QString( "numlock" ) );
00064   m_qt2katevi->insert( Qt::Key_ScrollLock, QString( "scrolllock" ) );
00065   m_qt2katevi->insert( Qt::Key_F1, QString( "f1" ) );
00066   m_qt2katevi->insert( Qt::Key_F2, QString( "f2" ) );
00067   m_qt2katevi->insert( Qt::Key_F3, QString( "f3" ) );
00068   m_qt2katevi->insert( Qt::Key_F4, QString( "f4" ) );
00069   m_qt2katevi->insert( Qt::Key_F5, QString( "f5" ) );
00070   m_qt2katevi->insert( Qt::Key_F6, QString( "f6" ) );
00071   m_qt2katevi->insert( Qt::Key_F7, QString( "f7" ) );
00072   m_qt2katevi->insert( Qt::Key_F8, QString( "f8" ) );
00073   m_qt2katevi->insert( Qt::Key_F9, QString( "f9" ) );
00074   m_qt2katevi->insert( Qt::Key_F10, QString( "f10" ) );
00075   m_qt2katevi->insert( Qt::Key_F11, QString( "f11" ) );
00076   m_qt2katevi->insert( Qt::Key_F12, QString( "f12" ) );
00077   m_qt2katevi->insert( Qt::Key_F13, QString( "f13" ) );
00078   m_qt2katevi->insert( Qt::Key_F14, QString( "f14" ) );
00079   m_qt2katevi->insert( Qt::Key_F15, QString( "f15" ) );
00080   m_qt2katevi->insert( Qt::Key_F16, QString( "f16" ) );
00081   m_qt2katevi->insert( Qt::Key_F17, QString( "f17" ) );
00082   m_qt2katevi->insert( Qt::Key_F18, QString( "f18" ) );
00083   m_qt2katevi->insert( Qt::Key_F19, QString( "f19" ) );
00084   m_qt2katevi->insert( Qt::Key_F20, QString( "f20" ) );
00085   m_qt2katevi->insert( Qt::Key_F21, QString( "f21" ) );
00086   m_qt2katevi->insert( Qt::Key_F22, QString( "f22" ) );
00087   m_qt2katevi->insert( Qt::Key_F23, QString( "f23" ) );
00088   m_qt2katevi->insert( Qt::Key_F24, QString( "f24" ) );
00089   m_qt2katevi->insert( Qt::Key_F25, QString( "f25" ) );
00090   m_qt2katevi->insert( Qt::Key_F26, QString( "f26" ) );
00091   m_qt2katevi->insert( Qt::Key_F27, QString( "f27" ) );
00092   m_qt2katevi->insert( Qt::Key_F28, QString( "f28" ) );
00093   m_qt2katevi->insert( Qt::Key_F29, QString( "f29" ) );
00094   m_qt2katevi->insert( Qt::Key_F30, QString( "f30" ) );
00095   m_qt2katevi->insert( Qt::Key_F31, QString( "f31" ) );
00096   m_qt2katevi->insert( Qt::Key_F32, QString( "f32" ) );
00097   m_qt2katevi->insert( Qt::Key_F33, QString( "f33" ) );
00098   m_qt2katevi->insert( Qt::Key_F34, QString( "f34" ) );
00099   m_qt2katevi->insert( Qt::Key_F35, QString( "f35" ) );
00100   m_qt2katevi->insert( Qt::Key_Super_L, QString( "super_l" ) );
00101   m_qt2katevi->insert( Qt::Key_Super_R, QString( "super_r" ) );
00102   m_qt2katevi->insert( Qt::Key_Menu, QString( "menu" ) );
00103   m_qt2katevi->insert( Qt::Key_Hyper_L, QString( "hyper_l" ) );
00104   m_qt2katevi->insert( Qt::Key_Hyper_R, QString( "hyper_r" ) );
00105   m_qt2katevi->insert( Qt::Key_Help, QString( "help" ) );
00106   m_qt2katevi->insert( Qt::Key_Direction_L, QString( "direction_l" ) );
00107   m_qt2katevi->insert( Qt::Key_Direction_R, QString( "direction_r" ) );
00108   m_qt2katevi->insert( Qt::Key_Multi_key, QString( "multi_key" ) );
00109   m_qt2katevi->insert( Qt::Key_Codeinput, QString( "codeinput" ) );
00110   m_qt2katevi->insert( Qt::Key_SingleCandidate, QString( "singlecandidate" ) );
00111   m_qt2katevi->insert( Qt::Key_MultipleCandidate, QString( "multiplecandidate" ) );
00112   m_qt2katevi->insert( Qt::Key_PreviousCandidate, QString( "previouscandidate" ) );
00113   m_qt2katevi->insert( Qt::Key_Mode_switch, QString( "mode_switch" ) );
00114   m_qt2katevi->insert( Qt::Key_Kanji, QString( "kanji" ) );
00115   m_qt2katevi->insert( Qt::Key_Muhenkan, QString( "muhenkan" ) );
00116   m_qt2katevi->insert( Qt::Key_Henkan, QString( "henkan" ) );
00117   m_qt2katevi->insert( Qt::Key_Romaji, QString( "romaji" ) );
00118   m_qt2katevi->insert( Qt::Key_Hiragana, QString( "hiragana" ) );
00119   m_qt2katevi->insert( Qt::Key_Katakana, QString( "katakana" ) );
00120   m_qt2katevi->insert( Qt::Key_Hiragana_Katakana, QString( "hiragana_katakana" ) );
00121   m_qt2katevi->insert( Qt::Key_Zenkaku, QString( "zenkaku" ) );
00122   m_qt2katevi->insert( Qt::Key_Hankaku, QString( "hankaku" ) );
00123   m_qt2katevi->insert( Qt::Key_Zenkaku_Hankaku, QString( "zenkaku_hankaku" ) );
00124   m_qt2katevi->insert( Qt::Key_Touroku, QString( "touroku" ) );
00125   m_qt2katevi->insert( Qt::Key_Massyo, QString( "massyo" ) );
00126   m_qt2katevi->insert( Qt::Key_Kana_Lock, QString( "kana_lock" ) );
00127   m_qt2katevi->insert( Qt::Key_Kana_Shift, QString( "kana_shift" ) );
00128   m_qt2katevi->insert( Qt::Key_Eisu_Shift, QString( "eisu_shift" ) );
00129   m_qt2katevi->insert( Qt::Key_Eisu_toggle, QString( "eisu_toggle" ) );
00130   m_qt2katevi->insert( Qt::Key_Hangul, QString( "hangul" ) );
00131   m_qt2katevi->insert( Qt::Key_Hangul_Start, QString( "hangul_start" ) );
00132   m_qt2katevi->insert( Qt::Key_Hangul_End, QString( "hangul_end" ) );
00133   m_qt2katevi->insert( Qt::Key_Hangul_Hanja, QString( "hangul_hanja" ) );
00134   m_qt2katevi->insert( Qt::Key_Hangul_Jamo, QString( "hangul_jamo" ) );
00135   m_qt2katevi->insert( Qt::Key_Hangul_Romaja, QString( "hangul_romaja" ) );
00136   m_qt2katevi->insert( Qt::Key_Hangul_Jeonja, QString( "hangul_jeonja" ) );
00137   m_qt2katevi->insert( Qt::Key_Hangul_Banja, QString( "hangul_banja" ) );
00138   m_qt2katevi->insert( Qt::Key_Hangul_PreHanja, QString( "hangul_prehanja" ) );
00139   m_qt2katevi->insert( Qt::Key_Hangul_PostHanja, QString( "hangul_posthanja" ) );
00140   m_qt2katevi->insert( Qt::Key_Hangul_Special, QString( "hangul_special" ) );
00141   m_qt2katevi->insert( Qt::Key_Dead_Grave, QString( "dead_grave" ) );
00142   m_qt2katevi->insert( Qt::Key_Dead_Acute, QString( "dead_acute" ) );
00143   m_qt2katevi->insert( Qt::Key_Dead_Circumflex, QString( "dead_circumflex" ) );
00144   m_qt2katevi->insert( Qt::Key_Dead_Tilde, QString( "dead_tilde" ) );
00145   m_qt2katevi->insert( Qt::Key_Dead_Macron, QString( "dead_macron" ) );
00146   m_qt2katevi->insert( Qt::Key_Dead_Breve, QString( "dead_breve" ) );
00147   m_qt2katevi->insert( Qt::Key_Dead_Abovedot, QString( "dead_abovedot" ) );
00148   m_qt2katevi->insert( Qt::Key_Dead_Diaeresis, QString( "dead_diaeresis" ) );
00149   m_qt2katevi->insert( Qt::Key_Dead_Abovering, QString( "dead_abovering" ) );
00150   m_qt2katevi->insert( Qt::Key_Dead_Doubleacute, QString( "dead_doubleacute" ) );
00151   m_qt2katevi->insert( Qt::Key_Dead_Caron, QString( "dead_caron" ) );
00152   m_qt2katevi->insert( Qt::Key_Dead_Cedilla, QString( "dead_cedilla" ) );
00153   m_qt2katevi->insert( Qt::Key_Dead_Ogonek, QString( "dead_ogonek" ) );
00154   m_qt2katevi->insert( Qt::Key_Dead_Iota, QString( "dead_iota" ) );
00155   m_qt2katevi->insert( Qt::Key_Dead_Voiced_Sound, QString( "dead_voiced_sound" ) );
00156   m_qt2katevi->insert( Qt::Key_Dead_Semivoiced_Sound, QString( "dead_semivoiced_sound" ) );
00157   m_qt2katevi->insert( Qt::Key_Dead_Belowdot, QString( "dead_belowdot" ) );
00158   m_qt2katevi->insert( Qt::Key_Dead_Hook, QString( "dead_hook" ) );
00159   m_qt2katevi->insert( Qt::Key_Dead_Horn, QString( "dead_horn" ) );
00160   m_qt2katevi->insert( Qt::Key_Back, QString( "back" ) );
00161   m_qt2katevi->insert( Qt::Key_Forward, QString( "forward" ) );
00162   m_qt2katevi->insert( Qt::Key_Stop, QString( "stop" ) );
00163   m_qt2katevi->insert( Qt::Key_Refresh, QString( "refresh" ) );
00164   m_qt2katevi->insert( Qt::Key_VolumeDown, QString( "volumedown" ) );
00165   m_qt2katevi->insert( Qt::Key_VolumeMute, QString( "volumemute" ) );
00166   m_qt2katevi->insert( Qt::Key_VolumeUp, QString( "volumeup" ) );
00167   m_qt2katevi->insert( Qt::Key_BassBoost, QString( "bassboost" ) );
00168   m_qt2katevi->insert( Qt::Key_BassUp, QString( "bassup" ) );
00169   m_qt2katevi->insert( Qt::Key_BassDown, QString( "bassdown" ) );
00170   m_qt2katevi->insert( Qt::Key_TrebleUp, QString( "trebleup" ) );
00171   m_qt2katevi->insert( Qt::Key_TrebleDown, QString( "trebledown" ) );
00172   m_qt2katevi->insert( Qt::Key_MediaPlay, QString( "mediaplay" ) );
00173   m_qt2katevi->insert( Qt::Key_MediaStop, QString( "mediastop" ) );
00174   m_qt2katevi->insert( Qt::Key_MediaPrevious, QString( "mediaprevious" ) );
00175   m_qt2katevi->insert( Qt::Key_MediaNext, QString( "medianext" ) );
00176   m_qt2katevi->insert( Qt::Key_MediaRecord, QString( "mediarecord" ) );
00177   m_qt2katevi->insert( Qt::Key_HomePage, QString( "homepage" ) );
00178   m_qt2katevi->insert( Qt::Key_Favorites, QString( "favorites" ) );
00179   m_qt2katevi->insert( Qt::Key_Search, QString( "search" ) );
00180   m_qt2katevi->insert( Qt::Key_Standby, QString( "standby" ) );
00181   m_qt2katevi->insert( Qt::Key_OpenUrl, QString( "openurl" ) );
00182   m_qt2katevi->insert( Qt::Key_LaunchMail, QString( "launchmail" ) );
00183   m_qt2katevi->insert( Qt::Key_LaunchMedia, QString( "launchmedia" ) );
00184   m_qt2katevi->insert( Qt::Key_Launch0, QString( "launch0" ) );
00185   m_qt2katevi->insert( Qt::Key_Launch1, QString( "launch1" ) );
00186   m_qt2katevi->insert( Qt::Key_Launch2, QString( "launch2" ) );
00187   m_qt2katevi->insert( Qt::Key_Launch3, QString( "launch3" ) );
00188   m_qt2katevi->insert( Qt::Key_Launch4, QString( "launch4" ) );
00189   m_qt2katevi->insert( Qt::Key_Launch5, QString( "launch5" ) );
00190   m_qt2katevi->insert( Qt::Key_Launch6, QString( "launch6" ) );
00191   m_qt2katevi->insert( Qt::Key_Launch7, QString( "launch7" ) );
00192   m_qt2katevi->insert( Qt::Key_Launch8, QString( "launch8" ) );
00193   m_qt2katevi->insert( Qt::Key_Launch9, QString( "launch9" ) );
00194   m_qt2katevi->insert( Qt::Key_LaunchA, QString( "launcha" ) );
00195   m_qt2katevi->insert( Qt::Key_LaunchB, QString( "launchb" ) );
00196   m_qt2katevi->insert( Qt::Key_LaunchC, QString( "launchc" ) );
00197   m_qt2katevi->insert( Qt::Key_LaunchD, QString( "launchd" ) );
00198   m_qt2katevi->insert( Qt::Key_LaunchE, QString( "launche" ) );
00199   m_qt2katevi->insert( Qt::Key_LaunchF, QString( "launchf" ) );
00200   m_qt2katevi->insert( Qt::Key_MediaLast, QString( "medialast" ) );
00201   m_qt2katevi->insert( Qt::Key_unknown, QString( "unknown" ) );
00202   m_qt2katevi->insert( Qt::Key_Call, QString( "call" ) );
00203   m_qt2katevi->insert( Qt::Key_Context1, QString( "context1" ) );
00204   m_qt2katevi->insert( Qt::Key_Context2, QString( "context2" ) );
00205   m_qt2katevi->insert( Qt::Key_Context3, QString( "context3" ) );
00206   m_qt2katevi->insert( Qt::Key_Context4, QString( "context4" ) );
00207   m_qt2katevi->insert( Qt::Key_Flip, QString( "flip" ) );
00208   m_qt2katevi->insert( Qt::Key_Hangup, QString( "hangup" ) );
00209   m_qt2katevi->insert( Qt::Key_No, QString( "no" ) );
00210   m_qt2katevi->insert( Qt::Key_Select, QString( "select" ) );
00211   m_qt2katevi->insert( Qt::Key_Yes, QString( "yes" ) );
00212   m_qt2katevi->insert( Qt::Key_Execute, QString( "execute" ) );
00213   m_qt2katevi->insert( Qt::Key_Printer, QString( "printer" ) );
00214   m_qt2katevi->insert( Qt::Key_Play, QString( "play" ) );
00215   m_qt2katevi->insert( Qt::Key_Sleep, QString( "sleep" ) );
00216   m_qt2katevi->insert( Qt::Key_Zoom, QString( "zoom" ) );
00217   m_qt2katevi->insert( Qt::Key_Cancel, QString( "cancel" ) );
00218 
00219   foreach( int code, m_qt2katevi->keys() ) {
00220       m_katevi2qt->insert( m_qt2katevi->value( code ), code );
00221   }
00222 
00223   m_nameToKeyCode->insert( QString( "invalid" ), -1 );
00224   m_nameToKeyCode->insert( QString( "esc" ), 1 );
00225   m_nameToKeyCode->insert( QString( "tab" ), 2 );
00226   m_nameToKeyCode->insert( QString( "backtab" ), 3 );
00227   m_nameToKeyCode->insert( QString( "backspace" ), 4 );
00228   m_nameToKeyCode->insert( QString( "return" ), 5 );
00229   m_nameToKeyCode->insert( QString( "enter" ), 6 );
00230   m_nameToKeyCode->insert( QString( "insert" ), 7 );
00231   m_nameToKeyCode->insert( QString( "delete" ), 8 );
00232   m_nameToKeyCode->insert( QString( "pause" ), 9 );
00233   m_nameToKeyCode->insert( QString( "print" ), 10 );
00234   m_nameToKeyCode->insert( QString( "sysreq" ), 11 );
00235   m_nameToKeyCode->insert( QString( "clear" ), 12 );
00236   m_nameToKeyCode->insert( QString( "home" ), 13 );
00237   m_nameToKeyCode->insert( QString( "end" ), 14 );
00238   m_nameToKeyCode->insert( QString( "left" ), 15 );
00239   m_nameToKeyCode->insert( QString( "up" ), 16 );
00240   m_nameToKeyCode->insert( QString( "right" ), 17 );
00241   m_nameToKeyCode->insert( QString( "down" ), 18 );
00242   m_nameToKeyCode->insert( QString( "pageup" ), 19 );
00243   m_nameToKeyCode->insert( QString( "pagedown" ), 20 );
00244   m_nameToKeyCode->insert( QString( "shift" ), 21 );
00245   m_nameToKeyCode->insert( QString( "control" ), 22 );
00246   m_nameToKeyCode->insert( QString( "meta" ), 23 );
00247   m_nameToKeyCode->insert( QString( "alt" ), 24 );
00248   m_nameToKeyCode->insert( QString( "altgr" ), 25 );
00249   m_nameToKeyCode->insert( QString( "capslock" ), 26 );
00250   m_nameToKeyCode->insert( QString( "numlock" ), 27 );
00251   m_nameToKeyCode->insert( QString( "scrolllock" ), 28 );
00252   m_nameToKeyCode->insert( QString( "f1" ), 29 );
00253   m_nameToKeyCode->insert( QString( "f2" ), 30 );
00254   m_nameToKeyCode->insert( QString( "f3" ), 31 );
00255   m_nameToKeyCode->insert( QString( "f4" ), 32 );
00256   m_nameToKeyCode->insert( QString( "f5" ), 33 );
00257   m_nameToKeyCode->insert( QString( "f6" ), 34 );
00258   m_nameToKeyCode->insert( QString( "f7" ), 35 );
00259   m_nameToKeyCode->insert( QString( "f8" ), 36 );
00260   m_nameToKeyCode->insert( QString( "f9" ), 37 );
00261   m_nameToKeyCode->insert( QString( "f10" ), 38 );
00262   m_nameToKeyCode->insert( QString( "f11" ), 39 );
00263   m_nameToKeyCode->insert( QString( "f12" ), 40 );
00264   m_nameToKeyCode->insert( QString( "f13" ), 41 );
00265   m_nameToKeyCode->insert( QString( "f14" ), 42 );
00266   m_nameToKeyCode->insert( QString( "f15" ), 43 );
00267   m_nameToKeyCode->insert( QString( "f16" ), 44 );
00268   m_nameToKeyCode->insert( QString( "f17" ), 45 );
00269   m_nameToKeyCode->insert( QString( "f18" ), 46 );
00270   m_nameToKeyCode->insert( QString( "f19" ), 47 );
00271   m_nameToKeyCode->insert( QString( "f20" ), 48 );
00272   m_nameToKeyCode->insert( QString( "f21" ), 49 );
00273   m_nameToKeyCode->insert( QString( "f22" ), 50 );
00274   m_nameToKeyCode->insert( QString( "f23" ), 51 );
00275   m_nameToKeyCode->insert( QString( "f24" ), 52 );
00276   m_nameToKeyCode->insert( QString( "f25" ), 53 );
00277   m_nameToKeyCode->insert( QString( "f26" ), 54 );
00278   m_nameToKeyCode->insert( QString( "f27" ), 55 );
00279   m_nameToKeyCode->insert( QString( "f28" ), 56 );
00280   m_nameToKeyCode->insert( QString( "f29" ), 57 );
00281   m_nameToKeyCode->insert( QString( "f30" ), 58 );
00282   m_nameToKeyCode->insert( QString( "f31" ), 59 );
00283   m_nameToKeyCode->insert( QString( "f32" ), 60 );
00284   m_nameToKeyCode->insert( QString( "f33" ), 61 );
00285   m_nameToKeyCode->insert( QString( "f34" ), 62 );
00286   m_nameToKeyCode->insert( QString( "f35" ), 63 );
00287   m_nameToKeyCode->insert( QString( "super_l" ), 64 );
00288   m_nameToKeyCode->insert( QString( "super_r" ), 65 );
00289   m_nameToKeyCode->insert( QString( "menu" ), 66 );
00290   m_nameToKeyCode->insert( QString( "hyper_l" ), 67 );
00291   m_nameToKeyCode->insert( QString( "hyper_r" ), 68 );
00292   m_nameToKeyCode->insert( QString( "help" ), 69 );
00293   m_nameToKeyCode->insert( QString( "direction_l" ), 70 );
00294   m_nameToKeyCode->insert( QString( "direction_r" ), 71 );
00295   m_nameToKeyCode->insert( QString( "multi_key" ), 172 );
00296   m_nameToKeyCode->insert( QString( "codeinput" ), 173 );
00297   m_nameToKeyCode->insert( QString( "singlecandidate" ), 174 );
00298   m_nameToKeyCode->insert( QString( "multiplecandidate" ), 175 );
00299   m_nameToKeyCode->insert( QString( "previouscandidate" ), 176 );
00300   m_nameToKeyCode->insert( QString( "mode_switch" ), 177 );
00301   m_nameToKeyCode->insert( QString( "kanji" ), 178 );
00302   m_nameToKeyCode->insert( QString( "muhenkan" ), 179 );
00303   m_nameToKeyCode->insert( QString( "henkan" ), 180 );
00304   m_nameToKeyCode->insert( QString( "romaji" ), 181 );
00305   m_nameToKeyCode->insert( QString( "hiragana" ), 182 );
00306   m_nameToKeyCode->insert( QString( "katakana" ), 183 );
00307   m_nameToKeyCode->insert( QString( "hiragana_katakana" ), 184 );
00308   m_nameToKeyCode->insert( QString( "zenkaku" ), 185 );
00309   m_nameToKeyCode->insert( QString( "hankaku" ), 186 );
00310   m_nameToKeyCode->insert( QString( "zenkaku_hankaku" ), 187 );
00311   m_nameToKeyCode->insert( QString( "touroku" ), 188 );
00312   m_nameToKeyCode->insert( QString( "massyo" ), 189 );
00313   m_nameToKeyCode->insert( QString( "kana_lock" ), 190 );
00314   m_nameToKeyCode->insert( QString( "kana_shift" ), 191 );
00315   m_nameToKeyCode->insert( QString( "eisu_shift" ), 192 );
00316   m_nameToKeyCode->insert( QString( "eisu_toggle" ), 193 );
00317   m_nameToKeyCode->insert( QString( "hangul" ), 194 );
00318   m_nameToKeyCode->insert( QString( "hangul_start" ), 195 );
00319   m_nameToKeyCode->insert( QString( "hangul_end" ), 196 );
00320   m_nameToKeyCode->insert( QString( "hangul_hanja" ), 197 );
00321   m_nameToKeyCode->insert( QString( "hangul_jamo" ), 198 );
00322   m_nameToKeyCode->insert( QString( "hangul_romaja" ), 199 );
00323   m_nameToKeyCode->insert( QString( "hangul_jeonja" ), 200 );
00324   m_nameToKeyCode->insert( QString( "hangul_banja" ), 201 );
00325   m_nameToKeyCode->insert( QString( "hangul_prehanja" ), 202 );
00326   m_nameToKeyCode->insert( QString( "hangul_posthanja" ), 203 );
00327   m_nameToKeyCode->insert( QString( "hangul_special" ), 204 );
00328   m_nameToKeyCode->insert( QString( "dead_grave" ), 205 );
00329   m_nameToKeyCode->insert( QString( "dead_acute" ), 206 );
00330   m_nameToKeyCode->insert( QString( "dead_circumflex" ), 207 );
00331   m_nameToKeyCode->insert( QString( "dead_tilde" ), 208 );
00332   m_nameToKeyCode->insert( QString( "dead_macron" ), 209 );
00333   m_nameToKeyCode->insert( QString( "dead_breve" ), 210 );
00334   m_nameToKeyCode->insert( QString( "dead_abovedot" ), 211 );
00335   m_nameToKeyCode->insert( QString( "dead_diaeresis" ), 212 );
00336   m_nameToKeyCode->insert( QString( "dead_abovering" ), 213 );
00337   m_nameToKeyCode->insert( QString( "dead_doubleacute" ), 214 );
00338   m_nameToKeyCode->insert( QString( "dead_caron" ), 215 );
00339   m_nameToKeyCode->insert( QString( "dead_cedilla" ), 216 );
00340   m_nameToKeyCode->insert( QString( "dead_ogonek" ), 217 );
00341   m_nameToKeyCode->insert( QString( "dead_iota" ), 218 );
00342   m_nameToKeyCode->insert( QString( "dead_voiced_sound" ), 219 );
00343   m_nameToKeyCode->insert( QString( "dead_semivoiced_sound" ), 220 );
00344   m_nameToKeyCode->insert( QString( "dead_belowdot" ), 221 );
00345   m_nameToKeyCode->insert( QString( "dead_hook" ), 222 );
00346   m_nameToKeyCode->insert( QString( "dead_horn" ), 223 );
00347   m_nameToKeyCode->insert( QString( "back" ), 224 );
00348   m_nameToKeyCode->insert( QString( "forward" ), 225 );
00349   m_nameToKeyCode->insert( QString( "stop" ), 226 );
00350   m_nameToKeyCode->insert( QString( "refresh" ), 227 );
00351   m_nameToKeyCode->insert( QString( "volumedown" ), 228 );
00352   m_nameToKeyCode->insert( QString( "volumemute" ), 229 );
00353   m_nameToKeyCode->insert( QString( "volumeup" ), 230 );
00354   m_nameToKeyCode->insert( QString( "bassboost" ), 231 );
00355   m_nameToKeyCode->insert( QString( "bassup" ), 232 );
00356   m_nameToKeyCode->insert( QString( "bassdown" ), 233 );
00357   m_nameToKeyCode->insert( QString( "trebleup" ), 234 );
00358   m_nameToKeyCode->insert( QString( "trebledown" ), 235 );
00359   m_nameToKeyCode->insert( QString( "mediaplay" ), 236 );
00360   m_nameToKeyCode->insert( QString( "mediastop" ), 237 );
00361   m_nameToKeyCode->insert( QString( "mediaprevious" ), 238 );
00362   m_nameToKeyCode->insert( QString( "medianext" ), 239 );
00363   m_nameToKeyCode->insert( QString( "mediarecord" ), 240 );
00364   m_nameToKeyCode->insert( QString( "homepage" ), 241 );
00365   m_nameToKeyCode->insert( QString( "favorites" ), 242 );
00366   m_nameToKeyCode->insert( QString( "search" ), 243 );
00367   m_nameToKeyCode->insert( QString( "standby" ), 244 );
00368   m_nameToKeyCode->insert( QString( "openurl" ), 245 );
00369   m_nameToKeyCode->insert( QString( "launchmail" ), 246 );
00370   m_nameToKeyCode->insert( QString( "launchmedia" ), 247 );
00371   m_nameToKeyCode->insert( QString( "launch0" ), 248 );
00372   m_nameToKeyCode->insert( QString( "launch1" ), 249 );
00373   m_nameToKeyCode->insert( QString( "launch2" ), 250 );
00374   m_nameToKeyCode->insert( QString( "launch3" ), 251 );
00375   m_nameToKeyCode->insert( QString( "launch4" ), 252 );
00376   m_nameToKeyCode->insert( QString( "launch5" ), 253 );
00377   m_nameToKeyCode->insert( QString( "launch6" ), 254 );
00378   m_nameToKeyCode->insert( QString( "launch7" ), 255 );
00379   m_nameToKeyCode->insert( QString( "launch8" ), 256 );
00380   m_nameToKeyCode->insert( QString( "launch9" ), 257 );
00381   m_nameToKeyCode->insert( QString( "launcha" ), 258 );
00382   m_nameToKeyCode->insert( QString( "launchb" ), 259 );
00383   m_nameToKeyCode->insert( QString( "launchc" ), 260 );
00384   m_nameToKeyCode->insert( QString( "launchd" ), 261 );
00385   m_nameToKeyCode->insert( QString( "launche" ), 262 );
00386   m_nameToKeyCode->insert( QString( "launchf" ), 263 );
00387   m_nameToKeyCode->insert( QString( "medialast" ), 264 );
00388   m_nameToKeyCode->insert( QString( "unknown" ), 265 );
00389   m_nameToKeyCode->insert( QString( "call" ), 266 );
00390   m_nameToKeyCode->insert( QString( "context1" ), 267 );
00391   m_nameToKeyCode->insert( QString( "context2" ), 268 );
00392   m_nameToKeyCode->insert( QString( "context3" ), 269 );
00393   m_nameToKeyCode->insert( QString( "context4" ), 270 );
00394   m_nameToKeyCode->insert( QString( "flip" ), 271 );
00395   m_nameToKeyCode->insert( QString( "hangup" ), 272 );
00396   m_nameToKeyCode->insert( QString( "no" ), 273 );
00397   m_nameToKeyCode->insert( QString( "select" ), 274 );
00398   m_nameToKeyCode->insert( QString( "yes" ), 275 );
00399   m_nameToKeyCode->insert( QString( "execute" ), 276 );
00400   m_nameToKeyCode->insert( QString( "printer" ), 277 );
00401   m_nameToKeyCode->insert( QString( "play" ), 278 );
00402   m_nameToKeyCode->insert( QString( "sleep" ), 279 );
00403   m_nameToKeyCode->insert( QString( "zoom" ), 280 );
00404   m_nameToKeyCode->insert( QString( "cancel" ), 281 );
00405 
00406   m_nameToKeyCode->insert( QString( "a" ), 282 );
00407   m_nameToKeyCode->insert( QString( "b" ), 283 );
00408   m_nameToKeyCode->insert( QString( "c" ), 284 );
00409   m_nameToKeyCode->insert( QString( "d" ), 285 );
00410   m_nameToKeyCode->insert( QString( "e" ), 286 );
00411   m_nameToKeyCode->insert( QString( "f" ), 287 );
00412   m_nameToKeyCode->insert( QString( "d" ), 288 );
00413   m_nameToKeyCode->insert( QString( "h" ), 289 );
00414   m_nameToKeyCode->insert( QString( "i" ), 290 );
00415   m_nameToKeyCode->insert( QString( "j" ), 291 );
00416   m_nameToKeyCode->insert( QString( "k" ), 292 );
00417   m_nameToKeyCode->insert( QString( "l" ), 293 );
00418   m_nameToKeyCode->insert( QString( "m" ), 294 );
00419   m_nameToKeyCode->insert( QString( "n" ), 295 );
00420   m_nameToKeyCode->insert( QString( "o" ), 296 );
00421   m_nameToKeyCode->insert( QString( "p" ), 297 );
00422   m_nameToKeyCode->insert( QString( "q" ), 298 );
00423   m_nameToKeyCode->insert( QString( "r" ), 299 );
00424   m_nameToKeyCode->insert( QString( "s" ), 300 );
00425   m_nameToKeyCode->insert( QString( "t" ), 301 );
00426   m_nameToKeyCode->insert( QString( "u" ), 302 );
00427   m_nameToKeyCode->insert( QString( "v" ), 303 );
00428   m_nameToKeyCode->insert( QString( "w" ), 304 );
00429   m_nameToKeyCode->insert( QString( "x" ), 305 );
00430   m_nameToKeyCode->insert( QString( "y" ), 306 );
00431   m_nameToKeyCode->insert( QString( "z" ), 307 );
00432   m_nameToKeyCode->insert( QString( "`" ), 308 );
00433   m_nameToKeyCode->insert( QString( "!" ), 309 );
00434   m_nameToKeyCode->insert( QString( "\"" ), 310 );
00435   m_nameToKeyCode->insert( QString( "$" ), 311 );
00436   m_nameToKeyCode->insert( QString( "%" ), 312 );
00437   m_nameToKeyCode->insert( QString( "^" ), 313 );
00438   m_nameToKeyCode->insert( QString( "&" ), 314 );
00439   m_nameToKeyCode->insert( QString( "*" ), 315 );
00440   m_nameToKeyCode->insert( QString( "(" ), 316 );
00441   m_nameToKeyCode->insert( QString( ")" ), 317 );
00442   m_nameToKeyCode->insert( QString( "-" ), 318 );
00443   m_nameToKeyCode->insert( QString( "_" ), 319 );
00444   m_nameToKeyCode->insert( QString( "=" ), 320 );
00445   m_nameToKeyCode->insert( QString( "+" ), 321 );
00446   m_nameToKeyCode->insert( QString( "[" ), 322 );
00447   m_nameToKeyCode->insert( QString( "]" ), 323 );
00448   m_nameToKeyCode->insert( QString( "{" ), 324 );
00449   m_nameToKeyCode->insert( QString( "}" ), 325 );
00450   m_nameToKeyCode->insert( QString( ":" ), 326 );
00451   m_nameToKeyCode->insert( QString( ";" ), 327 );
00452   m_nameToKeyCode->insert( QString( "@" ), 328 );
00453   m_nameToKeyCode->insert( QString( "'" ), 329 );
00454   m_nameToKeyCode->insert( QString( "#" ), 330 );
00455   m_nameToKeyCode->insert( QString( "~" ), 331 );
00456   m_nameToKeyCode->insert( QString( "\\" ), 332 );
00457   m_nameToKeyCode->insert( QString( "|" ), 333 );
00458   m_nameToKeyCode->insert( QString( "," ), 334 );
00459   m_nameToKeyCode->insert( QString( "." ), 335 );
00460   //m_nameToKeyCode->insert( QString( ">" ), 336 );
00461   m_nameToKeyCode->insert( QString( "/" ), 337 );
00462   m_nameToKeyCode->insert( QString( "?" ), 338 );
00463   m_nameToKeyCode->insert( QString( " " ), 339 );
00464   //m_nameToKeyCode->insert( QString( "<" ), 341 );
00465 
00466   foreach( const QString& str, m_nameToKeyCode->keys() ) {
00467       m_keyCodeToName->insert( m_nameToKeyCode->value( str ), str );
00468   }
00469 }
00470 
00471 QString KateViKeySequenceParser::qt2vi( int key ) const
00472 {
00473   return ( m_qt2katevi->contains( key ) ? m_qt2katevi->value( key ) : "invalid" );
00474 }
00475 
00476 int KateViKeySequenceParser::vi2qt( const QString &keypress ) const
00477 {
00478   return ( m_katevi2qt->contains( keypress ) ? m_katevi2qt->value( keypress ) : -1 );
00479 }
00480 
00481 
00482 const QString KateViKeySequenceParser::encodeKeySequence( const QString &keys ) const
00483 {
00484   QString encodedSequence;
00485   unsigned int keyCodeTemp = 0;
00486   int startOfBlock = -1;
00487 
00488   bool insideTag = false;
00489   QChar c;
00490   for ( int i = 0; i < keys.length(); i++ ) {
00491     c = keys.at( i );
00492     if ( insideTag ) {
00493       if ( c == '>' ) {
00494         QString temp;
00495         temp.setNum( 0xE000+keyCodeTemp, 16);
00496         QChar code(0xE000+keyCodeTemp );
00497         encodedSequence.append( code );
00498         keyCodeTemp = 0;
00499         insideTag = false;
00500         continue;
00501       }
00502       else {
00503         // contains modifiers
00504         if ( keys.mid( i ).indexOf( '-' ) != -1 && keys.mid( i ).indexOf( '-' ) < keys.mid( i ).indexOf( '>' ) ) {
00505           QStringList tokens = keys.mid( i, keys.mid( i ).indexOf( '>' ) ).toLower().split( '-' );
00506 
00507           foreach ( const QString& str, tokens ) {
00508             if ( str == "s" && ( keyCodeTemp & 0x01 ) != 0x1  )
00509               keyCodeTemp += 0x1;
00510             else if ( str == "c" && ( keyCodeTemp & 0x02 ) != 0x2 )
00511               keyCodeTemp += 0x2;
00512             else if ( str == "a" && ( keyCodeTemp & 0x04 ) != 0x4 )
00513               keyCodeTemp += 0x4;
00514             else if ( str == "m" && ( keyCodeTemp & 0x04 ) != 0x8 )
00515               keyCodeTemp += 0x8;
00516             else {
00517               if ( m_nameToKeyCode->contains( str ) || ( str.length() == 1 && str.at( 0 ).isLetterOrNumber() ) ) {
00518                 if ( m_nameToKeyCode->contains( str ) ) {
00519                   keyCodeTemp += m_nameToKeyCode->value( str ) * 0x10;
00520                 } else {
00521                   keyCodeTemp += str.at( 0 ).unicode() * 0x10;
00522                 }
00523               } else {
00524                 int endOfBlock = keys.indexOf( '>' );
00525                 if ( endOfBlock -= -1 ) {
00526                   endOfBlock = keys.length()-1;
00527                 }
00528                 encodedSequence.clear();
00529                 encodedSequence.append( m_nameToKeyCode->value( "invalid" ) );
00530                 break;
00531               }
00532             }
00533           }
00534         }
00535         else {
00536           QString str = keys.mid( i, keys.indexOf( '>', i )-i ).toLower();
00537           if ( keys.indexOf( '>', i ) != -1 && ( m_nameToKeyCode->contains( str ) || ( str.length() == 1 && str.at( 0 ).isLetterOrNumber() ) ) ) {
00538             if ( m_nameToKeyCode->contains( str ) ) {
00539               keyCodeTemp += m_nameToKeyCode->value( str ) * 0x10;
00540             } else {
00541               keyCodeTemp += str.at( 0 ).unicode() * 0x10;
00542             }
00543           } else {
00544             int endOfBlock = keys.indexOf( '>' );
00545             if ( endOfBlock -= -1 ) {
00546               endOfBlock = keys.length()-1;
00547             }
00548             encodedSequence.clear();
00549             keyCodeTemp = m_nameToKeyCode->value( "invalid" ) * 0x10;
00550           }
00551 
00552         }
00553         i += keys.mid( i, keys.mid( i ).indexOf( '>' ) ).length()-1;
00554       }
00555     }
00556     else {
00557       if ( c == '<' ) {
00558         // if there's no closing '>', or if there is an opening '<' before the next '>', interpret as a literal '<'
00559         QString rest = keys.mid( i );
00560         if ( rest.indexOf( '>', 1 ) == -1 || ( rest.indexOf( '<', 1 ) < rest.indexOf( '>', 1 ) && rest.indexOf( '<', 1 ) != -1 ) ) {
00561           encodedSequence.append( c );
00562           continue;
00563         }
00564         startOfBlock = i;
00565         insideTag = true;
00566         continue;
00567       } else {
00568         encodedSequence.append( c );
00569       }
00570     }
00571   }
00572 
00573   return encodedSequence;
00574 }
00575 
00576 const QString KateViKeySequenceParser::decodeKeySequence( const QString &keys ) const
00577 {
00578   QString ret;
00579 
00580   for ( int i = 0; i < keys.length(); i++ ) {
00581     QChar c = keys.at( i );
00582     int keycode = c.unicode();
00583 
00584     if ( ( keycode & 0xE000 ) != 0xE000  ) {
00585       ret.append( c );
00586     } else {
00587       ret.append( '<' );
00588 
00589       if ( ( keycode & 0x1 ) == 0x1 ) {
00590         ret.append( QLatin1String( "s-") );
00591         //keycode -= 0x1;
00592       }
00593       if ( ( keycode & 0x2 ) == 0x2 ) {
00594         ret.append( QLatin1String( "c-") );
00595         //keycode -= 0x2;
00596       }
00597       if ( ( keycode & 0x4 ) == 0x4 ) {
00598         ret.append( QLatin1String( "a-") );
00599         //keycode -= 0x4;
00600       }
00601       if ( ( keycode & 0x8 ) == 0x8 ) {
00602         ret.append( QLatin1String( "m-") );
00603         //keycode -= 0x8;
00604       }
00605 
00606       if ( ( keycode & 0xE000 ) == 0xE000  ) {
00607         ret.append( m_keyCodeToName->value( ( keycode-0xE000 )/0x10 ) );
00608       } else {
00609         ret.append( QChar( keycode ) );
00610       }
00611       ret.append( '>' );
00612     }
00613   }
00614 
00615   return ret;
00616 }
00617 
00618 char KateViKeySequenceParser::scanCodeToChar(quint32 code, Qt::KeyboardModifiers modifiers, bool isLetter) const
00619 {
00620     //Do not forget to ignore letters with shift. Should work with punctuation and special characters ($, ^) only.
00621     //any punctuation (without shift) that has different signs in different layouts should be added to the second switch.
00622     if ((modifiers & Qt::ShiftModifier) && !isLetter)
00623     {
00624         switch(code)
00625         {
00626         case 10:
00627             return '!';
00628         case 11:
00629             return '@';
00630         case 12:
00631             return '#';
00632         case 13:
00633             return '$';
00634         case 14:
00635             return '%';
00636         case 15:
00637             return '^';
00638         case 16:
00639             return '&';
00640         case 17:
00641             return '*';
00642         case 18:
00643             return '(';
00644         case 19:
00645             return ')';
00646         default:
00647             return '0';
00648         }
00649     }
00650     switch(code)
00651     {
00652         case 24:
00653             return 'q';
00654         case 25:
00655             return 'w';
00656         case 26:
00657             return 'e';
00658         case 27:
00659             return 'r';
00660         case 28:
00661             return 't';
00662         case 29:
00663             return 'y';
00664         case 30:
00665             return 'u';
00666         case 31:
00667             return 'i';
00668         case 32:
00669             return 'o';
00670         case 33:
00671             return 'p';
00672         case 34:
00673             return '[';
00674         case 35:
00675             return ']';
00676         case 38:
00677             return 'a';
00678         case 39:
00679             return 's';
00680         case 40:
00681             return 'd';
00682         case 41:
00683             return 'f';
00684         case 42:
00685             return 'g';
00686         case 43:
00687             return 'h';
00688         case 44:
00689             return 'j';
00690         case 45:
00691             return 'k';
00692         case 46:
00693             return 'l';
00694         case 47:
00695             return ';';
00696         case 48:
00697             return '\'';
00698         case 49:
00699             return '`';
00700         case 52:
00701             return 'z';
00702         case 53:
00703             return 'x';
00704         case 54:
00705             return 'c';
00706         case 55:
00707             return 'v';
00708         case 56:
00709             return 'b';
00710         case 57:
00711             return 'n';
00712         case 58:
00713             return 'm';
00714         case 59:
00715             return ',';
00716         case 60:
00717             return '.';
00718         case 61:
00719             return '/';
00720         default:
00721             return 0;
00722     }
00723     return 0;
00724 }
00725 
00726 const QChar KateViKeySequenceParser::KeyEventToQChar(int keyCode, const QString &text,
00727     Qt::KeyboardModifiers mods, quint32 nativeScanCode) const
00728 {
00729   QChar key;
00730 
00731   if ( !text.isEmpty() ) {
00732     key = text.at(0);
00733   }
00734 
00735   if ( text.isEmpty() || ( text.length() == 1 && text.at(0) < 0x20 )
00736       || ( mods != Qt::NoModifier && mods != Qt::ShiftModifier ) ) {
00737     QString keyPress;
00738 
00739     keyPress.append( '<' );
00740     keyPress.append( ( mods & Qt::ShiftModifier ) ? "s-" : "" );
00741     keyPress.append( ( mods & Qt::ControlModifier ) ? "c-" : "" );
00742     keyPress.append( ( mods & Qt::AltModifier ) ? "a-" : "" );
00743     keyPress.append( ( mods & Qt::MetaModifier ) ? "m-" : "" );
00744     keyPress.append( keyCode <= 0xFF ? QChar( keyCode ) : qt2vi( keyCode ) );
00745     keyPress.append( '>' );
00746 
00747     key = encodeKeySequence( keyPress ).at( 0 );
00748   } else {
00749       //maybe we have a non-latin letter, try to convert to latin charachter
00750       //note that non-latin letter in Latin layout can be a punctuation character (also some punctuation differs too)
00751       QChar tempChar(text.at(0));
00752       //don't touch latin keys
00753       if ((keyCode < Qt::Key_A || keyCode > Qt::Key_Z) && tempChar.isLetter()) {
00754           char ch = scanCodeToChar(nativeScanCode, mods, tempChar.isLetter());
00755           if (ch != 0) {
00756               key = QChar(ch);
00757               if (key.isLetter()) {
00758                 if (tempChar.isUpper()) {
00759                     key = QChar(ch).toUpper();
00760                 } else {
00761                     key = QChar(ch).toLower(); //scanCodeToChar returns lower, but we don't want to depend on it
00762                 }
00763               }
00764           }
00765           else {
00766               key = tempChar;
00767           }
00768       }
00769       else {
00770           key = tempChar;
00771       }
00772   }
00773 
00774   return key;
00775 }

Kate

Skip menu "Kate"
  • Main Page
  • 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