Le segment de code de la figure 5 représente
la sous-procédure complète
permettant de déterminer la touche
actionnée et si elle est disponible. Si
elle ne l'est pas, il envoie un message
d'erreur. Si elle l'est, il exécute la sousprocédure
de la touche de fonction
correspondante.
La figure 6 montre
La procédure de contrôle des touches de fonction
la définition du Allowed Function Key Mask comme une matrice de compilation
de 29 éléments dont les valeurs sont définies à la fin du
code source (comme indiqué). Dans cet exemple, j’ai autorisé
l’utilisation des touches de fonction F3, F5, F6, F12 et de
toutes les touches de non-fonction (Enter, Page, par
exemple). Si je voulais activer une autre touche ultérieurement,
il me suffirait d’insérer un « Y » dans l’élément de matrice
correspondant. Ensuite, il suffirait d’insérer le code
dans la bonne procédure de touche de fonction.
La figure 5 montre la sous-procédure de contrôle des
touches de fonction. Elle est appelée après le ExFmt pour déterminer
l’action à mener après que l’utilisateur ait actionné
une touche. Premièrement, elle effectue un %Scan de la
structure de données ds_keys (contenant nos configurations
binaires de touches) avec la configuration binaire renvoyée
dans l’INFDS de la station de travail. Cela définit la valeur
d’index du hit de la touche de fonction au champ KeyHit.
Ensuite, nous entrons dans le groupe Select pour déterminer
si la touche de fonction est autorisée. S’il n’y a pas un
« Y » dans l’élément correspondant de la matrice pa_key,
alors j’envoie un appel à mon SendMsg (une procédure externe
contenue dans un programme de service) qui envoie
un message au sous-fichier de messages de l’écran du programme
indiquant que la touche de fonction n’est pas autorisée
en ce moment.
Quand la matrice pa_key contient un « Y » dans l’élément
indexé KeyHit, c’est que la touche est active. Donc, nous définissons
la valeur de PtrProc (rappelez-vous, notre pointeur
de prototype de procédure général) d’après celui de
l’adresse de procédure contenue dans l’élément correspondant
de la matrice Prp (adresse de procédure de touche de
fonction).
A ce stade, le KeyProc de prototype général est basé sur
l’adresse de stockage de la sous-procédure de la touche de
fonction que nous voulons exécuter.
La commande CallP sur la ligne suivante fait l’appel de
sous-procédure vers la procédure de touche de fonction appropriée,
qui apparaît en figure 7.
Il est intéressant de noter que, bien que la commande
CallP requière un champ de type de pointeur de procédure
(ou un nom de procédure valide), elle ne peut pas traiter
l’élément de matrice lui-même ; vous ne pouvez pas insérer
le Prp(KeyHit) directement dans l’instruction CallP. En revanche,
vous pourriez utiliser CallB avec Prp(KeyHit). IBM
autorise apparemment cette souplesse supplémentaire avec
son CallB (appel de procédure lié statique).
Dans la figure 7, l’espace étant limité, je ne montre que
les touches de non-fonction (Enter, Page, par exemple) et les
cinq premières procédures de touches de fonction. Il y a un
exemple de code de traitement dans la procédure $F3 (Exit)
qui pourrait être utilisé pour terminer un programme. On le
voit, les procédures sont très visibles et elles se trouvent dans
une position relative standard dans le code source, donc
elles sont faciles à trouver. Quand vous voulez activer une
nouvelle touche de fonction, il suffit d’ajouter le code dans la
sous-procédure appropriée.
Enfin, en figure 8, j’ai donné un exemple de contexte de
l’appel vers la sous-procédure $FKeys provenant du corps
central du code de traitement du fichier écran.
Téléchargez cette ressource
Mac en entreprise : le levier d’un poste de travail moderne
Ce livre blanc répond aux 9 questions clés des entreprises sur l’intégration du Mac : sécurité, compatibilité, gestion, productivité, coûts, attractivité talents, RSE et IA, et l’accompagnement sur mesure proposé par inmac wstore.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Visibilité, réputation, clients : ce que les petites entreprises ne pourront plus déléguer en 2027
- IA souveraine : l’Europe avance, mais son interconnexion prend du retard
- Cloud public : la sécurité des données s’impose comme premier critère pour les agents publics
- Le champ de bataille des fournisseurs de services n’est plus l’IA, mais la confiance
Articles les + lus
Continuer avec Exchange Server : quelles conséquences ?
Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
Sécurité : une approche dans la durée avant tout
À la une de la chaîne Tech
- Continuer avec Exchange Server : quelles conséquences ?
- Raccourcis Réseau et Navigateur : le kit de Diagnostic des Professionnels IT
- Raccourcis PowerShell et Windows Terminal pour les Professionnels IT
- Commandes Windows 11 : le Guide des Outils accessibles avec Win + R
- Sécurité : une approche dans la durée avant tout
