src/gui/kernel/qkeymapper_x11.cpp File Reference

#include "qkeymapper_p.h"
#include "qdebug.h"
#include "qtextcodec.h"
#include "qwidget.h"
#include "qapplication_p.h"
#include "qevent_p.h"
#include "qt_x11_p.h"
#include <X11/XKBlib.h>
#include <X11/keysymdef.h>
#include <ctype.h>
#include "qkeymapper_x11_p.cpp"

Include dependency graph for qkeymapper_x11.cpp:

Go to the source code of this file.

Classes

struct  qt_auto_repeat_data

Defines

#define XK_MISCELLANY
#define XK_LATIN1
#define XK_KOREAN
#define XK_XKB_KEYS
#define SETMASK(sym, mask)
#define XK_ISO_Left_Tab   0xFE20
#define XK_dead_hook   0xFE61
#define XK_dead_horn   0xFE62
#define XK_Codeinput   0xFF37
#define XK_Kanji_Bangou   0xFF37
#define XK_KP_Home   0xFF95
#define XK_KP_Left   0xFF96
#define XK_KP_Up   0xFF97
#define XK_KP_Right   0xFF98
#define XK_KP_Down   0xFF99
#define XK_KP_Prior   0xFF9A
#define XK_KP_Next   0xFF9B
#define XK_KP_End   0xFF9C
#define XK_KP_Insert   0xFF9E
#define XK_KP_Delete   0xFF9F
#define XF86XK_Standby   0x1008FF10
#define XF86XK_AudioLowerVolume   0x1008FF11
#define XF86XK_AudioMute   0x1008FF12
#define XF86XK_AudioRaiseVolume   0x1008FF13
#define XF86XK_AudioPlay   0x1008FF14
#define XF86XK_AudioStop   0x1008FF15
#define XF86XK_AudioPrev   0x1008FF16
#define XF86XK_AudioNext   0x1008FF17
#define XF86XK_HomePage   0x1008FF18
#define XF86XK_Calculator   0x1008FF1D
#define XF86XK_Mail   0x1008FF19
#define XF86XK_Start   0x1008FF1A
#define XF86XK_Search   0x1008FF1B
#define XF86XK_AudioRecord   0x1008FF1C
#define XF86XK_Back   0x1008FF26
#define XF86XK_Forward   0x1008FF27
#define XF86XK_Stop   0x1008FF28
#define XF86XK_Refresh   0x1008FF29
#define XF86XK_Favorites   0x1008FF30
#define XF86XK_AudioPause   0x1008FF31
#define XF86XK_AudioMedia   0x1008FF32
#define XF86XK_MyComputer   0x1008FF33
#define XF86XK_OpenURL   0x1008FF38
#define XF86XK_Launch0   0x1008FF40
#define XF86XK_Launch1   0x1008FF41
#define XF86XK_Launch2   0x1008FF42
#define XF86XK_Launch3   0x1008FF43
#define XF86XK_Launch4   0x1008FF44
#define XF86XK_Launch5   0x1008FF45
#define XF86XK_Launch6   0x1008FF46
#define XF86XK_Launch7   0x1008FF47
#define XF86XK_Launch8   0x1008FF48
#define XF86XK_Launch9   0x1008FF49
#define XF86XK_LaunchA   0x1008FF4A
#define XF86XK_LaunchB   0x1008FF4B
#define XF86XK_LaunchC   0x1008FF4C
#define XF86XK_LaunchD   0x1008FF4D
#define XF86XK_LaunchE   0x1008FF4E
#define XF86XK_LaunchF   0x1008FF4F

Enumerations

enum  
enum  

Functions

static void getLocaleAndDirection (QLocale *locale, Qt::LayoutDirection *direction, const QByteArray &layoutName, const QByteArray &variantName)
bool qt_sendSpontaneousEvent (QObject *, QEvent *)
static int qt_XTranslateKey (register QXCoreDesc *dpy, KeyCode keycode, register unsigned int modifiers, unsigned int *modifiers_return, KeySym *keysym_return)
static QString translateKeySym (KeySym keysym, uint xmodifiers, int &code, Qt::KeyboardModifiers &modifiers, QByteArray &chars, int &count)
static int translateKeySym (uint key)
static Bool qt_keypress_scanner (Display *, XEvent *event, XPointer arg)
static Bool qt_keyrelease_scanner (Display *, XEvent *event, XPointer arg)

