|
Re: keyboard events with WIDGET_DRAW [message #15996 is a reply to message #15994] |
Tue, 22 June 1999 00:00  |
Liam Gumley
Messages: 473 Registered: November 1994
|
Senior Member |
|
|
"D. Mattes" wrote:
> does anyone know how to capture keyboard events when a draw widget has
> focus??? i'd like to be able to use keypresses as shortcuts when someone
> is using the mouse inside the draw widget.
I don't think that you can capture keyboard events while a draw widget
has focus. The workaround suggested in this group (I don't recall who it
was) is to create a hidden text widget behind the draw widget, and then
set the input focus to the text widget whenever you want to capture
keyboard events. The following untested code snippet gives an example:
;- Create widgets
tlb = widget_base()
text = widget_text(tlb, scr_xsize=1, scr_ysize=1, /all, uvalue='Hidden')
draw = widget_draw(tlb, scr_xsize=256, scr_ysize=256, uvalue='Draw')
widget_control, tlb, /realize
;- Set input focus to hidden text widget to capture keyboard events
widget_control, text, input_focus=1
As long as the text widget has focus, you should capture text events.
The event structure item EVENT.CH will contain the ASCII code of the
pressed key. Unfortunately IDL doesn't seem to understand the difference
between Control-{key} and {key}.
Cheers,
Liam.
PS Notice how my example does not use pointers.....
--
Liam E. Gumley
Space Science and Engineering Center, UW-Madison
http://cimss.ssec.wisc.edu/~gumley
|
|
|