LINUX.ORG.RU

Код клавиши


0

1

Я в xev смотрел. Стану я твою фигню запускать. Выкладывай кусок работы с клавишами. ziemin ★ (19.10.2013 16:18:11)

ziemin

warehouse.win.ptr[window].eventsmask |= PointerMotionMask;
...
XSelectInput(warehouse.display,
                 warehouse.win.ptr[window].window,
                 warehouse.win.ptr[window].eventsmask);
...
case MotionNotify:
                if (warehouse.win.ptr[data.window].events[SML_EVENT_POINTERMOVE] != NULL)
                {
                    data.index = event.xmotion.state;
                    data.x     = event.xmotion.x;
                    data.y     = event.xmotion.y;
                    warehouse.win.ptr[data.window].events[SML_EVENT_POINTERMOVE](data);
                }
Пока нашел:
SHIFT          1
CAPS LOCK      2
CTRL           4
ALT            8
NUM LOCK      16
...
SUPER         64
Что есть код 32?

P.S. mono, а просто переместить вместо удаления не судьба? www.linux.org.ru/forum/talks/9714565



Последнее исправление: inn (всего исправлений: 1)

Выкладывай кусок работы с клавишами

компилируемый.

Просишь что-то, изволь потрудиться сделать это самым удобным способом для того, у кого просишь.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat
 #include <X11/Xlib.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
 
 extern int errno;
 
 int main(void) {
   Display *d;
   Window w;
   XEvent e;
   char *msg = "Hello, World!";
   int s;
 
    if ((d = XOpenDisplay(getenv("DISPLAY"))) == NULL) {
        printf("Can't connect X server: %s\n", strerror(errno));
        exit(1);
    }
 
   s = DefaultScreen(d);
 
   w = XCreateSimpleWindow(d, RootWindow(d, s), 10, 10, 200, 200, 1,
                           BlackPixel(d, s), WhitePixel(d, s));
 

   XSelectInput(d, w, PointerMotionMask);
 
   XMapWindow(d, w);

   while (1) {
     XNextEvent(d, &e);
 
     if (e.type == MotionNotify) {
     printf("%d\n", e.xmotion.state);

   }
 
   XCloseDisplay(d);
 
   return 0;
 }
inn
() автор топика

Велосипедист, xev выводит нужное число в поле «state».

crowbar
()
Ответ на: комментарий от inn
/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
   state in various key-, mouse-, and button-related events. */

#define ShiftMask               (1<<0)
#define LockMask                (1<<1)
#define ControlMask             (1<<2)
#define Mod1Mask                (1<<3)
#define Mod2Mask                (1<<4)
#define Mod3Mask                (1<<5)     // == 32 
#define Mod4Mask                (1<<6)
#define Mod5Mask                (1<<7)
    if (!(xkb->defined & XkmIndicatorsMask)) {
        map = xkb->indicators;
        map->phys_indicators = PHYS_LEDS;
        map->maps[LED_CAPS - 1].flags = XkbIM_NoExplicit;
        map->maps[LED_CAPS - 1].which_mods = XkbIM_UseLocked;
        map->maps[LED_CAPS - 1].mods.mask = LockMask;
        map->maps[LED_CAPS - 1].mods.real_mods = LockMask;

        map->maps[LED_NUM - 1].flags = XkbIM_NoExplicit;
        map->maps[LED_NUM - 1].which_mods = XkbIM_UseLocked;
        map->maps[LED_NUM - 1].mods.mask = 0;
        map->maps[LED_NUM - 1].mods.real_mods = 0;
        map->maps[LED_NUM - 1].mods.vmods = vmod_NumLockMask;

        map->maps[LED_SCROLL - 1].flags = XkbIM_NoExplicit;
        map->maps[LED_SCROLL - 1].which_mods = XkbIM_UseLocked;
        map->maps[LED_SCROLL - 1].mods.mask = Mod3Mask;          // <==
        map->maps[LED_SCROLL - 1].mods.real_mods = Mod3Mask;
    }

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Если mod3 - это скролллок, а mod4 (64 code) это Win (super) key, то кто занял 128 код (mod5)?

inn
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.