Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "keysym.h" // from libvncserver
- static const uint misc_keys[] =
- {
- XK_Escape,
- XK_Tab,
- XK_Tab, //XK_ISO_Left_Tab
- XK_BackSpace,
- XK_Return,
- XK_KP_Enter,
- XK_Insert,
- XK_Delete,
- XK_Pause,
- XK_Print,
- XK_Sys_Req,
- XK_Clear,
- 0, 0, 0, 0, // padding
- XK_Home,
- XK_End,
- XK_Left,
- XK_Up,
- XK_Right,
- XK_Down,
- XK_Page_Up,
- XK_Page_Down,
- 0, 0, 0, 0, 0, 0, 0, 0, // padding
- XK_Shift_L,
- XK_Control_L,
- XK_Super_L,
- XK_Alt_L,
- XK_Caps_Lock,
- XK_Num_Lock,
- XK_Scroll_Lock,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, // padding
- XK_F1,
- XK_F2,
- XK_F3,
- XK_F4,
- XK_F5,
- XK_F6,
- XK_F7,
- XK_F8,
- XK_F9,
- XK_F10,
- XK_F11,
- XK_F12,
- XK_F13,
- XK_F14,
- XK_F15,
- XK_F16,
- XK_F17,
- XK_F18,
- XK_F19,
- XK_F20,
- XK_F21,
- XK_F22,
- XK_F23,
- XK_F24,
- XK_F25,
- 0
- };
- static bool capslock_active = false;
- unsigned int map_qt_to_x11(QKeyEvent *e)
- {
- int k = e->key();
- Qt::KeyboardModifiers mod = e->modifiers();
- // check if LATIN-1
- if (k >= XK_space && k <= XK_ydiaeresis)
- {
- #define XOR(a, b) (!(a && b) && (a || b))
- // check if lowercase ascii
- if ((k >= XK_A && k <= XK_Z
- || k >= XK_Agrave && k <= XK_Thorn)
- && !(XOR(mod & Qt::ShiftModifier, capslock_active)))
- return k + 0x20;
- #undef XOR
- return k;
- }
- // check if misc key
- if (k >= 0x01000000 && k <= 0x01000048)
- return misc_keys[k - 0x01000000];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement