I have an application where I need to intercept keyboard LEFT / RIGHT key
presses and translate them to SHIFT+TAB / TAB. I understand that
Gdk::Window::add_filter() or gdk_window_add_filter() is my way forward.
So I installed a filter function by calling the above method and I am able
to intercept the events right. However I am unable to translate the X event
to an equivalent Gdk event.
001 GdkFilterReturn FilterInput(GdkXEvent *xevent,
002 GdkEvent *event,
003 gpointer data)
004 {
005 GdkFilterReturn eRet = GDK_FILTER_CONTINUE;
006
007 {
008 XEvent *pEvent = (XEvent*)xevent;
009
010 if (2
011 == pEvent->type)
012 {
013 if ((113
014 == pEvent->xkey.keycode)
015 || (114
016 == pEvent->xkey.keycode))
017 {
018 event->key.hardware_keycode = pEvent->xkey.keycode;
019 event->key.keyval = GDK_KEY_Tab;
020 event->key.length = 0;
021 event->key.time = pEvent->xkey.time;
022 event->key.type = GDK_KEY_PRESS;
023
024 if(113 == pEvent->xkey.keycode)
025 {
026 event->key.state |= GDK_SHIFT_MASK;
027 event->key.keyval = GDK_KEY_ISO_Left_Tab;
028 }
029
030 eRet = GDK_FILTER_TRANSLATE;
031 }
032 }
033 }
034
035 return eRet;
036 }
Above code always causes the application to crash when I do LEFT / RIGHT
with the following warning.
*Gdk-WARNING **: 13:16:43.246: Event with type 8 not holding a GdkDevice.
It is most likely synthesized outside Gdk/GTK+*
I did quite a bit of search to find examples on translating X events to Gdk
events without any leads. Can someone tell me what is missing in my code or
point me to some examples where filtering is done?
--
--
*Please consider the Environment before printing this e-mail.*
The information contained in this message
(including any attachments) is
confidential and may be privileged or
otherwise protected from disclosure.
If you are not the intended
recipient, you must not copy this message or
attachment or disclose the
contents to any other person. If you have
received this transmission in
error, please notify the sender immediately
by return e-mail and
permanently delete this message and any attachments
from your system.
Any dissemination, use, review, distribution, printing
or copying of
this message in whole or in part is strictly prohibited.
Please note
that e-mails are susceptible to change.
*SKANRAY*
<http://www.skanray.com>*(including
its group of companies) shall not be
liable for any omission or error
in the message, improper or incomplete
transmission of the information
contained in this communication or for any
delay in its receipt or
damage to your system. * *SKANRAY*
<http://www.skanray.com>*(or
its group of companies) does not guarantee
that the integrity of this
communication has been maintained or that this
communication is free of
viruses, interceptions or interference.*
_______________________________________________
gtkmm-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/gtkmm-list