Re: How to grab key combination event in GDK?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Paul,
Have a look at gtk_key_snooper_install().


Salsaman.

http://lives.sourceforge.net
https://www.ohloh.net/accounts/salsaman



On Sat, Feb 4, 2012 at 12:06, Paul Davis <paul@xxxxxxxxxxxxxxxxxxxxx> wrote:
> On Sat, Feb 4, 2012 at 2:30 AM, victor-victor <nadaeck@xxxxxxxxxxx> wrote:
>>
>> Hello
>>
>> I know how to grab a single key event with gdk, but I'd like to know how to
>> grab a key combination  that is *not* using a modifier key. For example I
>> would like to grab when 'GDK_KEY_a' and 'GDK_KEY_right' are pressed
>> simultaneously. As far as I understand, the GdkEventKey structure allows
>> only one key to be grabbed at a time (with or without a  modifier key).
>
> (1) you cannot ever press keys simultaneously. the keyboard is a
> physical device that is scanned at a given rate by the keyboard
> electronics. one key will always be discovered to be down "first" even
> if you could simultaneously depress them.
>
> (2) given the above, you will get (in the case of a "simultaneous" key
> press + release) the following events:
>
>              key press
>              key press
>              <gap>
>              key release
>              key release
>
>> In SDL, there is the function SDL_GetKeyState() that gets a snapshot of the
>> keyboard state; it returns a pointer to an array; then every key can be
>> checked if pressed or not. Is there something similar in GDK? If not how
>> could I achieve this?
>
> there is no similar function available for GTK.
>
> look into gdk event filters for gdk windows, which will allow you to
> catch and handle every single key event no matter what else is done
> with it. then use a hash map to store which keys are down, and a
> simple api to search it or return the current "down set".
>
> alternatively, use a state machine approach in a regular pair of key
> press/release handlers. before the first press, you're in state
> "zero". after the first press, you're in state "one". after the second
> press, you're in state "two". then trigger things from the state
> transitions rather than the key presses themselves.
>
> --p
> _______________________________________________
> gtk-list mailing list
> gtk-list@xxxxxxxxx
> http://mail.gnome.org/mailman/listinfo/gtk-list
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list



[Index of Archives]     [Touch Screen Library]     [GIMP Users]     [Gnome]     [KDE]     [Yosemite News]     [Steve's Art]

  Powered by Linux