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

Re: Keyboard events

Doug Reynolds wrote:
> I'm in the process of writing a new application, and several of the likely
> users have requested that I allow various keyboard "shortcuts", as an
> alternative to clicking on various controls with the mouse.  For example,
> we will need to define a region in an image that will be zoomed in a
> separate draw window, and it would be nice to be able to use arrow keys
> to position and resize the zoom region.
> I've never tried to do this before in IDL (previously I've been content
> to handle mouse events), so I went looking through the manuals to figure
> out how to do it.  Unfortunately, the event handling routines seem to be
> limited to mouse and focus events.  The closest thing I could find was the
> get_kbrd function; someone here suggested putting a call to get_kbrd in
> the event handling function.  However, it would seem that this would cause
> keyboard events to queue up, unprocessed, until the user wiggled the mouse.
> In other words, it doesn't seem to be quite what I need.
> Is there something in the documentation that I have overlooked?  Any ideas
> would be most appreciated.
> Doug

I think I recently posted a follow-on entitled "More keyboard events" to my hack
of many years ago which allows cursor key widget events.  It increases the
hackery to some degree and has cross-platform issues, but sometimes, you just
need them. 

An example program is included in the post.  My original hack is widely used in
a variety of programs, including popular ones such as atv, so it's stability is
probably pretty good.  The new hack has undergone limited testing, so beware. 
I've been using it with success under Unix, but your mileage may vary.

Good luck,


 J.D. Smith                             /*\    WORK: (607) 255-6263
 Cornell University Dept. of Astronomy  \*/	     (607) 255-5842
 304 Space Sciences Bldg.               /*\     FAX: (607) 255-5875  
 Ithaca, NY 14853                       \*/