Variables

uchar qt_alt_mask
uchar qt_meta_mask
uchar qt_super_mask
uchar qt_hyper_mask
uchar qt_mode_switch_mask
uchar qt_num_lock_mask = 0
bool qt_sm_blockUserInput
static const unsigned int KeyTbl []


Define Documentation

#define SETMASK ( sym,
mask   ) 

Definition at line 81 of file qkeymapper_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings().

#define XF86XK_AudioLowerVolume   0x1008FF11

Definition at line 674 of file qkeymapper_x11.cpp.

#define XF86XK_AudioMedia   0x1008FF32

Definition at line 693 of file qkeymapper_x11.cpp.

#define XF86XK_AudioMute   0x1008FF12

Definition at line 675 of file qkeymapper_x11.cpp.

#define XF86XK_AudioNext   0x1008FF17

Definition at line 680 of file qkeymapper_x11.cpp.

#define XF86XK_AudioPause   0x1008FF31

Definition at line 692 of file qkeymapper_x11.cpp.

#define XF86XK_AudioPlay   0x1008FF14

Definition at line 677 of file qkeymapper_x11.cpp.

#define XF86XK_AudioPrev   0x1008FF16

Definition at line 679 of file qkeymapper_x11.cpp.

#define XF86XK_AudioRaiseVolume   0x1008FF13

Definition at line 676 of file qkeymapper_x11.cpp.

#define XF86XK_AudioRecord   0x1008FF1C

Definition at line 686 of file qkeymapper_x11.cpp.

#define XF86XK_AudioStop   0x1008FF15

Definition at line 678 of file qkeymapper_x11.cpp.

#define XF86XK_Back   0x1008FF26

Definition at line 687 of file qkeymapper_x11.cpp.

#define XF86XK_Calculator   0x1008FF1D

Definition at line 682 of file qkeymapper_x11.cpp.

#define XF86XK_Favorites   0x1008FF30

Definition at line 691 of file qkeymapper_x11.cpp.

#define XF86XK_Forward   0x1008FF27

Definition at line 688 of file qkeymapper_x11.cpp.

#define XF86XK_HomePage   0x1008FF18

Definition at line 681 of file qkeymapper_x11.cpp.

#define XF86XK_Launch0   0x1008FF40

Definition at line 696 of file qkeymapper_x11.cpp.

#define XF86XK_Launch1   0x1008FF41

Definition at line 697 of file qkeymapper_x11.cpp.

#define XF86XK_Launch2   0x1008FF42

Definition at line 698 of file qkeymapper_x11.cpp.

#define XF86XK_Launch3   0x1008FF43

Definition at line 699 of file qkeymapper_x11.cpp.

#define XF86XK_Launch4   0x1008FF44

Definition at line 700 of file qkeymapper_x11.cpp.

#define XF86XK_Launch5   0x1008FF45

Definition at line 701 of file qkeymapper_x11.cpp.

#define XF86XK_Launch6   0x1008FF46

Definition at line 702 of file qkeymapper_x11.cpp.

#define XF86XK_Launch7   0x1008FF47

Definition at line 703 of file qkeymapper_x11.cpp.

#define XF86XK_Launch8   0x1008FF48

Definition at line 704 of file qkeymapper_x11.cpp.

#define XF86XK_Launch9   0x1008FF49

Definition at line 705 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchA   0x1008FF4A

Definition at line 706 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchB   0x1008FF4B

Definition at line 707 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchC   0x1008FF4C

Definition at line 708 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchD   0x1008FF4D

Definition at line 709 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchE   0x1008FF4E

Definition at line 710 of file qkeymapper_x11.cpp.

#define XF86XK_LaunchF   0x1008FF4F

Definition at line 711 of file qkeymapper_x11.cpp.

#define XF86XK_Mail   0x1008FF19

Definition at line 683 of file qkeymapper_x11.cpp.

#define XF86XK_MyComputer   0x1008FF33

Definition at line 694 of file qkeymapper_x11.cpp.

#define XF86XK_OpenURL   0x1008FF38

Definition at line 695 of file qkeymapper_x11.cpp.

