Portál AbcLinuxu, 12. května 2025 08:07

Dotaz: XLib - Simulace stisku klávesy z NumPadu

9.3.2012 10:26 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
XLib - Simulace stisku klávesy z NumPadu
Přečteno: 262×
Odpovědět | Admin
Řeším následující problém. Odchytávám globálně pomocí xlib a XGrabKey stisk klávesy 'T' (XK_T), a místo ní potřebuji odeslat stisk klávesy jiné (pomocí funkce XSendEvent). Vše víceméně funguje, do té doby, pokud simuluji stisk klávesy z "normální" části klávesnice, takže například 'A' (XK_A) zareaguje v pořádku a znak se vypíše. Pro převod na keycode užívám funkce XKeysymToKeycode.

Problém nastane ve chvíli, kdy potřebuji simulovat stisk klávesy z numerické části klávesnice, a stane se následující: Pokud chci poslat jedničku na numpadu (XK_KP_1), cílová aplikace zachytí pouze keycode ekvivalentní k XK_KP_End. Hádám, že je to ovlivněno modifikátorem XKeyEvent.state, ale dokumentace mi u tohoto moc nepomohla...

Netuší někdo proč se to chová takto?

 

(Pokud by se někdo ptal, proč mi nestačí poslat normálně jedničku, tak se jedná o nucené přemapování ovládání jedné hry :-) )

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (Ragzid (tazatel))
9.3.2012 22:34 Ragzid | skóre: 24 | blog: Pivní koutek | Liberec-Brno
Rozbalit Rozbalit vše Re: XLib - Simulace stisku klávesy z NumPadu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak nakonec pomohla zminka o modifikatorech zde.
The operation of keypad keys is controlled by the KeySym named XK_Num_Lock, by attaching that KeySym to some KeyCode and attaching that KeyCode to any one of the modifiers Mod1 through Mod5 . This modifier is called the numlock modifier. The standard KeySyms with the prefix ``XK_KP_'' in their name are called keypad KeySyms; these are KeySyms with numeric value in the hexadecimal range 0xFF80 to 0xFFBD inclusive. In addition, vendor-specific KeySyms in the hexadecimal range 0x11000000 to 0x1100FFFF are also keypad KeySyms.
Stacilo pouze nastavit modifikator XKeyEvent.state = 16, a program se zacal chovat dle meho ocekavani, jeste se v tom pohrabu, ale uz to alespon castecne funguje jak jsem zamyslel.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.