π
<-
Chat plein-écran
[^]

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:
Online

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.5
de
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 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. 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: 3.3%
 
Posts: 34922
Images: 9290
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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 ...
:)
User avatar
CaptainLuigiPremium
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 87.5%
 
Posts: 6
Joined: 04 Dec 2019, 12:36
Gender: Not specified
Class: Première générale
YouTube: Tutodev
GitHub: PaulThorel

Online

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: 3.3%
 
Posts: 34922
Images: 9290
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti


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 12 guests

-
Search
-
Featured topics
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
519 utilisateurs:
>507 invités
>6 membres
>6 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)