#define XF86XK_Refresh   0x1008FF29

Definition at line 690 of file qkeymapper_x11.cpp.

#define XF86XK_Search   0x1008FF1B

Definition at line 685 of file qkeymapper_x11.cpp.

#define XF86XK_Standby   0x1008FF10

Definition at line 673 of file qkeymapper_x11.cpp.

#define XF86XK_Start   0x1008FF1A

Definition at line 684 of file qkeymapper_x11.cpp.

#define XF86XK_Stop   0x1008FF28

Definition at line 689 of file qkeymapper_x11.cpp.

#define XK_Codeinput   0xFF37

Definition at line 632 of file qkeymapper_x11.cpp.

#define XK_dead_hook   0xFE61

Definition at line 624 of file qkeymapper_x11.cpp.

#define XK_dead_horn   0xFE62

Definition at line 628 of file qkeymapper_x11.cpp.

Referenced by translateKeySym().

#define XK_ISO_Left_Tab   0xFE20

Definition at line 620 of file qkeymapper_x11.cpp.

#define XK_Kanji_Bangou   0xFF37

Definition at line 636 of file qkeymapper_x11.cpp.

#define XK_KOREAN

Definition at line 40 of file qkeymapper_x11.cpp.

#define XK_KP_Delete   0xFF9F

Definition at line 668 of file qkeymapper_x11.cpp.

#define XK_KP_Down   0xFF99

Definition at line 653 of file qkeymapper_x11.cpp.

#define XK_KP_End   0xFF9C

Definition at line 662 of file qkeymapper_x11.cpp.

#define XK_KP_Home   0xFF95

Definition at line 641 of file qkeymapper_x11.cpp.

#define XK_KP_Insert   0xFF9E

Definition at line 665 of file qkeymapper_x11.cpp.

#define XK_KP_Left   0xFF96

Definition at line 644 of file qkeymapper_x11.cpp.

#define XK_KP_Next   0xFF9B

Definition at line 659 of file qkeymapper_x11.cpp.

#define XK_KP_Prior   0xFF9A

Definition at line 656 of file qkeymapper_x11.cpp.

#define XK_KP_Right   0xFF98

Definition at line 650 of file qkeymapper_x11.cpp.

#define XK_KP_Up   0xFF97

Definition at line 647 of file qkeymapper_x11.cpp.

#define XK_LATIN1

Definition at line 39 of file qkeymapper_x11.cpp.

#define XK_MISCELLANY

Definition at line 38 of file qkeymapper_x11.cpp.

#define XK_XKB_KEYS

Definition at line 41 of file qkeymapper_x11.cpp.


Enumeration Type Documentation

anonymous enum

Definition at line 248 of file qkeymapper_x11.cpp.

00248 { MaxBits = sizeof(uint) * 8 };

anonymous enum

Definition at line 423 of file qkeymapper_x11.cpp.

00423      {
00424     RulesFileIndex = 0,
00425     ModelIndex = 1,
00426     LayoutIndex = 2,
00427     VariantIndex = 3,
00428     OptionsIndex = 4
00429 };


Function Documentation

static void getLocaleAndDirection ( QLocale locale,
Qt::LayoutDirection direction,
const QByteArray layoutName,
const QByteArray variantName 
) [static]

Definition at line 52 of file qkeymapper_x11.cpp.

References QLocale::c(), country, i, language, layout, Qt::LeftToRight, variant, and xkbLayoutData.

Referenced by QKeyMapperPrivate::clearMappings().

00056 {
00057     int i = 0;
00058     while (xkbLayoutData[i].layout != 0) {
00059         if (layoutName == xkbLayoutData[i].layout && variantName == xkbLayoutData[i].variant) {
00060             *locale = QLocale(xkbLayoutData[i].language, xkbLayoutData[i].country);
00061             *direction = xkbLayoutData[i].direction;
00062             return;
00063         }
00064         ++i;
00065     }
00066     *locale = QLocale::c();
00067     *direction = Qt::LeftToRight;
00068 }

Here is the call graph for this function:

static Bool qt_keypress_scanner ( Display ,
XEvent *  event,
XPointer  arg 
) [static]

Definition at line 1337 of file qkeymapper_x11.cpp.

