Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Curses window.getch / window.getkey() et touches spéciales

1 réponse
Avatar
Doug713705
bonjour à toutes, tous,

Je code actuellement une application en python à l'aide du module
curses que je commence à bien connaitre.

Cependant je me retrouve avec le problème suivant:
Alors que l'application réclame l'intervention de l'utilisateur
(typiquement choisir une action à faire en pressant la touche idoine),
il m'est impossible de récupérer les touches spéciales telles que
PAGEUP, PAGEDOWN, les Fn keys, UP, DOWN, RIGHT, LEFT, etc.

Que ce soit avec window.getch() ou window.getkey(), je récupère une
séquence de caractères séparés comme si l'utilisateur appuyait sur
plusieurs touches les unes après les autres.

Typiquement pour F1, je reçois:
null char
O
P

J'ai bien lu la doc:
https://docs.python.org/2/library/curses.html#curses.window.getch
qui précise qu'avec getkey() je devrais récupérer une chaine de caractères
représentant le nom de le nom de la touche (les touches curses.KEY_XXX dont
trouve le tableau dans la même doc).

Or, ce n'est pas le cas et malgré tous mes essais il m'a été impossible d'
déterminer la cause.

curses est initialisé de la manière suivante:
stdscr = curses.initscr()
stdscr.nodelay(1)
curses.start_color()
screen_y, screen_x = stdscr.getmaxyx()
curses.resizeterm(screen_y, screen_x)
curses.noecho()
curses.cbreak()
curses.curs_set(0)
self.stdscr.keypad(1)

Je pense avoir tenté toutes les combinaisons possibles de raw(), cbreak()
et keypad() sans succès.

C'est ennuyeux car je projetais d'utilier les touches PAGE_UP et PAGE_DOWN
pour le scrolling.

Merci de vos conseils et expériences.
--
Je ne connaîtrai rien de tes habitudes
Il se peut même que tu sois décédée
Mais j'demanderai ta main pour la couper
-- H.F. Thiéfaine, L'ascenceur de 22H43

1 réponse

Avatar
Doug713705
Le 13-11-2016, Doug713705 nous expliquait dans
fr.comp.lang.python
(<o09fau$5ed$) :
bonjour à toutes, tous,
Je code actuellement une application en python à l'aide du module
curses que je commence à bien connaitre.
Cependant je me retrouve avec le problème suivant:
Alors que l'application réclame l'intervention de l'utilisateur
(typiquement choisir une action à faire en pressant la touche idoine),
il m'est impossible de récupérer les touches spéciales telles que
PAGEUP, PAGEDOWN, les Fn keys, UP, DOWN, RIGHT, LEFT, etc.
Que ce soit avec window.getch() ou window.getkey(), je récupère une
séquence de caractères séparés comme si l'utilisateur appuyait sur
plusieurs touches les unes après les autres.
Typiquement pour F1, je reçois:
null char
O
P
J'ai bien lu la doc:
https://docs.python.org/2/library/curses.html#curses.window.getch
qui précise qu'avec getkey() je devrais récupérer une chaine de caractères
représentant le nom de le nom de la touche (les touches curses.KEY_XXX dont
trouve le tableau dans la même doc).

Visiblement pas assez et pas la bonne car ici:
https://docs.python.org/2/howto/curses.html#curses-howto
on trouve au rayon 'user input', un exemple tout à fait fonctionnel.
Dans les faits, il ne faut pas faire un getch() sur un objet window mais directement
sur la fenètre principale /stdscr/.
En lisant cette doc je me suis demandé si je n'avais pas déà posé la même question
il y a quelques temps...
Merci de m'avoir lu.
--
J'suis la môme kaléidoscope.
C'est moi qu'j'faisais l'trottoir d'en face
Du temps ou j'avais dans l'carosse
Une chatte qu'était pas radada
-- H.F. Thiéfaine, La môme kaléïdoscope