Pister la touche « Entrée »
ven 18 septembre 2020Dans les programmes gérant des écrans DSPF, nous avons des outils qui nous indiquent si des touches de fonction ont été enfoncées.
Et pourtant, pour la simple touche « Entrée », nous n’avons rien. Du moins d’officiel.
Heureusement, nous pouvons contourner le problème grâce à la DS de l’écran File Information DATA STRUCTURE (INFDS).
En position 369, in y a un indicateur qui peut nous indiquer si la touche « Entrée » a été actionnée. Nous allons utiliser les valeurs sous format hexadécimal.
**FREE dcl-f Fichier_DSPF workstn infds(Info_fichier); //--------------------------------------------------------------- // File information Data structure //--------------------------------------------------------------- dcl-ds Info_fichier; Touche_pressee char(1) pos(369); end-ds; //--------------------------------------------------------------- // Constant //--------------------------------------------------------------- dcl-c Entree const(x'F1'); //-------- // Quelques paragraphes de codes plus loin... //-------- // Select ; When Touche_pressee = Entree; ExSr Valide-Donnees; EndSl;
- Ligne 2 – Le fichier DSPF est déclarée avec le mot-clef infds afin de dire au système que nous allons utiliser la File Information DATA STRUCTURE
- Ligne 7 – Nous déclarons la composition de la File Information DATA STRUCTURE. A l’intérieure, plus spécifiquement, nous déclarons une variable en position 369 de 1 octet. Elle contient le code de la touche qui a été actionnée par l’utilisateur.
- Ligne 14 – Nous déclarons la constante qui correspond au code de la touche « Entrée »
- Ligne 21 – Pour savoir si la touche « Entrée » a été actionnée, nous comparons la variable contenant le code de la touche avec la valeur correspond à la touche « Entrée »
Bien sûr, la position 369 permet de tester d’autres touches, voici une liste des valeurs possibles :
dcl-c F1 const(x'31'); dcl-c F2 const(x'32'); dcl-c F3 const(x'33'); dcl-c F4 const(x'34'); dcl-c F5 const(x'35'); dcl-c F6 const(x'36'); dcl-c F7 const(x'37'); dcl-c F8 const(x'38'); dcl-c F9 const(x'39'); dcl-c F10 const(x'3A'); dcl-c F11 const(x'3B'); dcl-c F12 const(x'3C'); dcl-c F13 const(x'B1'); dcl-c F14 const(x'B2'); dcl-c F15 const(x'B3'); dcl-c F16 const(x'B4'); dcl-c F17 const(x'B5'); dcl-c F18 const(x'B6'); dcl-c F19 const(x'B7'); dcl-c F20 const(x'B8'); dcl-c F21 const(x'B9'); dcl-c F22 const(x'BA'); dcl-c F23 const(x'BB'); dcl-c F24 const(x'BC'); * Page Down/Roll Up dcl-c RollUp const(x'F5'); dcl-c PageDown const(x'F5'); * Page Up/Roll Down dcl-c RollDown const(x'F4'); dcl-c PageUp const(x'F4'); * Enter dcl-c Enter const(x'F1'); dcl-c Help const(x'F3'); dcl-c Print const(x'F6');
Voir l’article original :