References data, XKeyPress, and XKeyRelease.

Referenced by QKeyMapperPrivate::translateKeyEvent().

01338 {
01339     if (event->type != XKeyPress && event->type != XKeyRelease)
01340         return false;
01341 
01342     qt_auto_repeat_data *data = (qt_auto_repeat_data *) arg;
01343     if (data->error ||
01344         event->xkey.window  != data->window ||
01345         event->xkey.keycode != data->keycode)
01346         return false;
01347 
01348     if (event->type == XKeyPress) {
01349         data->error = (! data->release || event->xkey.time - data->timestamp > 10);
01350         return (! data->error);
01351     }
01352 
01353     // must be XKeyRelease event
01354     if (data->release) {
01355         // found a second release
01356         data->error = true;
01357         return false;
01358     }
01359 
01360     // found a single release
01361     data->release = true;
01362     data->timestamp = event->xkey.time;
01363 
01364     return false;
01365 }

static Bool qt_keyrelease_scanner ( Display ,
XEvent *  event,
XPointer  arg 
) [static]

Definition at line 1367 of file qkeymapper_x11.cpp.

References data, and XKeyRelease.

Referenced by QKeyMapperPrivate::translateKeyEvent().

01368 {
01369     const qt_auto_repeat_data *data = (const qt_auto_repeat_data *) arg;
01370     return (event->type == XKeyRelease &&
01371             event->xkey.window  == data->window &&
01372             event->xkey.keycode == data->keycode);
01373 }

bool qt_sendSpontaneousEvent ( QObject ,
QEvent  
)

Definition at line 4185 of file qapplication_x11.cpp.

04186 {
04187     return QCoreApplication::sendSpontaneousEvent(receiver, event);
04188 }

static int qt_XTranslateKey ( register QXCoreDesc dpy,
KeyCode  keycode,
register unsigned int  modifiers,
unsigned int *  modifiers_return,
KeySym keysym_return 
) [static]

Definition at line 151 of file qkeymapper_x11.cpp.

References int.

Referenced by QKeyMapperPrivate::possibleKeysCore().

00156 {
00157     int per;
00158     register KeySym *syms;
00159     KeySym sym, lsym, usym;
00160 
00161     if (! dpy->keysyms)
00162   return 0;
00163     *modifiers_return = ((ShiftMask|LockMask)
00164        | dpy->mode_switch | dpy->num_lock);
00165     if (((int)keycode < dpy->min_keycode) || ((int)keycode > dpy->max_keycode))
00166     {
00167   *keysym_return = NoSymbol;
00168   return 1;
00169     }
00170     per = dpy->keysyms_per_keycode;
00171     syms = &dpy->keysyms[(keycode - dpy->min_keycode) * per];
00172     while ((per > 2) && (syms[per - 1] == NoSymbol))
00173   per--;
00174     if ((per > 2) && (modifiers & dpy->mode_switch)) {
00175   syms += 2;
00176   per -= 2;
00177     }
00178     if ((modifiers & dpy->num_lock) &&
00179   (per > 1 && (IsKeypadKey(syms[1]) || IsPrivateKeypadKey(syms[1])))) {
00180   if ((modifiers & ShiftMask) ||
00181       ((modifiers & LockMask) && (dpy->lock_meaning == XK_Shift_Lock)))
00182       *keysym_return = syms[0];
00183   else
00184       *keysym_return = syms[1];
00185     } else if (!(modifiers & ShiftMask) &&
00186   (!(modifiers & LockMask) || (dpy->lock_meaning == NoSymbol))) {
00187   if ((per == 1) || (syms[1] == NoSymbol))
00188       XConvertCase(syms[0], keysym_return, &usym);
00189   else
00190       *keysym_return = syms[0];
00191     } else if (!(modifiers & LockMask) ||
00192          (dpy->lock_meaning != XK_Caps_Lock)) {
00193   if ((per == 1) || ((usym = syms[1]) == NoSymbol))
00194       XConvertCase(syms[0], &lsym, &usym);
00195   *keysym_return = usym;
00196     } else {
00197   if ((per == 1) || ((sym = syms[1]) == NoSymbol))
00198       sym = syms[0];
00199   XConvertCase(sym, &lsym, &usym);
00200   if (!(modifiers & ShiftMask) && (sym != syms[0]) &&
00201       ((sym != usym) || (lsym == usym)))
00202       XConvertCase(syms[0], &lsym, &usym);
00203   *keysym_return = usym;
00204     }
00205     if (*keysym_return == XK_VoidSymbol)
00206   *keysym_return = NoSymbol;
00207     return 1;
00208 }

