Advertisement
Ancurio

Qt to X11 keysym

Aug 29th, 2012
784
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.63 KB | None | 0 0
  1. #include "keysym.h" // from libvncserver
  2.  
  3. static const uint misc_keys[] =
  4. {
  5.     XK_Escape,
  6.     XK_Tab,
  7.     XK_Tab, //XK_ISO_Left_Tab
  8.     XK_BackSpace,
  9.     XK_Return,
  10.     XK_KP_Enter,
  11.     XK_Insert,
  12.     XK_Delete,
  13.     XK_Pause,
  14.     XK_Print,
  15.     XK_Sys_Req,
  16.     XK_Clear,
  17.  
  18.     0, 0, 0, 0, // padding
  19.  
  20.     XK_Home,
  21.     XK_End,
  22.     XK_Left,
  23.     XK_Up,
  24.     XK_Right,
  25.     XK_Down,
  26.     XK_Page_Up,
  27.     XK_Page_Down,
  28.  
  29.     0, 0, 0, 0, 0, 0, 0, 0, // padding
  30.  
  31.     XK_Shift_L,
  32.     XK_Control_L,
  33.     XK_Super_L,
  34.     XK_Alt_L,
  35.     XK_Caps_Lock,
  36.     XK_Num_Lock,
  37.     XK_Scroll_Lock,
  38.  
  39.     0, 0, 0, 0, 0, 0, 0, 0, 0, // padding
  40.  
  41.     XK_F1,
  42.     XK_F2,
  43.     XK_F3,
  44.     XK_F4,
  45.     XK_F5,
  46.     XK_F6,
  47.     XK_F7,
  48.     XK_F8,
  49.     XK_F9,
  50.     XK_F10,
  51.     XK_F11,
  52.     XK_F12,
  53.     XK_F13,
  54.     XK_F14,
  55.     XK_F15,
  56.     XK_F16,
  57.     XK_F17,
  58.     XK_F18,
  59.     XK_F19,
  60.     XK_F20,
  61.     XK_F21,
  62.     XK_F22,
  63.     XK_F23,
  64.     XK_F24,
  65.     XK_F25,
  66.  
  67.     0
  68. };
  69.  
  70. static bool capslock_active = false;
  71.  
  72. unsigned int map_qt_to_x11(QKeyEvent *e)
  73. {
  74.     int k = e->key();
  75.     Qt::KeyboardModifiers mod = e->modifiers();
  76.  
  77.     // check if LATIN-1
  78.     if (k >= XK_space && k <= XK_ydiaeresis)
  79.     {
  80.         #define XOR(a, b) (!(a && b) && (a || b))
  81.  
  82.         // check if lowercase ascii
  83.         if ((k >= XK_A && k <= XK_Z
  84.         ||   k >= XK_Agrave && k <= XK_Thorn)
  85.         && !(XOR(mod & Qt::ShiftModifier, capslock_active)))
  86.             return k + 0x20;
  87.  
  88.         #undef XOR
  89.  
  90.         return k;
  91.     }
  92.  
  93.  
  94.     // check if misc key
  95.     if (k >= 0x01000000 && k <= 0x01000048)
  96.         return misc_keys[k - 0x01000000];
  97.  
  98.     return 0;
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement