π
<-

1ère bibliothèque clavier Python pour TI-83 Premium CE

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

1ère bibliothèque clavier Python pour TI-83 Premium CE

Unread postby critor » 12 Mar 2020, 17:06

Les fonctions graphiques en Python c'est sympa, notamment pour la conception d'interfaces et jeux.

Nous en avons depuis le début chez NumWorks.
Casio pour sa part s'apprête à les rajouter sur Graph 35+E II et Graph 90+E avec sa mise à jour d'Avril 2020.
Texas Instruments quant à lui les rajoutera sur TI-83 Premium CE Edition Python avec sa mise à jour 5.5de Mai 2020, puis sur TI-Nspire CX II avec la mise à jour de rentrée 2020.

Mais encore faut-il pouvoir interagir avec les interfaces et jeux en question.

Pour cela, des fonctions permettant de détecter les pressions de touches clavier sont nécessaires.

NumWorks est sur le point d'en rajouter pour sa prochaine version 13.

Mais rien de tel de au menu des prochaines mises à jour Texas Instruments et Casio à notre connaissance.

Chez Texas Instruments on peut bien noter quelque chose en ce sens avec la fonction escape() du futur module ti_system, mais à notre connaissance c'est pour gérer le seul cas particulier de la pression de la touche
annul
de la TI-83 Premium CE, notamment pour passer l'affichage d'un message après lecture.

12302Et si on se fabriquait nous-mêmes de telles fonctions ? Paul Thorel alias CaptainLuigi a eu l'idée de regarder du côté du module sys de la TI-83 Premium CE, et plus particulièrement du flux d'entrée stdin avec ses méthodes read(), readline() et readlines().

Il y a moyen de détecter la pression d'une touche en lisant le flux d'entrée.
×
par exemple y écrit *,
÷
/,
^
**,
annul
[2K,
[C et
entrée
[F.

A noter que cette astuce n'est pas utilisable sur les Casio Graph 90/35+E II, car le module sys n'y est pas disponible. Si il est certes présent dans la version alpha avec la future application Python pour HP Prime, nous n'avons pas réussi à en faire fonctionner la fonction readline() correctement.

Voici le détail des écritures stdin associées aux touches de la TI-83 Premium CE, ainsi que leurs variantes en cas de combinaison de la pression avec les touches modificatrices
2nde
ou
alpha
:
f(x)
fenêtre
zoom
trace
graphe
2nde
mode
suppr

[D
[H

[A
alpha
X,T,θ,n

X
x
stats

[B

[C
[F
math

a
A
matrice

b
B
prgm

c
C
var
annul

[2K
◄►

d
D
trig

pi
e
E
résol

f
F
□/□

g
G
^

**
h
H

**2
sqrt() [1D
i
I
,

,
E
j
J
(

(
{
k
K
)

)
}
l
L
/

/
e
m
M
log

log(,10) [4D
10**() [1D
n
N
7

7
o
O
8

8
p
P
9

9
q
Q
×

*
[
r
R
ln

log() [1D
exp() [1D
s
S
4

4
t
T
5

5
u
U
6

6
v
V
-

-
]
w
W
sto→

=
\\
x
X
1

1
y
Y
2

2
z
Z
3

3
@
+

+
'
"
on
0

0
.

.
:
(-)

-
_
?
entrée

[F


A priori, cela va être difficile de créer une unique fonction détectant de façon fiable les pressions de l'ensemble des touches clavier.

En effet les écritures stdin associées sont de tailles différentes. Or les fonctions de lecture readline() et compagnie sont bloquantes, et nous ne disposons pas sur TI-83 Premium CE du module permettant de les reconfigurer en non-bloquantes.
C'est-à-dire que si l'on demande 3 caractères pour détecter les appuis sur les flèches et touches de validation/annulation, les pressions sur la plupart des autres touches n'écrivant qu'1 à 2 caractères dans le stdin ne rendront pas la main à notre script. :'(

Nous ne disposons pas non plus de la fonction stdin.isatty() permettant de savoir si il y a encore des données à lire dans le flux d'entrée.
Donc dans le cadre d'une lecture caractère par caractère, impossible de différencier l'espace produit par
alpha
0
de celui commençant les écritures associées aux flèches et touches de validation/annulation, ou encore le * associé à la touche
×
de celui démarrant également les écritures associées aux touches
^
(**) et
(**2). :'(

Bref, en attendant mieux il faut faire des choix. Dans le cadre d'interfaces et jeux il y a sans doute possibilité de s'en sortir avec les seules flèches et touches de validation/annulation, soit de demander 3 caractères sur le flux d'entrée à chaque fois. CaptainLuigi te sort un petit script en ce sens, n'hésite pas à l'exploiter pour tes futures créations : :bj:
Code: Select all
from sys import *

def getkey(n=3):
  return list(stdin.readline(n))

def ispressed(key="up",keylist=[]):
  if key=="enter":
    key=" [F"
  if key=="up":
    key=" [A"
  if key=="down":
    key=" [B"
  if key=="right":
    key=" [C"
  if key=="left":
    key=" [D"
  if key=="annul":
    key=" [2"
  press=True
  for i in range(3):
    if key[i]==keylist[i]:
      press=True
    else:
      press=False
  return press

Et petite démo, ça a l'air rapide ce qui est a priori un très bon signe pour tes futurs jeux et interfaces en Python : :bj:

Lien : https://github.com/Paul-Thorel/TI-PYTHON-KEYPAD-LIBRARY
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48.1%
 
Posts: 41993
Images: 15900
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: 1ère bibliothèque clavier Python pour TI-83 Premium CE

Unread postby CaptainLuigi » 12 Mar 2020, 17:37

Merci Critor pour cette page !
C'est vrai que le fait d'avoir des tailles renvoyées par le clavier diffèrentes rend l'utilisation compliquée , mais je suis en train de pallier ce problème via 2 versions de getkey() , une pour les touches produisant 3/4 caractères produits , et une autre pour les autres touches ( script de conversion vers minuscules ) ...
Je vous conseille vraiment de vérifier de temps à autre le Github , car les mises à jours arriveront en priorité dessus ...
:)
Do you like 80s'/90s' music genres, like synthwave or italodisco (even though my music genre is ... a mix of a lot of ones)
If so, check my YouTube channel 😃 : https://youtube.com/@Manerr
User avatar
CaptainLuigiAmbianceur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 38.9%
 
Posts: 86
Joined: 04 Dec 2019, 12:36
Gender: Male
Calculator(s):
MyCalcs profile
Class: BTS SIO almost done
YouTube: Manerr

Re: 1ère bibliothèque clavier Python pour TI-83 Premium CE

Unread postby critor » 13 Mar 2020, 23:02

J'ai regardé du côté de l'appli non officielle CasioPython pour Graph 35/75/85/95.
Elle inclut bien le module sys, mais malheureusement aucun stdin dedans. :(
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 48.1%
 
Posts: 41993
Images: 15900
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor


Return to News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Who is online

Users browsing this forum: No registered users and 4 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1045 utilisateurs:
>984 invités
>54 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)