static int translateKeySym ( uint  key  )  [static]

Definition at line 931 of file qkeymapper_x11.cpp.

References i, int, Qt::Key_Hyper_L, Qt::Key_Hyper_R, Qt::Key_Meta, Qt::Key_Super_L, Qt::Key_Super_R, qt_hyper_mask, qt_meta_mask, and qt_super_mask.

00932 {
00933     int code = -1;
00934     int i = 0;                                // any other keys
00935     while (KeyTbl[i]) {
00936         if (key == KeyTbl[i]) {
00937             code = (int)KeyTbl[i+1];
00938             break;
00939         }
00940         i += 2;
00941     }
00942     if (qt_meta_mask) {
00943         // translate Super/Hyper keys to Meta if we're using them as the MetaModifier
00944         if (qt_meta_mask == qt_super_mask && (code == Qt::Key_Super_L || code == Qt::Key_Super_R)) {
00945             code = Qt::Key_Meta;
00946         } else if (qt_meta_mask == qt_hyper_mask && (code == Qt::Key_Hyper_L || code == Qt::Key_Hyper_R)) {
00947             code = Qt::Key_Meta;
00948         }
00949     }
00950     return code;
00951 }

static QString translateKeySym ( KeySym  keysym,
uint  xmodifiers,
int &  code,
Qt::KeyboardModifiers &  modifiers,
QByteArray chars,
int &  count 
) [static]

Definition at line 1114 of file qkeymapper_x11.cpp.

References QTextCodec::codecForMib(), QByteArray::data(), QString::fromLatin1(), int, QByteArray::isEmpty(), Qt::Key_0, Qt::Key_Backtab, Qt::Key_F1, Qt::Key_Tab, Qt::KeypadModifier, QString::length(), mib, QTextCodec::mibEnum(), qt_input_mapper, QByteArray::resize(), Qt::ShiftModifier, QByteArray::size(), QChar::toUpper(), QString::unicode(), QChar::unicode(), X11, and XK_dead_horn.

Referenced by QKeyMapperPrivate::possibleKeysCore(), QKeyMapperPrivate::possibleKeysXKB(), and QKeyMapperPrivate::translateKeyEventInternal().

