How to read a character at a time from STDIN without needing topress return key?

Discussion in 'Ruby' started by Kenneth McDonald, Sep 3, 2008.

  1. In the following bit of code:

    print STDIN.getc
    STDOUT.flush

    The code for whatever key I type isn't actually printed out until I go
    on to hit the return key. How can I have it printed as soon as I type
    a character key?

    Thanks,
    Ken
     
    Kenneth McDonald, Sep 3, 2008
    #1
    1. Advertisements

  2. Nobuyoshi Nakada, Sep 5, 2008
    #2
    1. Advertisements

  3. Hi,

    Am Donnerstag, 04. Sep 2008, 05:40:43 +0900 schrieb Kenneth McDonald:
    On feasible operating systems you can install the "termios" gem.
    Then say something like:

    class IO
    def nocanon
    term = Termios::getattr self
    term.c_lflag &= ~Termios::ICANON
    Termios::setattr self, Termios::TCSANOW, term
    yield
    ensure
    term.c_lflag |= Termios::ICANON
    Termios::setattr self, Termios::TCSANOW, term
    end
    end

    $stdin.nocanon do
    c = $stdin.getc
    end

    Maybe you like to have a look at how I let the user enter
    passwords: <http://bertram-scharpf.homelinux.com/src/password.rb>.

    Good luck!

    Bertram
     
    Bertram Scharpf, Sep 5, 2008
    #3
  4. Kenneth McDonald

    James Gray Guest

    http://blog.grayproductions.net/articles/i_just_want_one_character

    Hope that helps.

    James Edward Gray II
     
    James Gray, Sep 5, 2008
    #4
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.