Dans mon précédent article sur le remapping de touches, forcé grâce à AutoHotkey, je précisais que l'underscore (ou tiret bas) n'était tout simplement pas mappé sur un clavier PC avec ActiveGS, problème découlant en fait de KEGS et de son aversion pour les claviers AZERTY ! Sur le moment, je pensais pouvoir faire avec (ou plutôt sans). Mais depuis, j'ai commencé à utiliser GS/Bug, le debugger de l'Apple IIGS. Or, avec GS/Bug, pour poser un breakpoint sur un tool (sorte d'API du GS), il faut soit indiquer le numéro de ce tool, soit utiliser son petit nom, précédé, je vous le donne en mille, d'un underscore ! Je devais donc trouver une solution pour ramener ce caractère moribond à la vie sur un clavier PC bien de chez nous ! Pour ce cas précis, AutoHotkey n'étant pas une solution (on ne peut tout simplement pas remapper ce qui n'est pas mappé à la base !), j'ai donc dû me  tourner vers une approche plus radicale : modifier directement ActiveGS ! 

Le patch présenté ici est minimal : je n'ai effectivement remappé "en dur" qu'un seul et unique caractère (donc un seul octet à changer).
Pourquoi ne pas en profiter pour remapper tout le clavier directement dans ActiveGS me direz-vous ?
Tout simplement car la modification d'un octet est bien plus simple à effectuer que de redéfinir entièrement la table de mappage (ce qui aurait nécessité la révision d'une cinquantaine d'octets). ActiveGS est régulièrement mis à jour, il faudra donc effectuer la modification à chaque nouvelle version, ce qui peut vite devenir rébarbatif quand il y a beaucoup d'octets à changer. Et comme le script AutoHotkey fait parfaitement bien le boulot pour le remapping de tous les autres caractères, je n'ai donc modifié que l'underscore dans l'EXE en lui-même.

Concrètement, il m'a fallu d'abord localiser la table de mapping dans l'exécutable. Je passe sur les détails : cela n'aura été qu'une longue et fastidieuse analyse du code désassemblé d'ActiveGS (j'aurais d'ailleurs sans doute gagné du temps en cherchant visuellement la table directement dans l'EXE). Une fois ceci fait, ne restait plus qu'à trouver un emplacement pour notre underscore, le plus logique étant évidemment de le remettre à sa place (sur la touche "8" donc).
Problème : le mapping par défaut d'ActiveGS/KEGS prévoit que sur la touche 8 se trouve également le caractère "*" (étoile). Remplacer ce caractère étoile par notre underscore rend bien évidemment caduc le remapping de l'étoile vers la bonne touche PC par le script. Heureusement, l'étoile se trouvant aussi reportée sur le pavé numérique, il suffira donc (comme pour le signe -) d'utiliser cette touche pour notre script de remapping.

En ce qui concerne le script justement, il faudra utiliser au moins la version 0.53 à partir de laquelle la bidouille "underscore" est prise en compte. Je vous renvoie une nouvelle fois vers l'article correspondant pour les mises à jour et le téléchargement de la dernière version de ce script.

Allez, il est temps de passer à l'action. La modification expliquée ci-après ne concerne bien évidemment que la version standalone PC d'ActiveGS. Un éditeur hexadécimal est nécessaire.

 

Une fois ActiveGS.exe ouvert dans l'éditeur, il faut faire une recherche hexa sur la suite d'octets : 380000002A000000. Il n'existe normalement qu'une seule occurrence de cette chaîne.

 

 

 

Une fois localisée, il suffit alors de remplacer le 2A de cette chaîne par 5F (qui correspond au caractère underscore). N'oubliez pas de sauvegarder avant de quitter. Et travaillez toujours sur une copie, on ne le dira jamais assez !

 

 

Voici un récapitulatif des offsets où remplacer 2A par 5F suivant les versions d'ActiveGS. J'ai également incorporé l'offset pour GSport (autre adaptation de KEGS qui souffre du même problème). J'essaierai de mettre à jour cette liste au fur et à mesure des sorties de nouvelles versions.

  • ActiveGS 3.5.894 : offset A98C0
  • ActiveGS 3.5.903 (beta) : octet A98C0
  • GSport 0.2a : offset 56FA8

 

 

Et pour finir, voilà le résultat sous GS/Bug ! Mais bien entendu l'underscore est dispo peu importe l'application tournant sur le GS et est accessible depuis la touche classique d'un clavier PC ! N'oubliez pas d'utiliser conjointement au patch le script de remapping...