01117 {
01118     // all keysyms smaller than 0xff00 are actally keys that can be mapped to unicode chars
01119 
01120     extern QTextCodec *qt_input_mapper; // from qapplication_x11.cpp
01121     QTextCodec *mapper = qt_input_mapper;
01122     QChar converted;
01123 
01124     if (count == 0 && keysym < 0xff00) {
01125         unsigned char byte3 = (unsigned char)(keysym >> 8);
01126         int mib = -1;
01127         switch(byte3) {
01128         case 0: // Latin 1
01129         case 1: // Latin 2
01130         case 2: //latin 3
01131         case 3: // latin4
01132             mib = byte3 + 4; break;
01133         case 5: // arabic
01134             mib = 82; break;
01135         case 12: // Hebrew
01136             mib = 85; break;
01137         case 13: // Thai
01138             mib = 2259; break;
01139         case 4: // kana
01140         case 6: // cyrillic
01141         case 7: // greek
01142         case 8: // technical, no mapping here at the moment
01143         case 9: // Special
01144         case 10: // Publishing
01145         case 11: // APL
01146         case 14: // Korean, no mapping
01147             mib = -1; // manual conversion
01148             mapper = 0;
01149 #if !defined(QT_NO_XIM)
01150             converted = keysymToUnicode(byte3, keysym & 0xff);
01151 #endif
01152         case 0x20:
01153             // currency symbols
01154             if (keysym >= 0x20a0 && keysym <= 0x20ac) {
01155                 mib = -1; // manual conversion
01156                 mapper = 0;
01157                 converted = (uint)keysym;
01158             }
01159             break;
01160         default:
01161             break;
01162         }
01163         if (mib != -1) {
01164             mapper = QTextCodec::codecForMib(mib);
01165             if (chars.isEmpty())
01166                 chars.resize(1);
01167             chars[0] = (unsigned char) (keysym & 0xff); // get only the fourth bit for conversion later
01168             count++;
01169         }
01170     } else if (keysym >= 0x1000000 && keysym <= 0x100ffff) {
01171         converted = (ushort) (keysym - 0x1000000);
01172         mapper = 0;
01173     }
01174     if (count < (int)chars.size()-1)
01175         chars[count] = '\0';
01176 
01177     QString text;
01178     if (!mapper && converted.unicode() != 0x0) {
01179         text = converted;
01180     } else if (!chars.isEmpty()) {
01181         // convert chars (8bit) to text (unicode).
01182         if (mapper)
01183             text = mapper->toUnicode(chars.data(), count, 0);
01184         else
01185             text = QString::fromLatin1(chars);
01186     }
01187 
01188     modifiers = X11->translateModifiers(xmodifiers);
01189 
01190     // Commentary in X11/keysymdef says that X codes match ASCII, so it
01191     // is safe to use the locale functions to process X codes in ISO8859-1.
01192     //
01193     // This is mainly for compatibility - applications should not use the
01194     // Qt keycodes between 128 and 255, but should rather use the
01195     // QKeyEvent::text().
01196     //
01197     extern QTextCodec *qt_input_mapper; // from qapplication_x11.cpp
01198     if (keysym < 128 || (keysym < 256 && (!qt_input_mapper || qt_input_mapper->mibEnum()==4))) {
01199         // upper-case key, if known
01200         code = isprint((int)keysym) ? toupper((int)keysym) : 0;
01201     } else if (keysym >= XK_F1 && keysym <= XK_F35) {
01202         // function keys
01203         code = Qt::Key_F1 + ((int)keysym - XK_F1);
01204     } else if (keysym >= XK_KP_Space && keysym <= XK_KP_9) {
01205         if (keysym >= XK_KP_0) {
01206             // numeric keypad keys
01207             code = Qt::Key_0 + ((int)keysym - XK_KP_0);
01208         } else {
01209             code = translateKeySym(keysym);
01210         }
01211         modifiers |= Qt::KeypadModifier;
01212     } else if (text.length() == 1 && text.unicode()->unicode() > 0x1f && text.unicode()->unicode() != 0x7f && !(keysym >= XK_dead_grave && keysym <= XK_dead_horn)) {
01213         code = text.unicode()->toUpper().unicode();
01214     } else {
01215         // any other keys
01216         code = translateKeySym(keysym);
01217 
01218         if (code == Qt::Key_Tab && (modifiers & Qt::ShiftModifier)) {
01219             // map shift+tab to shift+backtab, QShortcutMap knows about it
01220             // and will handle it.
01221             code = Qt::Key_Backtab;
01222             text = QString();
01223         }
01224     }
01225 
01226     return text;
01227 }

Here is the call graph for this function:


Variable Documentation

const unsigned int KeyTbl[] [static]

Definition at line 717 of file qkeymapper_x11.cpp.

uchar qt_alt_mask

Definition at line 281 of file qapplication_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings(), and QX11Data::translateModifiers().

uchar qt_hyper_mask

Definition at line 284 of file qapplication_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings(), and translateKeySym().

uchar qt_meta_mask

Definition at line 282 of file qapplication_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings(), translateKeySym(), and QX11Data::translateModifiers().

uchar qt_mode_switch_mask

Definition at line 285 of file qapplication_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings(), and QX11Data::translateModifiers().

uchar qt_num_lock_mask = 0

Definition at line 78 of file qkeymapper_x11.cpp.

bool qt_sm_blockUserInput

Definition at line 306 of file qapplication_x11.cpp.

Referenced by QSessionManager::allowsErrorInteraction(), QSessionManager::allowsInteraction(), QSessionManager::release(), resetSmState(), sm_performSaveYourself(), and QETWidget::translateMouseEvent().

uchar qt_super_mask

Definition at line 283 of file qapplication_x11.cpp.

Referenced by QKeyMapperPrivate::clearMappings(), and translateKeySym().


Generated on Thu Mar 15 13:27:19 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1