• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • applications API Reference
  • KDE Home
  • Contact Us
 

Kate

  • kde-4.14
  • applications
  • kate
  • part
  • vimode
katevikeyparser.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE libraries and the Kate part.
2  *
3  * Copyright (C) 2008 Erlend Hamberg <ehamberg@gmail.com>
4  * Copyright (C) 2008 Evgeniy Ivanov <powerfox@kde.ru>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Library General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Library General Public License for more details.
15  *
16  * You should have received a copy of the GNU Library General Public License
17  * along with this library; see the file COPYING.LIB. If not, write to
18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19  * Boston, MA 02110-1301, USA.
20  */
21 
22 #include "katevikeyparser.h"
23 #include <QStringList>
24 #include <QKeyEvent>
25 
26 KateViKeyParser* KateViKeyParser::m_instance = NULL;
27 
28 KateViKeyParser::KateViKeyParser()
29 {
30  m_qt2katevi = new QHash<int, QString>;
31  m_katevi2qt = new QHash<QString, int>;
32  m_nameToKeyCode = new QHash<QString, int>;
33  m_keyCodeToName = new QHash<int, QString>;
34 
35  initKeyTables();
36 }
37 
38 KateViKeyParser* KateViKeyParser::self()
39 {
40  if ( m_instance == NULL ) {
41  m_instance = new KateViKeyParser();
42  }
43 
44  return m_instance;
45 }
46 
47 void KateViKeyParser::initKeyTables()
48 {
49  m_qt2katevi->insert( Qt::Key_Escape, QString( "esc" ) );
50  m_qt2katevi->insert( Qt::Key_Tab, QString( "tab" ) );
51  m_qt2katevi->insert( Qt::Key_Backtab, QString( "backtab" ) );
52  m_qt2katevi->insert( Qt::Key_Backspace, QString( "backspace" ) );
53  m_qt2katevi->insert( Qt::Key_Return, QString( "return" ) );
54  m_qt2katevi->insert( Qt::Key_Enter, QString( "enter" ) );
55  m_qt2katevi->insert( Qt::Key_Insert, QString( "insert" ) );
56  m_qt2katevi->insert( Qt::Key_Delete, QString( "delete" ) );
57  m_qt2katevi->insert( Qt::Key_Pause, QString( "pause" ) );
58  m_qt2katevi->insert( Qt::Key_Print, QString( "print" ) );
59  m_qt2katevi->insert( Qt::Key_SysReq, QString( "sysreq" ) );
60  m_qt2katevi->insert( Qt::Key_Clear, QString( "clear" ) );
61  m_qt2katevi->insert( Qt::Key_Home, QString( "home" ) );
62  m_qt2katevi->insert( Qt::Key_End, QString( "end" ) );
63  m_qt2katevi->insert( Qt::Key_Left, QString( "left" ) );
64  m_qt2katevi->insert( Qt::Key_Up, QString( "up" ) );
65  m_qt2katevi->insert( Qt::Key_Right, QString( "right" ) );
66  m_qt2katevi->insert( Qt::Key_Down, QString( "down" ) );
67  m_qt2katevi->insert( Qt::Key_PageUp, QString( "pageup" ) );
68  m_qt2katevi->insert( Qt::Key_PageDown, QString( "pagedown" ) );
69  m_qt2katevi->insert( Qt::Key_Shift, QString( "shift" ) );
70  m_qt2katevi->insert( Qt::Key_Control, QString( "control" ) );
71  m_qt2katevi->insert( Qt::Key_Meta, QString( "meta" ) );
72  m_qt2katevi->insert( Qt::Key_Alt, QString( "alt" ) );
73  m_qt2katevi->insert( Qt::Key_AltGr, QString( "altgr" ) );
74  m_qt2katevi->insert( Qt::Key_CapsLock, QString( "capslock" ) );
75  m_qt2katevi->insert( Qt::Key_NumLock, QString( "numlock" ) );
76  m_qt2katevi->insert( Qt::Key_ScrollLock, QString( "scrolllock" ) );
77  m_qt2katevi->insert( Qt::Key_F1, QString( "f1" ) );
78  m_qt2katevi->insert( Qt::Key_F2, QString( "f2" ) );
79  m_qt2katevi->insert( Qt::Key_F3, QString( "f3" ) );
80  m_qt2katevi->insert( Qt::Key_F4, QString( "f4" ) );
81  m_qt2katevi->insert( Qt::Key_F5, QString( "f5" ) );
82  m_qt2katevi->insert( Qt::Key_F6, QString( "f6" ) );
83  m_qt2katevi->insert( Qt::Key_F7, QString( "f7" ) );
84  m_qt2katevi->insert( Qt::Key_F8, QString( "f8" ) );
85  m_qt2katevi->insert( Qt::Key_F9, QString( "f9" ) );
86  m_qt2katevi->insert( Qt::Key_F10, QString( "f10" ) );
87  m_qt2katevi->insert( Qt::Key_F11, QString( "f11" ) );
88  m_qt2katevi->insert( Qt::Key_F12, QString( "f12" ) );
89  m_qt2katevi->insert( Qt::Key_F13, QString( "f13" ) );
90  m_qt2katevi->insert( Qt::Key_F14, QString( "f14" ) );
91  m_qt2katevi->insert( Qt::Key_F15, QString( "f15" ) );
92  m_qt2katevi->insert( Qt::Key_F16, QString( "f16" ) );
93  m_qt2katevi->insert( Qt::Key_F17, QString( "f17" ) );
94  m_qt2katevi->insert( Qt::Key_F18, QString( "f18" ) );
95  m_qt2katevi->insert( Qt::Key_F19, QString( "f19" ) );
96  m_qt2katevi->insert( Qt::Key_F20, QString( "f20" ) );
97  m_qt2katevi->insert( Qt::Key_F21, QString( "f21" ) );
98  m_qt2katevi->insert( Qt::Key_F22, QString( "f22" ) );
99  m_qt2katevi->insert( Qt::Key_F23, QString( "f23" ) );
100  m_qt2katevi->insert( Qt::Key_F24, QString( "f24" ) );
101  m_qt2katevi->insert( Qt::Key_F25, QString( "f25" ) );
102  m_qt2katevi->insert( Qt::Key_F26, QString( "f26" ) );
103  m_qt2katevi->insert( Qt::Key_F27, QString( "f27" ) );
104  m_qt2katevi->insert( Qt::Key_F28, QString( "f28" ) );
105  m_qt2katevi->insert( Qt::Key_F29, QString( "f29" ) );
106  m_qt2katevi->insert( Qt::Key_F30, QString( "f30" ) );
107  m_qt2katevi->insert( Qt::Key_F31, QString( "f31" ) );
108  m_qt2katevi->insert( Qt::Key_F32, QString( "f32" ) );
109  m_qt2katevi->insert( Qt::Key_F33, QString( "f33" ) );
110  m_qt2katevi->insert( Qt::Key_F34, QString( "f34" ) );
111  m_qt2katevi->insert( Qt::Key_F35, QString( "f35" ) );
112  m_qt2katevi->insert( Qt::Key_Super_L, QString( "super_l" ) );
113  m_qt2katevi->insert( Qt::Key_Super_R, QString( "super_r" ) );
114  m_qt2katevi->insert( Qt::Key_Menu, QString( "menu" ) );
115  m_qt2katevi->insert( Qt::Key_Hyper_L, QString( "hyper_l" ) );
116  m_qt2katevi->insert( Qt::Key_Hyper_R, QString( "hyper_r" ) );
117  m_qt2katevi->insert( Qt::Key_Help, QString( "help" ) );
118  m_qt2katevi->insert( Qt::Key_Direction_L, QString( "direction_l" ) );
119  m_qt2katevi->insert( Qt::Key_Direction_R, QString( "direction_r" ) );
120  m_qt2katevi->insert( Qt::Key_Multi_key, QString( "multi_key" ) );
121  m_qt2katevi->insert( Qt::Key_Codeinput, QString( "codeinput" ) );
122  m_qt2katevi->insert( Qt::Key_SingleCandidate, QString( "singlecandidate" ) );
123  m_qt2katevi->insert( Qt::Key_MultipleCandidate, QString( "multiplecandidate" ) );
124  m_qt2katevi->insert( Qt::Key_PreviousCandidate, QString( "previouscandidate" ) );
125  m_qt2katevi->insert( Qt::Key_Mode_switch, QString( "mode_switch" ) );
126  m_qt2katevi->insert( Qt::Key_Kanji, QString( "kanji" ) );
127  m_qt2katevi->insert( Qt::Key_Muhenkan, QString( "muhenkan" ) );
128  m_qt2katevi->insert( Qt::Key_Henkan, QString( "henkan" ) );
129  m_qt2katevi->insert( Qt::Key_Romaji, QString( "romaji" ) );
130  m_qt2katevi->insert( Qt::Key_Hiragana, QString( "hiragana" ) );
131  m_qt2katevi->insert( Qt::Key_Katakana, QString( "katakana" ) );
132  m_qt2katevi->insert( Qt::Key_Hiragana_Katakana, QString( "hiragana_katakana" ) );
133  m_qt2katevi->insert( Qt::Key_Zenkaku, QString( "zenkaku" ) );
134  m_qt2katevi->insert( Qt::Key_Hankaku, QString( "hankaku" ) );
135  m_qt2katevi->insert( Qt::Key_Zenkaku_Hankaku, QString( "zenkaku_hankaku" ) );
136  m_qt2katevi->insert( Qt::Key_Touroku, QString( "touroku" ) );
137  m_qt2katevi->insert( Qt::Key_Massyo, QString( "massyo" ) );
138  m_qt2katevi->insert( Qt::Key_Kana_Lock, QString( "kana_lock" ) );
139  m_qt2katevi->insert( Qt::Key_Kana_Shift, QString( "kana_shift" ) );
140  m_qt2katevi->insert( Qt::Key_Eisu_Shift, QString( "eisu_shift" ) );
141  m_qt2katevi->insert( Qt::Key_Eisu_toggle, QString( "eisu_toggle" ) );
142  m_qt2katevi->insert( Qt::Key_Hangul, QString( "hangul" ) );
143  m_qt2katevi->insert( Qt::Key_Hangul_Start, QString( "hangul_start" ) );
144  m_qt2katevi->insert( Qt::Key_Hangul_End, QString( "hangul_end" ) );
145  m_qt2katevi->insert( Qt::Key_Hangul_Hanja, QString( "hangul_hanja" ) );
146  m_qt2katevi->insert( Qt::Key_Hangul_Jamo, QString( "hangul_jamo" ) );
147  m_qt2katevi->insert( Qt::Key_Hangul_Romaja, QString( "hangul_romaja" ) );
148  m_qt2katevi->insert( Qt::Key_Hangul_Jeonja, QString( "hangul_jeonja" ) );
149  m_qt2katevi->insert( Qt::Key_Hangul_Banja, QString( "hangul_banja" ) );
150  m_qt2katevi->insert( Qt::Key_Hangul_PreHanja, QString( "hangul_prehanja" ) );
151  m_qt2katevi->insert( Qt::Key_Hangul_PostHanja, QString( "hangul_posthanja" ) );
152  m_qt2katevi->insert( Qt::Key_Hangul_Special, QString( "hangul_special" ) );
153  m_qt2katevi->insert( Qt::Key_Dead_Grave, QString( "dead_grave" ) );
154  m_qt2katevi->insert( Qt::Key_Dead_Acute, QString( "dead_acute" ) );
155  m_qt2katevi->insert( Qt::Key_Dead_Circumflex, QString( "dead_circumflex" ) );
156  m_qt2katevi->insert( Qt::Key_Dead_Tilde, QString( "dead_tilde" ) );
157  m_qt2katevi->insert( Qt::Key_Dead_Macron, QString( "dead_macron" ) );
158  m_qt2katevi->insert( Qt::Key_Dead_Breve, QString( "dead_breve" ) );
159  m_qt2katevi->insert( Qt::Key_Dead_Abovedot, QString( "dead_abovedot" ) );
160  m_qt2katevi->insert( Qt::Key_Dead_Diaeresis, QString( "dead_diaeresis" ) );
161  m_qt2katevi->insert( Qt::Key_Dead_Abovering, QString( "dead_abovering" ) );
162  m_qt2katevi->insert( Qt::Key_Dead_Doubleacute, QString( "dead_doubleacute" ) );
163  m_qt2katevi->insert( Qt::Key_Dead_Caron, QString( "dead_caron" ) );
164  m_qt2katevi->insert( Qt::Key_Dead_Cedilla, QString( "dead_cedilla" ) );
165  m_qt2katevi->insert( Qt::Key_Dead_Ogonek, QString( "dead_ogonek" ) );
166  m_qt2katevi->insert( Qt::Key_Dead_Iota, QString( "dead_iota" ) );
167  m_qt2katevi->insert( Qt::Key_Dead_Voiced_Sound, QString( "dead_voiced_sound" ) );
168  m_qt2katevi->insert( Qt::Key_Dead_Semivoiced_Sound, QString( "dead_semivoiced_sound" ) );
169  m_qt2katevi->insert( Qt::Key_Dead_Belowdot, QString( "dead_belowdot" ) );
170  m_qt2katevi->insert( Qt::Key_Dead_Hook, QString( "dead_hook" ) );
171  m_qt2katevi->insert( Qt::Key_Dead_Horn, QString( "dead_horn" ) );
172  m_qt2katevi->insert( Qt::Key_Back, QString( "back" ) );
173  m_qt2katevi->insert( Qt::Key_Forward, QString( "forward" ) );
174  m_qt2katevi->insert( Qt::Key_Stop, QString( "stop" ) );
175  m_qt2katevi->insert( Qt::Key_Refresh, QString( "refresh" ) );
176  m_qt2katevi->insert( Qt::Key_VolumeDown, QString( "volumedown" ) );
177  m_qt2katevi->insert( Qt::Key_VolumeMute, QString( "volumemute" ) );
178  m_qt2katevi->insert( Qt::Key_VolumeUp, QString( "volumeup" ) );
179  m_qt2katevi->insert( Qt::Key_BassBoost, QString( "bassboost" ) );
180  m_qt2katevi->insert( Qt::Key_BassUp, QString( "bassup" ) );
181  m_qt2katevi->insert( Qt::Key_BassDown, QString( "bassdown" ) );
182  m_qt2katevi->insert( Qt::Key_TrebleUp, QString( "trebleup" ) );
183  m_qt2katevi->insert( Qt::Key_TrebleDown, QString( "trebledown" ) );
184  m_qt2katevi->insert( Qt::Key_MediaPlay, QString( "mediaplay" ) );
185  m_qt2katevi->insert( Qt::Key_MediaStop, QString( "mediastop" ) );
186  m_qt2katevi->insert( Qt::Key_MediaPrevious, QString( "mediaprevious" ) );
187  m_qt2katevi->insert( Qt::Key_MediaNext, QString( "medianext" ) );
188  m_qt2katevi->insert( Qt::Key_MediaRecord, QString( "mediarecord" ) );
189  m_qt2katevi->insert( Qt::Key_HomePage, QString( "homepage" ) );
190  m_qt2katevi->insert( Qt::Key_Favorites, QString( "favorites" ) );
191  m_qt2katevi->insert( Qt::Key_Search, QString( "search" ) );
192  m_qt2katevi->insert( Qt::Key_Standby, QString( "standby" ) );
193  m_qt2katevi->insert( Qt::Key_OpenUrl, QString( "openurl" ) );
194  m_qt2katevi->insert( Qt::Key_LaunchMail, QString( "launchmail" ) );
195  m_qt2katevi->insert( Qt::Key_LaunchMedia, QString( "launchmedia" ) );
196  m_qt2katevi->insert( Qt::Key_Launch0, QString( "launch0" ) );
197  m_qt2katevi->insert( Qt::Key_Launch1, QString( "launch1" ) );
198  m_qt2katevi->insert( Qt::Key_Launch2, QString( "launch2" ) );
199  m_qt2katevi->insert( Qt::Key_Launch3, QString( "launch3" ) );
200  m_qt2katevi->insert( Qt::Key_Launch4, QString( "launch4" ) );
201  m_qt2katevi->insert( Qt::Key_Launch5, QString( "launch5" ) );
202  m_qt2katevi->insert( Qt::Key_Launch6, QString( "launch6" ) );
203  m_qt2katevi->insert( Qt::Key_Launch7, QString( "launch7" ) );
204  m_qt2katevi->insert( Qt::Key_Launch8, QString( "launch8" ) );
205  m_qt2katevi->insert( Qt::Key_Launch9, QString( "launch9" ) );
206  m_qt2katevi->insert( Qt::Key_LaunchA, QString( "launcha" ) );
207  m_qt2katevi->insert( Qt::Key_LaunchB, QString( "launchb" ) );
208  m_qt2katevi->insert( Qt::Key_LaunchC, QString( "launchc" ) );
209  m_qt2katevi->insert( Qt::Key_LaunchD, QString( "launchd" ) );
210  m_qt2katevi->insert( Qt::Key_LaunchE, QString( "launche" ) );
211  m_qt2katevi->insert( Qt::Key_LaunchF, QString( "launchf" ) );
212  m_qt2katevi->insert( Qt::Key_MediaLast, QString( "medialast" ) );
213  m_qt2katevi->insert( Qt::Key_unknown, QString( "unknown" ) );
214  m_qt2katevi->insert( Qt::Key_Call, QString( "call" ) );
215  m_qt2katevi->insert( Qt::Key_Context1, QString( "context1" ) );
216  m_qt2katevi->insert( Qt::Key_Context2, QString( "context2" ) );
217  m_qt2katevi->insert( Qt::Key_Context3, QString( "context3" ) );
218  m_qt2katevi->insert( Qt::Key_Context4, QString( "context4" ) );
219  m_qt2katevi->insert( Qt::Key_Flip, QString( "flip" ) );
220  m_qt2katevi->insert( Qt::Key_Hangup, QString( "hangup" ) );
221  m_qt2katevi->insert( Qt::Key_No, QString( "no" ) );
222  m_qt2katevi->insert( Qt::Key_Select, QString( "select" ) );
223  m_qt2katevi->insert( Qt::Key_Yes, QString( "yes" ) );
224  m_qt2katevi->insert( Qt::Key_Execute, QString( "execute" ) );
225  m_qt2katevi->insert( Qt::Key_Printer, QString( "printer" ) );
226  m_qt2katevi->insert( Qt::Key_Play, QString( "play" ) );
227  m_qt2katevi->insert( Qt::Key_Sleep, QString( "sleep" ) );
228  m_qt2katevi->insert( Qt::Key_Zoom, QString( "zoom" ) );
229  m_qt2katevi->insert( Qt::Key_Cancel, QString( "cancel" ) );
230 
231  for (QHash<int, QString>::const_iterator i = m_qt2katevi->constBegin();
232  i != m_qt2katevi->constEnd(); ++i) {
233  m_katevi2qt->insert( i.value(), i.key() );
234  }
235  m_katevi2qt->insert( QString("cr"), Qt::Key_Enter);
236 
237  m_nameToKeyCode->insert( QString( "invalid" ), -1 );
238  m_nameToKeyCode->insert( QString( "esc" ), 1 );
239  m_nameToKeyCode->insert( QString( "tab" ), 2 );
240  m_nameToKeyCode->insert( QString( "backtab" ), 3 );
241  m_nameToKeyCode->insert( QString( "backspace" ), 4 );
242  m_nameToKeyCode->insert( QString( "return" ), 5 );
243  m_nameToKeyCode->insert( QString( "enter" ), 6 );
244  m_nameToKeyCode->insert( QString( "insert" ), 7 );
245  m_nameToKeyCode->insert( QString( "delete" ), 8 );
246  m_nameToKeyCode->insert( QString( "pause" ), 9 );
247  m_nameToKeyCode->insert( QString( "print" ), 10 );
248  m_nameToKeyCode->insert( QString( "sysreq" ), 11 );
249  m_nameToKeyCode->insert( QString( "clear" ), 12 );
250  m_nameToKeyCode->insert( QString( "home" ), 13 );
251  m_nameToKeyCode->insert( QString( "end" ), 14 );
252  m_nameToKeyCode->insert( QString( "left" ), 15 );
253  m_nameToKeyCode->insert( QString( "up" ), 16 );
254  m_nameToKeyCode->insert( QString( "right" ), 17 );
255  m_nameToKeyCode->insert( QString( "down" ), 18 );
256  m_nameToKeyCode->insert( QString( "pageup" ), 19 );
257  m_nameToKeyCode->insert( QString( "pagedown" ), 20 );
258  m_nameToKeyCode->insert( QString( "shift" ), 21 );
259  m_nameToKeyCode->insert( QString( "control" ), 22 );
260  m_nameToKeyCode->insert( QString( "meta" ), 23 );
261  m_nameToKeyCode->insert( QString( "alt" ), 24 );
262  m_nameToKeyCode->insert( QString( "altgr" ), 25 );
263  m_nameToKeyCode->insert( QString( "capslock" ), 26 );
264  m_nameToKeyCode->insert( QString( "numlock" ), 27 );
265  m_nameToKeyCode->insert( QString( "scrolllock" ), 28 );
266  m_nameToKeyCode->insert( QString( "f1" ), 29 );
267  m_nameToKeyCode->insert( QString( "f2" ), 30 );
268  m_nameToKeyCode->insert( QString( "f3" ), 31 );
269  m_nameToKeyCode->insert( QString( "f4" ), 32 );
270  m_nameToKeyCode->insert( QString( "f5" ), 33 );
271  m_nameToKeyCode->insert( QString( "f6" ), 34 );
272  m_nameToKeyCode->insert( QString( "f7" ), 35 );
273  m_nameToKeyCode->insert( QString( "f8" ), 36 );
274  m_nameToKeyCode->insert( QString( "f9" ), 37 );
275  m_nameToKeyCode->insert( QString( "f10" ), 38 );
276  m_nameToKeyCode->insert( QString( "f11" ), 39 );
277  m_nameToKeyCode->insert( QString( "f12" ), 40 );
278  m_nameToKeyCode->insert( QString( "f13" ), 41 );
279  m_nameToKeyCode->insert( QString( "f14" ), 42 );
280  m_nameToKeyCode->insert( QString( "f15" ), 43 );
281  m_nameToKeyCode->insert( QString( "f16" ), 44 );
282  m_nameToKeyCode->insert( QString( "f17" ), 45 );
283  m_nameToKeyCode->insert( QString( "f18" ), 46 );
284  m_nameToKeyCode->insert( QString( "f19" ), 47 );
285  m_nameToKeyCode->insert( QString( "f20" ), 48 );
286  m_nameToKeyCode->insert( QString( "f21" ), 49 );
287  m_nameToKeyCode->insert( QString( "f22" ), 50 );
288  m_nameToKeyCode->insert( QString( "f23" ), 51 );
289  m_nameToKeyCode->insert( QString( "f24" ), 52 );
290  m_nameToKeyCode->insert( QString( "f25" ), 53 );
291  m_nameToKeyCode->insert( QString( "f26" ), 54 );
292  m_nameToKeyCode->insert( QString( "f27" ), 55 );
293  m_nameToKeyCode->insert( QString( "f28" ), 56 );
294  m_nameToKeyCode->insert( QString( "f29" ), 57 );
295  m_nameToKeyCode->insert( QString( "f30" ), 58 );
296  m_nameToKeyCode->insert( QString( "f31" ), 59 );
297  m_nameToKeyCode->insert( QString( "f32" ), 60 );
298  m_nameToKeyCode->insert( QString( "f33" ), 61 );
299  m_nameToKeyCode->insert( QString( "f34" ), 62 );
300  m_nameToKeyCode->insert( QString( "f35" ), 63 );
301  m_nameToKeyCode->insert( QString( "super_l" ), 64 );
302  m_nameToKeyCode->insert( QString( "super_r" ), 65 );
303  m_nameToKeyCode->insert( QString( "menu" ), 66 );
304  m_nameToKeyCode->insert( QString( "hyper_l" ), 67 );
305  m_nameToKeyCode->insert( QString( "hyper_r" ), 68 );
306  m_nameToKeyCode->insert( QString( "help" ), 69 );
307  m_nameToKeyCode->insert( QString( "direction_l" ), 70 );
308  m_nameToKeyCode->insert( QString( "direction_r" ), 71 );
309  m_nameToKeyCode->insert( QString( "multi_key" ), 172 );
310  m_nameToKeyCode->insert( QString( "codeinput" ), 173 );
311  m_nameToKeyCode->insert( QString( "singlecandidate" ), 174 );
312  m_nameToKeyCode->insert( QString( "multiplecandidate" ), 175 );
313  m_nameToKeyCode->insert( QString( "previouscandidate" ), 176 );
314  m_nameToKeyCode->insert( QString( "mode_switch" ), 177 );
315  m_nameToKeyCode->insert( QString( "kanji" ), 178 );
316  m_nameToKeyCode->insert( QString( "muhenkan" ), 179 );
317  m_nameToKeyCode->insert( QString( "henkan" ), 180 );
318  m_nameToKeyCode->insert( QString( "romaji" ), 181 );
319  m_nameToKeyCode->insert( QString( "hiragana" ), 182 );
320  m_nameToKeyCode->insert( QString( "katakana" ), 183 );
321  m_nameToKeyCode->insert( QString( "hiragana_katakana" ), 184 );
322  m_nameToKeyCode->insert( QString( "zenkaku" ), 185 );
323  m_nameToKeyCode->insert( QString( "hankaku" ), 186 );
324  m_nameToKeyCode->insert( QString( "zenkaku_hankaku" ), 187 );
325  m_nameToKeyCode->insert( QString( "touroku" ), 188 );
326  m_nameToKeyCode->insert( QString( "massyo" ), 189 );
327  m_nameToKeyCode->insert( QString( "kana_lock" ), 190 );
328  m_nameToKeyCode->insert( QString( "kana_shift" ), 191 );
329  m_nameToKeyCode->insert( QString( "eisu_shift" ), 192 );
330  m_nameToKeyCode->insert( QString( "eisu_toggle" ), 193 );
331  m_nameToKeyCode->insert( QString( "hangul" ), 194 );
332  m_nameToKeyCode->insert( QString( "hangul_start" ), 195 );
333  m_nameToKeyCode->insert( QString( "hangul_end" ), 196 );
334  m_nameToKeyCode->insert( QString( "hangul_hanja" ), 197 );
335  m_nameToKeyCode->insert( QString( "hangul_jamo" ), 198 );
336  m_nameToKeyCode->insert( QString( "hangul_romaja" ), 199 );
337  m_nameToKeyCode->insert( QString( "hangul_jeonja" ), 200 );
338  m_nameToKeyCode->insert( QString( "hangul_banja" ), 201 );
339  m_nameToKeyCode->insert( QString( "hangul_prehanja" ), 202 );
340  m_nameToKeyCode->insert( QString( "hangul_posthanja" ), 203 );
341  m_nameToKeyCode->insert( QString( "hangul_special" ), 204 );
342  m_nameToKeyCode->insert( QString( "dead_grave" ), 205 );
343  m_nameToKeyCode->insert( QString( "dead_acute" ), 206 );
344  m_nameToKeyCode->insert( QString( "dead_circumflex" ), 207 );
345  m_nameToKeyCode->insert( QString( "dead_tilde" ), 208 );
346  m_nameToKeyCode->insert( QString( "dead_macron" ), 209 );
347  m_nameToKeyCode->insert( QString( "dead_breve" ), 210 );
348  m_nameToKeyCode->insert( QString( "dead_abovedot" ), 211 );
349  m_nameToKeyCode->insert( QString( "dead_diaeresis" ), 212 );
350  m_nameToKeyCode->insert( QString( "dead_abovering" ), 213 );
351  m_nameToKeyCode->insert( QString( "dead_doubleacute" ), 214 );
352  m_nameToKeyCode->insert( QString( "dead_caron" ), 215 );
353  m_nameToKeyCode->insert( QString( "dead_cedilla" ), 216 );
354  m_nameToKeyCode->insert( QString( "dead_ogonek" ), 217 );
355  m_nameToKeyCode->insert( QString( "dead_iota" ), 218 );
356  m_nameToKeyCode->insert( QString( "dead_voiced_sound" ), 219 );
357  m_nameToKeyCode->insert( QString( "dead_semivoiced_sound" ), 220 );
358  m_nameToKeyCode->insert( QString( "dead_belowdot" ), 221 );
359  m_nameToKeyCode->insert( QString( "dead_hook" ), 222 );
360  m_nameToKeyCode->insert( QString( "dead_horn" ), 223 );
361  m_nameToKeyCode->insert( QString( "back" ), 224 );
362  m_nameToKeyCode->insert( QString( "forward" ), 225 );
363  m_nameToKeyCode->insert( QString( "stop" ), 226 );
364  m_nameToKeyCode->insert( QString( "refresh" ), 227 );
365  m_nameToKeyCode->insert( QString( "volumedown" ), 228 );
366  m_nameToKeyCode->insert( QString( "volumemute" ), 229 );
367  m_nameToKeyCode->insert( QString( "volumeup" ), 230 );
368  m_nameToKeyCode->insert( QString( "bassboost" ), 231 );
369  m_nameToKeyCode->insert( QString( "bassup" ), 232 );
370  m_nameToKeyCode->insert( QString( "bassdown" ), 233 );
371  m_nameToKeyCode->insert( QString( "trebleup" ), 234 );
372  m_nameToKeyCode->insert( QString( "trebledown" ), 235 );
373  m_nameToKeyCode->insert( QString( "mediaplay" ), 236 );
374  m_nameToKeyCode->insert( QString( "mediastop" ), 237 );
375  m_nameToKeyCode->insert( QString( "mediaprevious" ), 238 );
376  m_nameToKeyCode->insert( QString( "medianext" ), 239 );
377  m_nameToKeyCode->insert( QString( "mediarecord" ), 240 );
378  m_nameToKeyCode->insert( QString( "homepage" ), 241 );
379  m_nameToKeyCode->insert( QString( "favorites" ), 242 );
380  m_nameToKeyCode->insert( QString( "search" ), 243 );
381  m_nameToKeyCode->insert( QString( "standby" ), 244 );
382  m_nameToKeyCode->insert( QString( "openurl" ), 245 );
383  m_nameToKeyCode->insert( QString( "launchmail" ), 246 );
384  m_nameToKeyCode->insert( QString( "launchmedia" ), 247 );
385  m_nameToKeyCode->insert( QString( "launch0" ), 248 );
386  m_nameToKeyCode->insert( QString( "launch1" ), 249 );
387  m_nameToKeyCode->insert( QString( "launch2" ), 250 );
388  m_nameToKeyCode->insert( QString( "launch3" ), 251 );
389  m_nameToKeyCode->insert( QString( "launch4" ), 252 );
390  m_nameToKeyCode->insert( QString( "launch5" ), 253 );
391  m_nameToKeyCode->insert( QString( "launch6" ), 254 );
392  m_nameToKeyCode->insert( QString( "launch7" ), 255 );
393  m_nameToKeyCode->insert( QString( "launch8" ), 256 );
394  m_nameToKeyCode->insert( QString( "launch9" ), 257 );
395  m_nameToKeyCode->insert( QString( "launcha" ), 258 );
396  m_nameToKeyCode->insert( QString( "launchb" ), 259 );
397  m_nameToKeyCode->insert( QString( "launchc" ), 260 );
398  m_nameToKeyCode->insert( QString( "launchd" ), 261 );
399  m_nameToKeyCode->insert( QString( "launche" ), 262 );
400  m_nameToKeyCode->insert( QString( "launchf" ), 263 );
401  m_nameToKeyCode->insert( QString( "medialast" ), 264 );
402  m_nameToKeyCode->insert( QString( "unknown" ), 265 );
403  m_nameToKeyCode->insert( QString( "call" ), 266 );
404  m_nameToKeyCode->insert( QString( "context1" ), 267 );
405  m_nameToKeyCode->insert( QString( "context2" ), 268 );
406  m_nameToKeyCode->insert( QString( "context3" ), 269 );
407  m_nameToKeyCode->insert( QString( "context4" ), 270 );
408  m_nameToKeyCode->insert( QString( "flip" ), 271 );
409  m_nameToKeyCode->insert( QString( "hangup" ), 272 );
410  m_nameToKeyCode->insert( QString( "no" ), 273 );
411  m_nameToKeyCode->insert( QString( "select" ), 274 );
412  m_nameToKeyCode->insert( QString( "yes" ), 275 );
413  m_nameToKeyCode->insert( QString( "execute" ), 276 );
414  m_nameToKeyCode->insert( QString( "printer" ), 277 );
415  m_nameToKeyCode->insert( QString( "play" ), 278 );
416  m_nameToKeyCode->insert( QString( "sleep" ), 279 );
417  m_nameToKeyCode->insert( QString( "zoom" ), 280 );
418  m_nameToKeyCode->insert( QString( "cancel" ), 281 );
419 
420  m_nameToKeyCode->insert( QString( "a" ), 282 );
421  m_nameToKeyCode->insert( QString( "b" ), 283 );
422  m_nameToKeyCode->insert( QString( "c" ), 284 );
423  m_nameToKeyCode->insert( QString( "d" ), 285 );
424  m_nameToKeyCode->insert( QString( "e" ), 286 );
425  m_nameToKeyCode->insert( QString( "f" ), 287 );
426  m_nameToKeyCode->insert( QString( "g" ), 288 );
427  m_nameToKeyCode->insert( QString( "h" ), 289 );
428  m_nameToKeyCode->insert( QString( "i" ), 290 );
429  m_nameToKeyCode->insert( QString( "j" ), 291 );
430  m_nameToKeyCode->insert( QString( "k" ), 292 );
431  m_nameToKeyCode->insert( QString( "l" ), 293 );
432  m_nameToKeyCode->insert( QString( "m" ), 294 );
433  m_nameToKeyCode->insert( QString( "n" ), 295 );
434  m_nameToKeyCode->insert( QString( "o" ), 296 );
435  m_nameToKeyCode->insert( QString( "p" ), 297 );
436  m_nameToKeyCode->insert( QString( "q" ), 298 );
437  m_nameToKeyCode->insert( QString( "r" ), 299 );
438  m_nameToKeyCode->insert( QString( "s" ), 300 );
439  m_nameToKeyCode->insert( QString( "t" ), 301 );
440  m_nameToKeyCode->insert( QString( "u" ), 302 );
441  m_nameToKeyCode->insert( QString( "v" ), 303 );
442  m_nameToKeyCode->insert( QString( "w" ), 304 );
443  m_nameToKeyCode->insert( QString( "x" ), 305 );
444  m_nameToKeyCode->insert( QString( "y" ), 306 );
445  m_nameToKeyCode->insert( QString( "z" ), 307 );
446  m_nameToKeyCode->insert( QString( "`" ), 308 );
447  m_nameToKeyCode->insert( QString( "!" ), 309 );
448  m_nameToKeyCode->insert( QString( "\"" ), 310 );
449  m_nameToKeyCode->insert( QString( "$" ), 311 );
450  m_nameToKeyCode->insert( QString( "%" ), 312 );
451  m_nameToKeyCode->insert( QString( "^" ), 313 );
452  m_nameToKeyCode->insert( QString( "&" ), 314 );
453  m_nameToKeyCode->insert( QString( "*" ), 315 );
454  m_nameToKeyCode->insert( QString( "(" ), 316 );
455  m_nameToKeyCode->insert( QString( ")" ), 317 );
456  m_nameToKeyCode->insert( QString( "-" ), 318 );
457  m_nameToKeyCode->insert( QString( "_" ), 319 );
458  m_nameToKeyCode->insert( QString( "=" ), 320 );
459  m_nameToKeyCode->insert( QString( "+" ), 321 );
460  m_nameToKeyCode->insert( QString( "[" ), 322 );
461  m_nameToKeyCode->insert( QString( "]" ), 323 );
462  m_nameToKeyCode->insert( QString( "{" ), 324 );
463  m_nameToKeyCode->insert( QString( "}" ), 325 );
464  m_nameToKeyCode->insert( QString( ":" ), 326 );
465  m_nameToKeyCode->insert( QString( ";" ), 327 );
466  m_nameToKeyCode->insert( QString( "@" ), 328 );
467  m_nameToKeyCode->insert( QString( "'" ), 329 );
468  m_nameToKeyCode->insert( QString( "#" ), 330 );
469  m_nameToKeyCode->insert( QString( "~" ), 331 );
470  m_nameToKeyCode->insert( QString( "\\" ), 332 );
471  m_nameToKeyCode->insert( QString( "|" ), 333 );
472  m_nameToKeyCode->insert( QString( "," ), 334 );
473  m_nameToKeyCode->insert( QString( "." ), 335 );
474  //m_nameToKeyCode->insert( QString( ">" ), 336 );
475  m_nameToKeyCode->insert( QString( "/" ), 337 );
476  m_nameToKeyCode->insert( QString( "?" ), 338 );
477  m_nameToKeyCode->insert( QString( " " ), 339 );
478  //m_nameToKeyCode->insert( QString( "<" ), 341 );
479  m_nameToKeyCode->insert( QString("0"), 340);
480  m_nameToKeyCode->insert( QString("1"), 341);
481  m_nameToKeyCode->insert( QString("2"), 342);
482  m_nameToKeyCode->insert( QString("3"), 343);
483  m_nameToKeyCode->insert( QString("4"), 344);
484  m_nameToKeyCode->insert( QString("5"), 345);
485  m_nameToKeyCode->insert( QString("6"), 346);
486  m_nameToKeyCode->insert( QString("7"), 347);
487  m_nameToKeyCode->insert( QString("8"), 348);
488  m_nameToKeyCode->insert( QString("9"), 349);
489  m_nameToKeyCode->insert( QString("cr"), 350);
490 
491 
492  for (QHash<QString, int>::const_iterator i = m_nameToKeyCode->constBegin();
493  i != m_nameToKeyCode->constEnd(); ++i) {
494  m_keyCodeToName->insert( i.value(), i.key() );
495  }
496 }
497 
498 QString KateViKeyParser::qt2vi( int key ) const
499 {
500  return ( m_qt2katevi->contains( key ) ? m_qt2katevi->value( key ) : "invalid" );
501 }
502 
503 int KateViKeyParser::vi2qt( const QString &keypress ) const
504 {
505  return ( m_katevi2qt->contains( keypress ) ? m_katevi2qt->value( keypress ) : -1 );
506 }
507 
508 
509 int KateViKeyParser::encoded2qt(const QString &keypress) const
510 {
511  QString key = KateViKeyParser::self()->decodeKeySequence(keypress);
512  if (key.length() > 2 && key[0] == QLatin1Char('<') &&
513  key[key.length() - 1] == QLatin1Char('>')) {
514 
515  key = key.mid(1, key.length() - 2);
516  }
517  return (m_katevi2qt->contains(key) ? m_katevi2qt->value(key) : -1);
518 }
519 
520 const QString KateViKeyParser::encodeKeySequence( const QString &keys ) const
521 {
522  QString encodedSequence;
523  unsigned int keyCodeTemp = 0;
524 
525  bool insideTag = false;
526  QChar c;
527  for ( int i = 0; i < keys.length(); i++ ) {
528  c = keys.at( i );
529  if ( insideTag ) {
530  if ( c == '>' ) {
531  QString temp;
532  temp.setNum( 0xE000+keyCodeTemp, 16);
533  QChar code(0xE000+keyCodeTemp );
534  encodedSequence.append( code );
535  keyCodeTemp = 0;
536  insideTag = false;
537  continue;
538  }
539  else {
540  // contains modifiers
541  if ( keys.mid( i ).indexOf( '-' ) != -1 && keys.mid( i ).indexOf( '-' ) < keys.mid( i ).indexOf( '>' ) ) {
542  // Perform something similar to a split on '-', except that we want to keep the occurrences of '-'
543  // e.g. <c-s-a> will equate to the list of tokens "c-", "s-", "a".
544  // A straight split on '-' would give us "c", "s", "a", in which case we lose the piece of information that
545  // 'a' is just the 'a' key, not the 'alt' modifier.
546  const QString untilClosing = keys.mid( i, keys.mid( i ).indexOf( '>' ) ).toLower();
547  QStringList tokens;
548  int currentPos = 0;
549  int nextHypen = -1;
550  while ((nextHypen = untilClosing.indexOf(QChar('-'), currentPos)) != -1)
551  {
552  tokens << untilClosing.mid(currentPos, nextHypen - currentPos + 1);
553  currentPos = nextHypen + 1;
554  }
555  tokens << untilClosing.mid(currentPos);
556 
557  foreach ( const QString& str, tokens ) {
558  if ( str == "s-" && ( keyCodeTemp & 0x01 ) != 0x1 )
559  keyCodeTemp += 0x1;
560  else if ( str == "c-" && ( keyCodeTemp & 0x02 ) != 0x2 )
561  keyCodeTemp += 0x2;
562  else if ( str == "a-" && ( keyCodeTemp & 0x04 ) != 0x4 )
563  keyCodeTemp += 0x4;
564  else if ( str == "m-" && ( keyCodeTemp & 0x08 ) != 0x8 )
565  keyCodeTemp += 0x8;
566  else {
567  if ( m_nameToKeyCode->contains( str ) || ( str.length() == 1 && str.at( 0 ).isLetterOrNumber() ) ) {
568  if ( m_nameToKeyCode->contains( str ) ) {
569  keyCodeTemp += m_nameToKeyCode->value( str ) * 0x10;
570  } else {
571  keyCodeTemp += str.at( 0 ).unicode() * 0x10;
572  }
573  } else {
574  int endOfBlock = keys.indexOf( '>' );
575  if ( endOfBlock -= -1 ) {
576  endOfBlock = keys.length()-1;
577  }
578  encodedSequence.clear();
579  encodedSequence.append( m_nameToKeyCode->value( "invalid" ) );
580  break;
581  }
582  }
583  }
584  }
585  else {
586  QString str = keys.mid( i, keys.indexOf( '>', i )-i ).toLower();
587  if ( keys.indexOf( '>', i ) != -1 && ( m_nameToKeyCode->contains( str ) || ( str.length() == 1 && str.at( 0 ).isLetterOrNumber() ) ) ) {
588  if ( m_nameToKeyCode->contains( str ) ) {
589  keyCodeTemp += m_nameToKeyCode->value( str ) * 0x10;
590  } else {
591  keyCodeTemp += str.at( 0 ).unicode() * 0x10;
592  }
593  } else {
594  int endOfBlock = keys.indexOf( '>' );
595  if ( endOfBlock -= -1 ) {
596  endOfBlock = keys.length()-1;
597  }
598  encodedSequence.clear();
599  keyCodeTemp = m_nameToKeyCode->value( "invalid" ) * 0x10;
600  }
601 
602  }
603  i += keys.mid( i, keys.mid( i ).indexOf( '>' ) ).length()-1;
604  }
605  }
606  else {
607  if ( c == '<' ) {
608  // If there's no closing '>', or if there is an opening '<' before the next '>', interpret as a literal '<'
609  // If we are <space>, encode as a literal " ".
610  QString rest = keys.mid( i );
611  if (rest.indexOf('>', 1) != -1 && rest.mid(1, rest.indexOf('>', 1) - 1) == "space")
612  {
613  encodedSequence.append(" ");
614  i += rest.indexOf('>', 1);
615  continue;
616  }
617  else if ( rest.indexOf( '>', 1 ) == -1 || ( rest.indexOf( '<', 1 ) < rest.indexOf( '>', 1 ) && rest.indexOf( '<', 1 ) != -1 ) ) {
618  encodedSequence.append( c );
619  continue;
620  }
621  insideTag = true;
622  continue;
623  } else {
624  encodedSequence.append( c );
625  }
626  }
627  }
628 
629  return encodedSequence;
630 }
631 
632 const QString KateViKeyParser::decodeKeySequence( const QString &keys ) const
633 {
634  QString ret;
635 
636  for ( int i = 0; i < keys.length(); i++ ) {
637  QChar c = keys.at( i );
638  int keycode = c.unicode();
639 
640  if ( ( keycode & 0xE000 ) != 0xE000 ) {
641  ret.append( c );
642  } else {
643  ret.append( '<' );
644 
645  if ( ( keycode & 0x1 ) == 0x1 ) {
646  ret.append( QLatin1String( "s-") );
647  //keycode -= 0x1;
648  }
649  if ( ( keycode & 0x2 ) == 0x2 ) {
650  ret.append( QLatin1String( "c-") );
651  //keycode -= 0x2;
652  }
653  if ( ( keycode & 0x4 ) == 0x4 ) {
654  ret.append( QLatin1String( "a-") );
655  //keycode -= 0x4;
656  }
657  if ( ( keycode & 0x8 ) == 0x8 ) {
658  ret.append( QLatin1String( "m-") );
659  //keycode -= 0x8;
660  }
661 
662  if ( ( keycode & 0xE000 ) == 0xE000 ) {
663  ret.append( m_keyCodeToName->value( ( keycode-0xE000 )/0x10 ) );
664  } else {
665  ret.append( QChar( keycode ) );
666  }
667  ret.append( '>' );
668  }
669  }
670 
671  return ret;
672 }
673 
674 const QChar KateViKeyParser::KeyEventToQChar(const QKeyEvent& keyEvent)
675 {
676  const int keyCode = keyEvent.key();
677  const QString &text = keyEvent.text();
678  const Qt::KeyboardModifiers mods = keyEvent.modifiers();
679 
680  // If previous key press was AltGr, return key value right away and don't go
681  // down the "handle modifiers" code path. AltGr is really confusing...
682  //if ( m_altGrPressed ) {
683  if ( mods & Qt::GroupSwitchModifier ) {
684  return ( !text.isEmpty() ) ? text.at(0) : QChar();
685  }
686 
687  if ( text.isEmpty() || ( text.length() == 1 && text.at(0) < 0x20 ) || keyCode == Qt::Key_Delete
688  || ( mods != Qt::NoModifier && mods != Qt::ShiftModifier && mods != Qt::KeypadModifier) ) {
689  QString keyPress;
690 
691  keyPress.append( '<' );
692  keyPress.append( ( mods & Qt::ShiftModifier ) ? "s-" : "" );
693  keyPress.append( ( mods & Qt::ControlModifier ) ? "c-" : "" );
694  keyPress.append( ( mods & Qt::AltModifier ) ? "a-" : "" );
695  keyPress.append( ( mods & Qt::MetaModifier ) ? "m-" : "" );
696  keyPress.append( keyCode <= 0xFF ? QChar( keyCode ) : qt2vi( keyCode ) );
697  keyPress.append( '>' );
698 
699  return encodeKeySequence( keyPress ).at( 0 );
700  } else {
701  return text.at(0);
702  }
703 }
QString::indexOf
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
QKeyEvent::modifiers
Qt::KeyboardModifiers modifiers() const
QString::append
QString & append(QChar ch)
QHash::insert
iterator insert(const Key &key, const T &value)
QChar
KateViKeyParser::qt2vi
QString qt2vi(int key) const
Definition: katevikeyparser.cpp:498
KateViKeyParser::KeyEventToQChar
const QChar KeyEventToQChar(const QKeyEvent &keyEvent)
Definition: katevikeyparser.cpp:674
QString::clear
void clear()
QHash::constEnd
const_iterator constEnd() const
QHash< int, QString >
QString::isEmpty
bool isEmpty() const
KateViKeyParser::decodeKeySequence
const QString decodeKeySequence(const QString &keys) const
Definition: katevikeyparser.cpp:632
QKeyEvent::text
QString text() const
QString
QChar::unicode
ushort unicode() const
QStringList
KateViKeyParser::encodeKeySequence
const QString encodeKeySequence(const QString &keys) const
Definition: katevikeyparser.cpp:520
QHash::value
const T value(const Key &key) const
QKeyEvent::key
int key() const
QLatin1Char
katevikeyparser.h
QKeyEvent
QHash::constBegin
const_iterator constBegin() const
QString::mid
QString mid(int position, int n) const
QLatin1String
KateViKeyParser::encoded2qt
int encoded2qt(const QString &keypress) const
Definition: katevikeyparser.cpp:509
QString::setNum
QString & setNum(short n, int base)
QString::at
const QChar at(int position) const
KateViKeyParser
for encoding keypresses w/ modifiers into an internal QChar representation and back again to a descri...
Definition: katevikeyparser.h:37
QString::length
int length() const
QHash::contains
bool contains(const Key &key) const
KateViKeyParser::self
static KateViKeyParser * self()
Definition: katevikeyparser.cpp:38
KateViKeyParser::vi2qt
int vi2qt(const QString &keypress) const
Definition: katevikeyparser.cpp:503
QChar::isLetterOrNumber
bool isLetterOrNumber() const
Qt::KeyboardModifiers
typedef KeyboardModifiers
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Sat May 9 2020 03:56:59 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

Kate

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

applications API Reference

Skip menu "applications API Reference"
  •   kate
  •       kate
  •   KTextEditor
  •   Kate
  • Konsole

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal