Page 1 of 1

Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 20:42
by SlyVTT
Hello,

je suis en train de porter notre participation au concours sous nspire, mais je butte sur une simple fonction qui rame comme c'est pas permis.
Je cherche à faire une reprise de keydown() de la NW.

j'ai donc un module ion.py :

Code: Select all
import ti_system

KEY_EXE, KEY_UP, KEY_DOWN, KEY_LEFT, KEY_RIGHT, KEY_OK, KEY_BACKSPACE, KEY_ALPHA, KEY_SHIFT, KEY_HOME = range(0,10)

keys = ['enter', 'up', 'down', 'left', 'right', 'return', 'del', 'ctrl', 'shift', 'menu']

def keydown(key_name):
  return (keys[key_name] in ti_system.getKey(0))


et ensuite si je fais un petit programme de test, par exemple :

Code: Select all
from ion import *

exit = False
while not exit:
  if keydown(KEY_EXE): print("EXE")
  elif keydown(KEY_UP): print("UP")
  elif keydown(KEY_DOWN): print("DOWN")
  elif keydown(KEY_LEFT): print("LEFT")
  elif keydown(KEY_RIGHT): print("RIGHT")
  elif keydown(KEY_HOME): exit = True


Ca fonctionne, mais c'est d'une lenteur affligeante.
Y'a t il un truc que je fais mal ?

J'arrive pas à trouver une documentation digne de ce nom sur le module ti_system qui explique clairement les paramètres et retours de fonctions.

Merci par avance pour le coup de main.

Sly

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 20:55
by Adriweb
Au niveau documentation, il y a https://education.ti.com/html/eguides/n ... ystem.HTML
Il te manque quelque chose de spécifique ? Coté PDF ca doit être pareil je crois, à verifier.

Et sinon pour des guides en général, https://cdn.ti-planet.org/downloads2/16 ... _T__1_.pdf ainsi que https://ti-unterrichtsmaterialien.net/f ... e2_v2c.pdf

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:06
by SlyVTT
En fait je cherche une technique pour accélérer le bouzin :D
Mais je trouve pas.
Il y a sur TI83 get_key("nom de la touche") mais visiblement ça n'existe pas sur nSpire.
get_key(0) qui est non bloquant renvoie une liste et du coup c'est affreusement lent.

Donc je sais pas si il y a une meilleure technique qui me serait inconnue.

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:07
by Adriweb
le `get_key()` (sans parametre) existe, mais à tester par rapport à ce que tu veux faire.

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:13
by SlyVTT
il ne veut pas sans parametre : TypeError: function missing 1 required positional arguments
il attend donc bien un parametre (en gros 0 si passage non bloquant ou 1 si blocage)

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:16
by Adriweb
J'ai pas cette erreur la perso:
Image

Pour la version avec 1 en parametre, en fait c'est pas que c'est lent, c'est juste que c'est bloquant et ça attend une touche.

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:24
by Adriweb
La version non-bloquante peut te retourner la chaine comme voulu, si tu tombes au bon moment:



(bon j'ai triché avec la version plus bas niveau ti_st.getKey(0) mais ca devrait être pareil)

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:26
by SlyVTT
tu es sur quelle version d'OS sur la nSpire ?
ce serait pas un truc qui aurait changé entre les versions d'OS par hasard ?

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:28
by SlyVTT
en fait je cherche juste a savoir si la touche 'up' par exemple est pressée à l'instant t sans que ça prenne trop de temps, car avec mon mini programme, chaque tour prends beaucoup de ressource et c'est juste pas vivable.

Je peux même recoder toute une fonction si besoin c'est juste que chez moi tout appel à ti_system.get_key(0) est hyper lent.
Et je vois rien de mieux ou de différent pour accéder à l'état des touches.

Re: Donner des ailes à keydown() sur python nspire

Unread postPosted: 03 Mar 2025, 21:32
by Adriweb
J'ai pas testé sur calculatrice, juste sur le logiciel ordi (du coup la vitesse en est décuplée...).
Ici c'est en 5.4 mais bon, je pense pas que le comportement ait changé...

Faudrait l'avis de notre expert local Critor...