Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » [C] Gestions du clavier / Fin d'un Add-in
Adentissa Hors ligne Membre Points: 3 Défis: 0 Message

[C] Gestions du clavier / Fin d'un Add-in

Posté le 16/02/2017 00:23

Tout d'abord, bravo à tous ceux qui participent, vous aidez pas mal de personnes silencieuses. (eh oui, c'est mon premier message, il fallait que je vous le dire).

Je vais raconter ma vie là, passez ce paragraphe si vous avez pas 2 heures !
Propriétaire d'une Graph35+E et agacé de la lenteur d’exécution du Basic Casio en ViewWindow (même si ça a occupé de nombreuses heures de cours, et oui j'optimise sans doute pas du tout), j'ai décidé de m'intéresser directement aux Add-in, bien plus "puissant". Améliorer la calculatrice en 75+E, télécharger le SDK, l'updater pour le SH4, etc, tout a été fait très facilement grâce à ce magnifique site, MAIS.

1ère remarque :
Après la config du SDK pour la compatibilité SH4, il n'y a plus de "modèle de programme" quand on créé un nouveau projet. Voilà, pas grand chose de grave, juste une remarque ^^.

Ensuite, 1ère vrai question :
Quelles sont les valeurs des touches du clavier de Fxlib.h ?
Sur la doc de la bibliothèque, il est bien mentionné pour GetKeyWait : "Cette fonction attend l'appui d'une touche et donne sa valeur".
Ce sont les mêmes valeurs que pour le Getkey du basic ? (par exemple [EXE] = 31 ?)
EDIT : J'ai vu des bibliothèques non-officiel comme libinput qui ont l'air vachement plus simple pour gérer le clavier, mais j'aimerai bien commencer simplement avec juste Fxlib.

2ème question :
Comment se "termine" un Add-in ?
Je sais que ça peut paraître bizarre, mais si je veux faire un Add-in avec un déroulement linéaire et possédant une fin (qui renvoi au Menu), à chaque fois qu'il est fini, impossible de le relancer. Il faut pour cela lancer autre chose, puis enfin l'Add-In daignera s'ouvrir.
J'ai essayé avec un SetQuitHandler, mais ça n'aide pas. Si y'a une explication / solution, j'aimerai bien comprendre !


Voilà pour le long post, merci d'avoir lu !


Cakeisalie5 En ligne Ancien administrateur Points: 1959 Défis: 11 Message

Citer : Posté le 16/02/2017 00:50 | #


Adentissa a écrit :
Quelles sont les valeurs des touches du clavier de Fxlib.h ?

Le lien que tu as mis a l'air de mettre les fonctions pour se servir directement du clavier. Du coup, tu as deux cas à gérer (tu peux n'en implémenter qu'un si tu as la flemme) : les claviers normaux, et les slims. Les codes sont ici (en hexa, par exemple, EXIT c'est 0x37) :

https://bible.planet-casio.com/simlo/chm/v20/fx_legacy_keyboard.htm

Adentissa a écrit :
Comment se "termine" un Add-in ?

En fait, tout se fait grâce au syscall Getkey : si la touche MENU est détectée, cela revient au menu, mais l'application tourne toujours. C'est seulement lorsqu'une autre application est sélectionnée que l'add-in est terminé (et, j'imagine, le Quit Handler appelé). Bon, du coup, ici, tu lis directement le clavier et tu ne te sers pas du syscall, mais si quelqu'un a l'habitude du SDK (ce n'est pas mon cas), il pourra poster un lien vers le workaround ici.

L'autre façon de terminer un add-in, la "sale" (en fait pas vraiment, mais en considérant la manière dont la gère l'OS, si), c'est effectivement d'arriver à la fin du programme. Souci : si tu sélectionnes l'add-in à nouveau, cela ne rentrera pas dedans à nouveau, il faut sélectionner une autre application puis revenir sur ton add-in pour le relancer. En prenant le paragraphe précédant en compte, tu devrais aisément pouvoir comprendre pourquoi
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 16/02/2017 07:44 | #


Quelques remarques supplémentaires :
- Les codes normaux de GetKey() et GetKeyWait() sont définis dans le pdf fx9860g_character_set.pdf, téléchargé avec le SDK ;
- Il y a des valeurs numériques associées, définies dans le header keybios.h, mais il est tout à fait déconseillé de les utiliser directement ;
- Le fichier SH4Comp.c modifie ces valeurs et les remet plus ou moins aux valeurs du Basic, d'où la nécessité de ne pas s'appuyer sur les valeurs directement mais sur les noms ;
- La fonction GetKeyWait() ne marche pas, elle renvoie systématiquement 0 au lieu de la valeur de la touche. Il existe des alternatives mais elles sont compliquées et changent encore les valeurs ;
- Il existe deux manières supplémentaires d'autoriser le retour dans l'application : appeler GetKey() en ayant préalablement injecté MENU, ou bien modifier un flag dans la RAM.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 16/02/2017 08:40 | #


La manière de revenir au Menu sera toujours moche
In Arch, I trust ! And you ?
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 16/02/2017 12:11 | #


Pas nécessairement. Le retour au menu quand le programme s'arrête n'a rien de moche, et bien que non documenté (et pas intégré à l'API de fxlib), le flag de RAM pourrait être spécifiquement prévu pour ça. Auquel cas, il fournit une solution parfaitement propre. À mon sens, c'est de loin ce qu'il y a de mieux.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2384 Défis: 20 Message

Citer : Posté le 16/02/2017 12:39 | #


Pour sortir, il te faut juste modifier un flag de la RAM ? Ca m'intéresse, dis-m'en un peu plus (si tu le sais)
In Arch, I trust ! And you ?
Lephenixnoir Hors ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 16/02/2017 12:46 | #


Il faut passer un short à 1 quelque part dans la RAM, c'est tout. Le système nous laisse redémarrer un add-in juste arrêté. Je m'en suis servi une ou deux fois.
Vois les commentaires de SimLo sur le syscall 0x049a.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Adentissa Hors ligne Membre Points: 3 Défis: 0 Message

Citer : Posté le 16/02/2017 19:34 | #


Lephenixnoir a écrit :
- Les codes normaux de GetKey() et GetKeyWait() sont définis dans le pdf fx9860g_character_set.pdf, téléchargé avec le SDK ;

Ah oui, au lieu de rechercher partout sur Internet, j'aurais mieux fait de regarder ce que j'avais sous mon nez ^^.

Lephenixnoir a écrit :
- Il y a des valeurs numériques associées, définies dans le header keybios.h, mais il est tout à fait déconseillé de les utiliser directement ;

On va oublier les valeurs numériques du coup !

Lephenixnoir a écrit :
- La fonction GetKeyWait() ne marche pas, elle renvoie systématiquement 0 au lieu de la valeur de la touche

De toute façon j'utilise GetKey() (pour l'instant, je débute !)

Cakeisalie5 a écrit :
En fait, tout se fait grâce au syscall Getkey : si la touche MENU est détectée, cela revient au menu, mais l'application tourne toujours

J'utilise GetKey, donc le problème est réglé.

Merci de votre aide !

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 246 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd