LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (http://www.linuxquestions.org/questions/programming-9/)
-   -   python and curses : unable to getch() for a curses.KEY event (http://www.linuxquestions.org/questions/programming-9/python-and-curses-unable-to-getch-for-a-curses-key-event-843013/)

mangec 11-08-2010 07:10 AM

python and curses : unable to getch() for a curses.KEY event
 
Hello. Newbie with curses.
When I getch() a key event (UP arrow key), the getch() function return a string of characters that I cannot compare with curses.KEY_UP constant. Here is the code I use :
while True:
w = gb.scrn.getch()
c = chr(w)
otp = 'touche:'+str(w)+' '+str(c)+"\n"; gb.f.write(otp)
if c == 'q': break
elif w == 259: haut_bas(-1)
elif w == curses.KEY_DOWN : haut_bas(1)
elif c == 'u' : haut_bas(-1)
elif c == 'd' : haut_bas(+1)
else: gb.scrn.addstr(curses.LINES-1,0,'Entrée invalide'+c)

I write the results of getch() when hitting arrow UP key then 'q' to exit in a file and it show this :

touche:27 ESC
touche:91 [
touche:65 A
touche:113 q

the results of getch() when hitting arrow DOWN key then 'q' to exit in a file and it show this :

touche:27 ESC
touche:91 [
touche:66 B
touche:113 q

It seems like getch() return three distincts bytes while I would retrieve it with a single ord() instruction in python like describes in curses/python documentation.

Does somebody has any idea ?
Thank you

mangec 11-09-2010 04:21 PM

OK , I have found the solution : just specify curses.KEYPAD(1)


All times are GMT -5. The time now is 05:19 AM.