Comme dit dans le titre, je vais montrer comment obtenir un layout proche du bépo.
Mais pourquoi donc ?

- En ces temps modernes et les aléas de la vie, ma seule possibilité de replonger dans l'univers ST est l'émulation.
- J'utilise le layout bépo au quotidien
, et sans regarder
car...
- Mon clavier est un typematrix sans sérigraphie
Bref, pour saisir un petit listing en gfa, je dois le faire dans un éditeur linux, puis convertir les sauts de lignes, démarrer l'émulateur, charger le listing -très lent- et... pas de chance si je dois corriger des erreurs, tester les touches une à une pour trouver le bon caractère...


Hatari propose un fichier de mapping mais basé sur les symboles linux de touches clavier (traduction : rechercher le nom symbolique de la touche dans un include perdu au fin fond d'une arborescence) et donc... j'ai laissé tombé.
Après quelques recherches, j'ai trouvé que ce serait plus simple de patcher la ROM (spoiler : et ça fonctionne) et de l'utiliser avec l'émulateur de son choix.
Un peu de théorie
J'ai découvert que le layout stocké dans la ROM du TOS est organisée en 3 tables :
- code Ascii-Atari-ST correspondant aux touches sans shift ;
- code Ascii-Atari-ST correspondant aux touches avec shift ;
- code Ascii-Atari-ST correspondant aux touches avec capslock ;
Donc il suffit de patcher cette zone en remplaçant les correspondances.
Pour info, l'Ascii-Atari-ST :

https://en.wikipedia.org/wiki/Atari_ST_character_seten.wikipedia.org
Mode opératoire
Requis
- Une ROM (p.ex. ma rom s'appelle "tos162fr.rom")
- Un éditeur hexa
- La liste des codes ascii-atari-st dans l'ordre des touches ligne par ligne, de haut en bas (je fournis ma version en fin d'article)
- on commence par dupliquer la rom pour travailler sur ce duplicata.
- on ouvre le duplicata dans l'editeur hexa
- on cherche "azerty", on tombe sur une zone qui ressemble à ce qu'on recherche (pour ma rom, je trouve la zone à l'offset $2A354.)tos-bepo-find-layout.pngGoogle Docs
- On édite la table en s'aidant de la liste de code pré-établie -oui c'est fastidieux-tos-bepo-replace-layout.pngGoogle Docs
- On sauve la rom patchée, et on teste. [b]Veiller à ce que l'émulateur utilise les scancodes des touches, plutôt que les symboles (hatari)[/b]tos-bepo-result.pngGoogle Docs
Petit piège : habitué à voir la touche avec les symboles "supérieur" et "inférieur" en bas à gauche, j'ai cru que la dernière ligne était décalée d'un cran. En fait, les mappings pour "supérieur" et pour "inférieur" sont un peu plus loin, avant le mapping du pavé numérique. J'ai été bon pour une petite retouche.
Et voici ma map bépo. Comme il n'y a pas de mapping pour la touche "ALT", j'ai détourné la carte de la touche CAPSLOCK pour caser quelques caractères que je n'ai pas pu recaser ailleurs. J'ai isolé dans une dernière lignes les touches effectivement spécifiques en capslock, pour les autres j'ai repris le mapping des touches sans shift. Et pour gagner de la place en largeur, les codes ascii sont collés.
Map bépo version 1
* . . . . . . . . . . . . * * . . . . . . . . . . . . * * . . . . . . . . . . . * * . . . . . . . . . . . * * * . " # $ ( ) @ + - / * = % b é p o è \ v d l j z w a u i e , c t s r n m à y x . k ' q g h f ç 2223242829402b2d2f2a3d25 6282706f8a5c76646c6a7a77 617569652c637473726e6d 8679782e6b277167686687 20 * . . . . . . . . . . . . * * . . . . . . . . . . . . * * . . . . . . . . . . . * * . . . . . . . . . . . * * * . 1 2 3 4 5 6 7 8 9 0 | & B É P O œ ! V D L J Z W A U I E ; C T S R N M À Y X : K ? Q G H F Ç _ 313233343536373839307c26 4290504fb42156444c4a5a57 415549453b435453524e4d b659583a4b3f5147484680 5f * . . . . . . . . . . . . * * . . . . . . . . . . . . * * . . . . . . . . . . . * * . . . . . . . . . . . * * * . " < > [ ] ^ + - / * = % b é p o Œ \ v d l j z w æ ù ï Æ , © t s ® n m à { } . ~ ' q g h f ç 223c3e5b5d5e2b2d2f2a3d25 6282706fb55c76646c6a7a77 91978b922cbd7473be6e6d 867b7d2e7e277167686687 20 * . . . . . . . . . . . . * * . . . . . . . . . . . . * * . . . . . . . . . . . * * . . . . . . . . . . . * * * . < > [ ] ^ Œ æ ù ï Æ © ® { } ~ 3c3e5b5d5e b5 91978b92 bd be 7b7d 7e 20 (pour mémoire, touche spécifiques à Caps Lock)