FAQ
Hi all
I write a program to detect key press,but , why there is a *space*
before the character I typed.??

#!/usr/bin/env python

import sys
import tty
import termios

i = sys.stdin.fileno()
o = sys.stdout.fileno()

backup = termios.tcgetattr(i)

def loop():
while 1:
ch = sys.stdin.read(1)
print "->%s"%ch
if ch == 'q':break

try:
tty.setraw(i)
loop()
finally:
termios.tcsetattr(i, termios.TCSADRAIN, backup)

Search Discussions

  • Hanumizzle at Oct 6, 2006 at 5:01 am

    On 5 Oct 2006 21:45:47 -0700, Jia,Lu wrote:
    Hi all
    I write a program to detect key press,but , why there is a *space*
    before the character I typed.??
    Puzzles me too, but I know this is really easy in Curses (on top of
    that, it isn't specific to Linux; curses works on many terminals)

    http://www.amk.ca/python/howto/curses/

    -- Theerasak
  • Sergei Organov at Oct 6, 2006 at 11:32 am

    "Jia,Lu" <Roka100 at gmail.com> writes:

    Hi all
    I write a program to detect key press,but , why there is a *space*
    before the character I typed.??
    There is none. The output I see when I type 1 2 q is:

    ->1
    ->2
    ->q

    If that is what you see, the problem is in your

    print "->%s"%ch

    statement. It implicitly outputs '\n' at the end, and when terminal is
    set in raw mode, this is not translated into '\r\n' as when terminal is
    in canonical mode.

    Try

    print "->%s\r" % ch

    or just

    sys.stdout.write(ch)

    -- Sergei.
  • Hanumizzle at Oct 7, 2006 at 3:02 am

    On 10/6/06, Sergei Organov wrote:

    Try

    print "->%s\r" % ch

    or just

    sys.stdout.write(ch)
    Ah!

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
grouppython-list @
categoriespython
postedOct 6, '06 at 4:45a
activeOct 7, '06 at 3:02a
posts4
users3
websitepython.org

People

Translate

site design / logo © 2022 Grokbase