Rautenberg Logo

Keyman

Un gestionnaire de touches petit mais costaud pour les HP49G/HP49G+

Keyman se charge des redéfinitions clavier en fonction des modes de fonctionnement de la calculatrice. Il peut être stocké dans n'importe quel port et associé comme d'habitude par un cycle [ON]-[C]. A part les touches shift-maintenues, Keyman permet d'utiliser deux autres combinaisons, le double-click comme avec une souris sur un PC, et la Touche-maintenue. Grâce à ces outils, les définitions de touches peuvent être crées sans changer leurs définitions standards. Il est préférable d'assigner les redéfinitions non essentielles aux touches Shift-maintenu ou Touche-maintenue dans les modes d'édition ou défaut. En utilisant les combinaisons Shift-maintenu ou Touche-maintenue, il est possible de créer plus de 100 redéfinitions de touches en mode USR sans changer les fonctionnalités standard des touches, comme cela est montré dans les exemples ci-dessous. Bien sûr, le contrecoup est qu'il faut faire un peu plus attention en utilisant les touches. Il est recommandé d'affecter des commandes similaires à une même touche, en groupe pour ainsi dire, comme dans les exemples 3 et 4 ci-dessous.

Important: Keyman est seulement pour les ROM 19-3 ou plus. Pour la HP49g+, téléchargez KeymanPlus (= Keyman+). La variable globale lht (long hold time = temps maintenu) n'est plus nécessaire. Si elle n'est pas présente, Touche-maintenue utilise une valeur par défaut de 100 en Keyman et 1200 en Keyman+ (≈ 0.4_s). Si cela ne vous convient pas, essayez avec une valeur similaire dans lht. Une valeur plus petite diminue les temps où la touche doit être maintenue, une valeur plus grande l'allonge, en Keyman+ aussi la double-click tolerance.


Quoi de NEUF?

Version 5.2004. Commande K&SA de Keyman+ amélioré  Aussi Keyman à la version 5.2004.

Version 4.2004 seulement Keyman+. Le double-click est amélioré. A?D et RclK comprennent aussi Shift ALPHA et ON.

