Console Application Keyboard event catch

Dear All,

While doing the console application with Ruby, met below questions,
please help, thanks in advance,

  1. How to catch the Keyboard event, such as, how about the [TAB]
    key pressed, [CTRL] key and so on;
  2. How to backdisplay the string? Such as, when you type [cd]
    command at the windows command mode, and press [TAB] it will help to
    complete the directory name, such as [abc] directory, once you press
    again, it will delete the [abc] directory and display another one, such
    as [efg].

I try search from the google, but no result, please help thanks.

Regards,
Marble

IMPORTANT NOTICE
Email from OOCL is confidential and may be legally privileged. If it is
not intended for you, please delete it immediately unread. The internet
cannot guarantee that this communication is free of viruses,
interception or interference and anyone who communicates with us by
email is taken to accept the risks in doing so. Without limitation,
OOCL and its affiliates accept no liability whatsoever and howsoever
arising in connection with the use of this email. Under no
circumstances shall this email constitute a binding agreement to carry
or for provision of carriage services by OOCL, which is subject to the
availability of carrier’s equipment and vessels and the terms and
conditions of OOCL’s standard bill of lading which is also available at
http://www.oocl.com.

On 7/2/07, [email protected] [email protected] wrote:

    2. How to backdisplay the string? Such as, when you type [cd]

command at the windows command mode, and press [TAB] it will help to
complete the directory name, such as [abc] directory, once you press
again, it will delete the [abc] directory and display another one, such
as [efg].

I try search from the google, but no result, please help thanks.

  1. TAB is character #9, Ctrl+A is (IIRC) 0, Ctrl+B 1, etc. If you want
    to catch all the combinations, you need to use special api, i.e. getch
    from msvcrt, or curses.

  2. BS (backspace, Ctrl+H) moves cursor one char left. CR (carriege
    return, 13) moves cursor to the start of the line (you need to
    overwrite everything you have written before, and it’s possible that a
    screen will scroll up, and LF (line feed) will be inserted by ruby)

  3. have a look at readline library, it may do what you are trying to
    achieve.

J.