Version 2.2004 seulement Keyman+.  La variable lht n'est plus nécessaire pour l'option Touche-Maintenue ( une valeur par défaut de 1200 est utilisé si lht n'existe pas ). L'association des touches o 0..3 dans More est plus facile, voir Appendice.

Version 1.2004 seulement Keyman+.  Les redéfinitions facultative pour More, o 0..3, comprennent aussi le port3 (Carte SD). Chacune des touches numériques 0, 1, 2, 3 lancent un navigateur de port si la touche est maintenue.

Version 9.2003. La redéfinition des touches Shift-Droit-Maintenu F1 - F6 .

Version 8.2003.  Le temps pour Touche-Maintenue peut maintenant être spécifié en créant une variable globale lht, voir IfL ci-dessous. KeymanPlus ajouté pour la hp49g+.

Version 7.2003.  Réorganisation du navigateur More qui inclue maintenant la fonction RclK maintenu. Commande OVER ajoutée aux redéfinitions de More. Le temps pour Touche-Maintenue devrait maintenant fonctionner aussi dans un bon émulateur. Ce document est une version mise à jour de Keyman.txt. Placer le curseur sur une image affiche des informations supplémentaires.

Version 6.2003.  Pour des raisons de sécurité, le navigateur de redéfinitions de touches de More cherche des redéfinitions de touches seulement dans les ports.

Version 4.2003.  Addition des redéfinitions des touches 0, 1 et 2 incorporées dans More, navigant le port correspondant immédiatement.

Version 3.2003.  ASMTs renommé More. Il contient maintenant, en plus de la redéfinition des touches, des outils supplémentaires dont l'enregistreur des touches. Ceux-ci sont exécutés directement et ont donc été regroupés dans un navigateur. Cela permet de maintenir la compatibilité avec les versions précédentes.

Version 1.2003. La redéfinition Flèche-Gauche est maintenant répétée. Tenir cette touche maintenue transfère (UPDIR) vers les répertoires supérieurs jusqu'à HOME mais peut être arrêté à n'importe quel "niveau". Lorsque l'on s'arrête, on se retrouve sur la page de menu de ce niveau.

Important: Si vous utilisiez le double-clic avec une version de Keyman inférieure à 7.2001, dans les redéfinitions vous devez renommer ROMPTR 4B0 7 en ROMPTR 4B0 C (nouveau détecteur de double-clic). Cela est facile avec OT49.


Abréviations: SG = Shift Gauche, SD = Shift Droit, SG_ = SG_maintenu, SD_ = SD_maintenu, c'est à dire, la touche shift est maintenue pendant que l'on appuie sur l'autre touche. M = Maintenue, = Flèche Gauche. Des symboles similaires indiquent les autres touches de curseur. Voilà une description détaillée des 8 commandes de Keyman:

IfD Utilise deux arguments, objets O2 et O1 aux niveaux 2 et 1 de la pile. Retourne un programme sur la pile qui, si assigné à une touche évalue O2 si la touche est double cliquée sinon O1, voir Exemple 1. L'objet produit par IfD doit être modifié avec TO? quand il est assigné directement, voir TO? L'exécution est légèrement retardée car la détection du double-clic prend environ 0.3_s. N'appuyez pas rapidement sur deux touches successivement car cela pourrait être interprété comme un double-clic.

Nouveau à partir de la version 6.2001. Au lieu de choisir une définition standard pour O2 ou O1, il est possible de donner le code de touche, c'est à dire, un nombre de la forme rc.p (r=rangée, c=colonne, p=plan). rc.p sera automatiquement remplacé par la fonction standard. Un nombre qui n'est pas un code de touche valide (par exemple le nombre 1), produira simplement un bip, voir Exemple 5. Les objets O1 et O2 peuvent aussi être des enregistrements crées par RecordKeys de More. Tout ce qui est indiqué ici est aussi valide pour les autres If* fonctions.

IfL Accepte deux arguments, les objets O2 et O1 aux niveaux 2 et 1 de la pile. Crée un programme qui, si assigné à une touche, exécute O2 si la touche est maintenue un peu plus longtemps que d'habitude ou o1 autrement. Vous vous rendrez compte facilement de ce que "maintenue un peu plus longtemps" veut dire. Entraînez vous avec la commande A?D ou les exemples en appendice. Le temps par défaut est d'environ 0.4_s pour une hp49g+. Bien sûr, IfL ou IfD peuvent aussi être utilisés pour obtenir les détails d'une redéfinition de touches dont on ne se souvient plus.

Nouveau depuis la version 8.2003. Si le temps par défaut ne vous convient pas, vous pouvez créer une variable globale nommée lht dans le répertoire HOME avec un nombre. 0 correspond au plus petit temps raisonnable (pour des émulateurs lents). Le temps par défaut est de 50 pour une HP49G et de 1200 pour une hp49g+. L'échelle est libre et permet de un réglage personnalisé optimum.

IfE?P Se compose de IfE ("IfEdit") et IfP ("IfPRG"). IfE?P accepte deux arguments, les objets O2 et O1 aux niveaux 2 et 1 de la pile. S'il est exécuté normalement, IfE?P renvoie un programme sur la pile qui lorsqu'il est assigné à une touche, évalue O2 si la touche est utilisée en mode édition (c'est à dire, en ligne de commande ou éditeur) et O1 sinon. Autrement dire, la touche exécute le programme « IF 'mode editeur' THEN O2 ELSE O1 END». Les délimiteurs d'RPL-Utilisateur ne sont là que pour rendre l'explication plus claire, le programme lui-même ne peut pas être écrit en RPL-Utilisateur. Cette différenciation est indispensable pour assigner les touches de direction qui doivent évidemment garder leur fonctionnalité en mode d'édition. Il en va de même pour la touche SD APPS qui n'est active qu'en mode d'édition. Dans ce genre de cas, O2 est normalement la fonctionnalité standard de la touche (obtenue avec K&SA) ou simplement son code de touche. En maintenant IfE?P appuyé un peu plus longtemps, il crée un programme qui, s'il est assigné à une touche, évalue O2 s'il la touche est utilisée en mode PRG ou bien O1 sinon. La fonction choisie, IfE ou IfP, est affichée. Dans le cas de IfP, O2 ne doit pas avoir été crée directement par l'utilisateur (la touche biperait). Chaînes de caractères, commandes et autres objets sont affichés sur la ligne de commande.

Attention:
si une redéfinition de touche est crée avec l'option IfP mais est utilisée en mode d'édition sans l'indicateur PRG, alors O1, et non pas O2 est exécuté, certainement hors de la ligne de commande. Il faut donc être prudent dans le choix de IfE ou IfP. L'objet produit par IfE?P doit peut être modifié avec TO?.
TO? Crée un programme TakeOver, similaire à l'original, à partir de n'importe quel objet. Lorsque cet objet est assigné à une touche, il est évalué même en mode édition. Sans TakeOver, la touche ne ferait que biper. La commande TakeOver est placée au début de l'objet mais n'est visible que si le drapeau -85 est armé. Dans une composition des options If* ci-dessus, seul le dernier programme, pas ses composantes, a besoin d'être changé avec TO? pour être sûr qu'il fonctionnera dans tous les modes.
Maintenir TO? un peu plus longtemps ajoute une commande "α-off" (pour terminer le mode Alpha) au programme au lieu d'un TakeOver. Ceci est utile pour une touche dans le plan alpha qui, par exemple, créerait un menu mais ne resterait pas en mode alpha.
A?D Assigne ou supprime une redéfinition de touche. Utilisé normalement, attend qu'un touche soit pressée et assigne l'objet au niveau 1 de la pile à cette touche; si A?D est maintenue un peu plus longtemps, attend qu'une touche soit pressée et supprime sa redéfinition. A?D indique s'il va assigner ou supprimer. Si par erreur A?D est pressé rapidement, il suffit de répondre CANCEL, la rappeler puis supprimer la redéfinition de la touche CANCEL.

Attention:
A?D n'assigne pas shift-maintenu aux touches ALPHA et ON car ces combinaison sont ignorées par le système.
RclK Rappelle la redéfinition (si elle existe)de la touche pressée. Cette touche peut être une touche Shift-Maintenu. Il faut noter que Rclk et A?D ne sont pas des commandes fonctionnant en RPN. Dans leur cas, il est plus intéressant de choisir l'opérateur puis de donner l'argument.
K&SA Renvoi le code d'une touche au format rc.p ainsi que sa définition standard qui peut être utilisée comme argument des fonction If* détaillées ci-dessus. Cette fonction marche aussi pour les touches Shit-Maintenu. De plus, elle affiche le type de l'objet associé à la touche.Code est le contenu de More Pour les touches de menu non shiftées, un nom global est donné entre guillemets tendis qu'un Identificateur de bibliothèque (libname) (ou rompointer) est donné avec son contenu. Un astérisque est rajouté au nom pour rappeler que le nom se réfère au contenu. La capture d'écran donne le résultat de K&SA appliqué à More, indiquant qu'un objet code a pour type 25. La pile montre le contenu de la commande (objet code), le nom de bibliothèque More, et son code de touche 12.1. La plus part des touches sont associées à des noms de bibliothèque. Par exemple, si SIN est pressé après K&SA, nous voyons SIN sur deux niveaux. Au niveau 2 se trouve le nom de bibliothèque mais au niveau 1 se trouve la fonction SIN. Dans ce cas, les noms sont les mêmes mais ce n'est pas toujours le cas. Il est important de bien choisir entre le nom bibliothèque et son contenu comme argument O2 de IfE?P. En mode PRG, le nom de bibliothèque est affiché sur la ligne de commande, tendis que la fonction est immédiatement exécutée, sûrement en dehors de l'éditeur. K&SA doit être assigné à une touche pour être sûr de pouvoir accéder à toutes les touches, voir l'exemple 2 ci-dessous.
More OuvreNavigateur More pour afficher les choix de droite19 redéfinitions sont proposées un navigateur avec 5 nouvelles fonctions (Capture d'écran de gauche), les deux dernières étant elles même des navigateurs. La dernière commande donne une liste de redéfinition particulièrement utiles décrites en appendices. Ces redéfinitions sont de puissants exemples de l'utilisation des commandes If*. Essayez ces redéfinitions et si elles ne vous plaisent pas, il est très facile de les supprimer avec A?D maintenu.

Les quatre premières options de More sont décrites ci-dessous. Les dernières sont expliquées en Appendices.


Assigned Affiche la liste de toutes les touches redéfinies par l'utilisateur. Ainsi il est facile de se rendre compte de l'état de son clavier.
PackUKeys Lorsque l'on supprime des redéfinitions, la variable cachée UserKeys contient un bon nombre d'information inutile. Cette mémoire (jusqu'à 500 octets)peut être récupérée en exécutant PackUKeys de temps en temps.
RecordKeys Est un enregistreur de touches puissant qui permet de ré-exécuter ultérieurement une série d'opérations. Un enregistrement est terminé en appuyant sur CANCEL est peut contenir au plus 15 touches.
Exemple: Appuyez sur RecordKeys. Ceci affiche REC 0 dans la zone d'état. Maintenant entrez la séquence
[MODE][F1][CANCEL]. Ceci renvoie sur la pile un programme qui permettra d'obtenir le navigateur de drapeaux en appuyant sur une seule touche. Un enregistrement peut être directement utilisé, ou bien peut être combiné avec d'autres grâce aux options If*.
Important: Comme on peut le voir dans l'exemple, RecordKeys permet aussi d'utiliser les touches dans des environnement hp (comme par exemple F1 dans MODE). Ceci n'est pas possible en utilisant seulement la commande KEYEVAL.
Keymap Box Pour les utilisateurs qui veulent plusieurs claviers. On peu ainsi avoir un clavier pour la Physique, un pour la Mécanique, etc... Les commandes RCLKEYS et STOKEYS sont trop lentes pour ça. Keymap Box change les redéfinitions clavier instantanément. D'abord il n'y a que l'élément GetUKeys (renvoie la liste UserKeys des redéfinitions courantes). Exécuté après avoir redéfini des touches renvoie une liste sur la pile. Enregistrez la dans un port, par exemple dans 2:U.K. La prochaine fois que vous exécutez Keymap Box, il contient "Set 2:U.K". L'extension .K est importante car Keymap box cherche seulement les fichiers ayant cette extension. Ce fichier ne doit contenir qu'une liste obtenue avec GetUKeys ou un objet code auto-décompressable contenant cette liste. Cet objet peut être facilement créé avec les outils BZ de la bibliothèque OT49. Une liste de redéfinition est énorme mais se compresse efficacement, souvent à plus de 90%. Attention: Sélectionner un clavier remplace complètement le clavier existant qui est perdu s'il n'a pas été sauvegardé.

Exemples d'applications

1. IfD. Pour accéder à la bibliothèque interne 256 qui contient des commandes utiles, il faut presser de nombreuses touches. Pour y accéder plus facilement, on choisi de l'assigner a la touche APPS (21.1) double cliquée. Entrez « 256 MENU » au niveau 2 de la pile et la définition standard de la touche APPS (obtenue grâce à K&SA) au niveau 1. Maintenant exécutez IfD puis →TO? puis assignez ce programme à la touche APPS en utilisant A?D. Maintenant, il suffit de double-cliquer la touche APPS pour accéder au menu 256, même en mode d'édition, tendis que la touche APPS fonction toujours comme avant. Au lieu d'utiliser la définition standard de la touche 21.1, il est possible d'utiliser le nombre 21.1 lui-même. Si vous préférez maintenir la touche enfoncée, au lieu de double cliquer, utilisez IfL au lieu de IfD.

2. IfL. Il serait très pratique de pouvoir accéder au menu STACK (un sub-menu de TOOL)en une seul touche dans tous les environnements. Pour cela, il suffit d'obtenir les définitions du menu STACK et de la touche TOOL avec K&SA. Ensuite, il n'y a plus qu'à utiliser IfL et terminer par →TO. Pour réassigner ceci à la touche TOOL (touche 23) utilisez A?D. Maintenant, en appuyant sur TOOL un peu plus longtemps, on obtient le menu STACK. Ceci marche même en mode d'édition ce qui rend la programmation bien plus rapide. Cet exemple est aussi détaillé en Appendices.

3. IfE?P. Il est utile d'assigner les commandes les plus utilisées de Keyman à la touche K et ses combinaisons. SD K (CUT) est une des touches qui ne sont utiles qu'en mode d'édition. Ainsi nous pouvons le réutiliser pour lancer le navigateur More qui n'est utile que dans le mode par défaut. Placez la définition standard de 32.3 au niveau 2 de la pile et le programme « More » ou simplement la commande More au niveau 1. Utilisez IfE?P en appuyant normalement puis TO? et assignez ceci à la touche 32.3. Maintenant en mode par défaut SD K lance More tendis qu'en mode d'édition il effectue un "couper" (CUT) comme avant. Notez que vous pouvez toujours assigner des commandes à SD_K et SG_K. Nous pouvons les utiliser en assignant « RclK » ou simplement RclK à SG_K avec A?D. Ainsi si nous maintenons la touche Shift enfoncée pendant que nous appuyons sur K, nous exécutons RclK au lieu de RCL. De même, nous pouvons assigner K&SA directement à SD_K.

4. Il est possible d'assigner le menu Keyman en entier à la touche K. Par exemple, il serait possible d'utiliser K-Maintenu. Mettez « 1200 MENU » et 32.1 aux niveaux 2 et 1, utilisez IfL, puis →TO et assignez à la touche K (STO). Maintenant STO-maintenue affiche le menu de Keyman quel que soit le mode. Cette redéfinition est aussi disponible dans More.Une alternative possible serait d'assigner Keyman à la touche ALPHA-shift K Maintenu. Pour ceci, il suffit d'utiliser TO? maintenu avec « 1200 MENU » ce qui lui ajoute la commande "Turn α-off". Laissez ce résultat au niveau 2 de la pile, et la fonction standard de alpha K (le caractère K) au niveau 1 puis exécutez IfL. Ce résultat est ensuite transformé avec TO? puis assignez ceci à ALPHA K. Maintenant, en mode alpha, la touche K affiche le caractère K comme avant, mais si l'on appuie sur K un peu plus longtemps, on obtient le menu de Keyman.

5. Si vous utilisez une séquence de commandes régulièrement, ou le même texte en mode d'édition, il est évident qu'il serait pratique de l'assigner à une seule touche plutôt que de tout retaper tout le temps. Mettez ce texte au niveau 2 de la pile et le réel 1 au niveau 1 puis exécutez IfE?P TO? et assignez ce résultat à une touche. Maintenant si vous n'êtes pas en mode d'édition la touche bipera ( 1 n'est pas un code de touche valide ) mais le texte sera affiché d'un coup en mode d'édition à l'endroit où se trouve le curseur. Certaines fonctionnalités standards sont crées ainsi dans la hp49, c'est le cas de COPY, CUT etc... Si le texte était directement assigné à la touche, celle si ouvrirait un éditeur chaque fois que l'on n'est pas en mode d'édition, ce qui n'est pas toujours bienvenu.

6. Un petit exemple facile mais utile est le suivant: « IF 'Mode d'edition' THEN 'deplace curseur a gauche' ELSE UPDIR OR HOME IF 'touche maintenue' » pour la flèche gauche (34.1). PICTURE, est normalement éxécuté avec 34.1, mais peut facilement être transférée sur 34.2 (défaut sur la HP48). Ceci est facile à faire avec IfL et IfE, mais l'Appendice contient un exemple similaire et encore plus pratique.

7. Les versions les plus récentes de OT49 contiennent les fonctions ~ANG et ~COOR qui permettent de changer facilement les systèmes d'angle et de coordonnées. Comme ce sont des fonctionnalités similaires, nous voudrions les avoir sur la même touche: SG_π par exemple (104.21). Mettez ~COOR au niveau 2 de la pile et ~ANG au niveau 1, exécutez IfL puis TO? et assignez ce programme à SG_π. Ceci est vraiment très pratique. Si SG est maintenu, et SPC pressé normalement, DEG se change RAD, mais si en maintenant SG et en gardant SPC appuyé un peu plus longtemps, le système de coordonnées change.

8. Enregistrez la séquence [MODE][F1] comme indiqué dans l'exemple RecordKeys. Utilisez IfL avec cet enregistrement au niveau 2 de la pile et 22.1 au niveau 1 et après avoir exécuté →TO? assignez le à la touche 22.1. Si la touche MODE est pressée normalement la boîte de dialogue MODE apparaît, mais si cette touche est maintenue un peu plus longtemps, on arrive directement au navigateur des drapeaux système en une seule touche. Cette redéfinition extrêmement pratique est contenue dans More.

9. Enregistrez la séquence [Flèche Haut][NXT][F6] qui affiche l'option INFO du menu de la pile interactive. Mettre cet enregistrement au niveau 2 de la pile et le réel 25.1 au niveau 1 et exécutez IfL. Laissez ce programme sur la pile et affichez 25.1 au niveau 1 avant d'exécuter IfE. Le résultat une fois changé par TO? est équivalent à « IF 'mode d'edition' THEN 'deplace curseur vers le haut' ELSE 'visite la pile' ELSE IF 'touche maintenue' THEN 'affiche INFO' ».


Remarque 1. Les résultats des commandes If* peuvent aussi être utilisés dans des bibliothèques ou des menus temporaires pour décider si une fonction a été appelée en maintenant sa touche enfoncée comme c'est le cas pour le menu de Keyman. Il est possible de composer avec les options If* même si leur résultats ne sont pas forcément visibles directement. Pour pouvoir lire ces redéfinitions, il faudra installer l'énorme bibliothèque extable et sélectionner le drapeau -85, ainsi qu'apprendre le RPL système.

Remarque 2. Certaines redéfinitions peuvent ne pas fonctionner après un changement de ROM car certains pointeurs sont déplacés. Il est plus prudent pour ceci d'utiliser les codes de touches plutôt que les pointeurs sur leur fonctionnalités.

Remarque 3. Assigner une liste vide à une touche n'a aucun effet. Seuls les programmes ont besoin d'avoir la commande TakeOver rajoutée pour s'exécuter en mode d'édition.

Remarque 4. Si Keyman est supprimé sur votre système, les touches qui ont été réassignées avec Keyman ne fonctionneront certainement plus. Pour cela, quand vous installez une nouvelle version de Keyman, assurez-vous que la vieille version est dans le port 1 ou 2 et installez la nouvelle dans le port 0. Vous pouvez maintenant supprimer l'ancienne version et déplacer la nouvelle vers le port de votre choix. Cette procédure permet de sauvegarder le fonctionnement de votre calculatrice et d'éviter un crash.

Remarque 5. Les choix dans les sous-menus de More peuvent être exécutés dans d'autres programmes grâce à Recordkeys. Si nous supposons que More est assigné à la touche SD K comme proposé dans l'appendice, alors l'enregistrement suivant exécutera GetUKeys (Le premier élément de More/KeymapBox), qui rappelle immédiatement la liste UserKeys utilisée:
            SD              (Touche SD)
            K                (Touche K = STO)
                     (Trois fois la Flèche vers le bas: jusqu'au menu, Keyman)
            F6              (OK, pour le menu Keymap)
            F6              (OK, exécute le premier programme de Keymap: GetUKeys)
            CANCEL  (termine l'enregistrement)
Il suffit de lancer Recordkeys et d'enregistrer cette séquence. Enregistrez la dans GUK, par exemple. Maintenant GUK rappellera la liste des touches redéfinies pendant que vous vous contenterez de regarder la calculatrice faire défiler les navigateurs de More.

Remarque 6 pour les experts. Au lieu d'utiliser les longues fonctionnalités des touches Flèches en mode d'édition, il est possible d'utiliser uniquement les commandes de déplacement du curseur que l'on trouvera en explorant un peu la ROM. Certaines de ces fonctionnalités sont des pointeurs qui n'ont pas de nom, comme c'est le cas pour 21.2. Utiliser les rompointers au lieu de leur contenu permet d'économiser quelques octets. Une redéfinition se composant uniquement d'un rompointer n'a pas besoin d'un TakeOver car il en contient déjà un. Par exemple les redéfinitions o 0..3 proposés par Keyman+/More sont les mêmes pour les 4 touches: ROMPTR 4B0 F. Il identifie d'abord la touche et grâce à son TakeOver, il fonctionne même en mode d'édition.


REMERCIEMENTS
Merci à Jonathan Busby pour son code rappelant le code de touche en hexadécimal, à Carsten Dominik pour son utile proposition de créer l'option touche-maintenue, à Simone A. Rapisarda dont les idées de SmartKeys ont inspiré Keyman, à Denis Martinez pour son enregistreur de touches utilisé dans ROMPTR 4B0 D, à Joseph K. Horn et Rick Neufeld pour avoir beta-testé Keyman+, et à Heiko Arneman et Otto Praxl pour leur aide dans la création de ce document html, ainsi que Arnaud Amiel pour sa traduction en Français

Wolfgang Rautenberg †


APPENDICES

Redéfinitions du navigateur More/KeyAssignments. Une touche est désignée par la lettre inscrite dessus. D'autres redéfinitions sont disponibles dans Topkeys ou Topkeys+.htm.

SD_A..F  quote Redéfini les touches SD-maintenu menu de telle sorte qu'elles renvoient leur nom entre guillemets. Ce peut être une variable globale ou un pointeur comme %CH ou ABS, ou un nom de port, rendant ceci extrêmement facile. Les noms pour les menus temporaires ou CST ne sont mis entre guillemets que s'ils son globaux. Autrement le programme qu'ils exécutent est rappelé. Ceci rend la création de menus personnalisés très aisée. RS_ utilisé sur des sous-menus tels que VECTR dans MTH rappelle ce que cette commande exécute, mais elle ne sera lisible que si vous avez installé extable.
o H  FlagBox Redéfini la touche MODE 22.2. Si pressée normalement, elle fonctionne comme d'habitude, si elle est maintenue, le navigateur de drapeaux est affiché sans avoir à appuyer sur d'autres touches. Notez que le temps défini pour une touche maintenu peut être modifié.
o I STACKMenu Redéfini la touche I (TOOL) pour afficher le sous-menu de TOOL, STACK si la touche est maintenue un peu plus longtemps que d'habitude. Ceci marche aussi en mode d'édition, ainsi lorsque l'on programme, on peut accéder à cet indispensable menu directement.
      n PICK o    StkTop Redéfini la Flèche vers le haut: Si une touche numérique n est pressée et n est toujours sur la ligne de commande, effectue un n PICK. Dans le mode par défaut, vous allez au niveau 1 de la pile comme d'habitude, mais si la touche est maintenue, vous arrivez directement au sommet de la pile.
o K Keyman
RS K  More
Redéfini la touche K. Pressée normalement, la touche se comporte comme d'habitude. Si la touche est maintenue nous obtenons le menu de Keyman. RS K assigne le navigateur More dans le mode par défaut.
SG_K RclK SD_K K&SA Assigne les commandes de Keyman RclK et K&SA aux touches shift-maintenu K.
  UP
SG PICT
Redéfini la Flèche gauche (34.1) pour qu'elle exécute UPDIR si pressée normalement mais remonte vers HOME si maintenue un peu plus longtemps. Il est possible de s'arrêter à n'importe quel niveau. Maintenant UPDIR et HOME sont sur une même touche. La touche est un bon choix étant donnée la représentation dans la zone des messages.

Important
: PICTURE est maintenant disponible avec SG (standard sur la HP48). Bien sûr, dans l'environnement PICTURE, SG_ fonctionne normalement.
SG_     PAINT Assigne à SG_ un nouveau type de graphe PAINT. Il respecte la taille de PICT et ne crée pas de variable PPAR. Appuyer sur (X,Y) dans l'environnement PAINT affiche les vraies coordonnées d'un pixel, c'est à dire que X:0 et Y:0 défini le coin supérieur gauche. Il n'est pas nécessaire de changer PPAR pour s'assurer des coordonnées exactes! Ceci est très utile lorsque l'on dessine à la main ou que l'on veut placer des GROBS exactement pour des programmes de jeux. Spécial: PAINT fonctionne aussi en mode d'édition. Ceci permet de voir ce que contient PICTURE avant de retourner simplement à l'éditeur en appuyant sur CANCEL.
o   OVER Assigne la commande OVER à maintenue qui normalement effectuerait un SWAP. Ainsi ces deux opérations essentielles sont disponibles avec une même touche.
o 0..3  Ports
(Keyman+)
o 0..2 Ports
(Keyman)
En mode par défaut, appuyer sur les touches 0, 1, 2 ou 3 un peu plus longtemps affiche un navigateur de port pour le port associé (sur le 49 qui est un peu plus lent, le menu port est affiché) ainsi qu'un menu d'une page avec des options de bases. Les navigateurs sont identiques pour chacun des ports. En particulier, 3-maintenu est le navigateur pour la carte SD. De plus, certaines touches sont actives dans le navigateur: NXT change la vue, EVAL évalue un objet. D'autres touches, en particulier les Flèches, 0 1 2 ou 3 pour visiter les ports, +/- et ALPHA fonctionnent comme dans le filer standard de la hp49g+.

Note: En mode d'édition, les touches 0,1,2,3 maintenues affichent le menu du port correspondant ce qui est plus utile lors de la programmation qu'un navigateur.