Typematrix, couper/copier/coller et FFXIV
Depuis le script Autohotkey pour Telegram, je ne sais pas pourquoi, mais je n’arrête pas de bidouiller pour améliorer mon utilisation du clavier. Là, il s’agit d’améliorer le copier coller avec un Typematrix : en effet, vu le placement des lettres « c » et « v » en bépo, l’opération ne se fait plus d’une seule main.
Les créateurs du clavier y ont pensé et ont mis 3 raccourcis à activer avec la touche « Fn » en bas à gauche :

Seulement cette solution n’est pas parfaite : elle envoie en fait respectivement les séquences de touches Shift-Suppr
, Ctrl-Insert
et Shift-Insert
qui sont des raccourcis très répandus pour couper, copier et coller en informatique. Là où ça coince, c’est que certains logiciels ne prennent pas en compte ces séquences et du coup, on est privé de copier-coller dans ceux-ci.
C’est là qu’entre en jeu Autohotkey, pour convertir ces séquences en classique Ctrl-x
, Ctrl-c
, Ctrl-v
!
#singleinstance
#NoTrayIcon
#NoEnv
^Insert::Send, ^c
+Insert::Send, ^v
+Delete::Send, ^x

Et voilà ! Enfin… presque, j’ai fait ce bout de script à la base pour un jeu (Final Fantasy XIV pour ne pas le citer) et ces trois petites lignes n’ont rien arrangé du tout en jeu. J’ai alors fouillé la documentation et fait beaucoup d’expérimentations pour arriver à ça :
#singleinstance
#NoTrayIcon
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#IfWinActive ahk_class FFXIVGAME
^Insert::
Send, ^c
return
+Insert::
ControlSend,, {Shift up}{Control up}, ahk_class FFXIVGAME
SetKeyDelay, -1, 50
ControlSend,, {Control down}v{Control up}, ahk_class FFXIVGAME
SetKeyDelay, -1, -1
return
+Delete::
ControlSend,, {Shift up}{Control up}, ahk_class FFXIVGAME
SetKeyDelay, -1, 50
ControlSend,, {Control down}{x}{Control up}, ahk_class FFXIVGAME
SetKeyDelay, -1, -1
return
#IfWinActive
^Insert::Send, ^c
+Insert::Send, ^v
+Delete::Send, ^x
Une petite explication s’impose. Comme je voulais une autre combinaison pour FFXIV, j’ai ouvert une section dédiée au jeu avec #IfWinActive ahk_class FFXIVGAME
et je la termine pour revenir à un mode global avec #IfWinActive
(sans paramètre). Le ahk_class
dit à AutoHotkey quelle fenêtre reçoit ces commandes et on trouve cette classe en utilisant le Window Spy d’Autohotkey.
Ensuite, le script envoie des touches et Windows accepte plusieurs façon d’envoyer des entrées, je n’y connais pas grand chose mais déjà, entre le mode sur le bureau et DirectX, ça doit être différent. J’ai testé plusieurs choses et SendEvent
ainsi que ControlSend
sont les seuls qui fonctionnent. Ce dernier fonctionne nettement mieux sur FFXIV mais l’info peut être utile si jamais ça ne marche pas pour vous dans un autre jeux.
Le second problème, c’est que le Typematrix semble garder Shift
appuyé plus longtemps que nécessaire pour faire Shift-Insert
et du coup, je force un levé de touche Shift
. Le levé de Control
est pour nettoyer le tout car il insérait un « v » au premier « coller » après un « copier ». Un temps de pressage de touche est configuré pour laisser le jeu capturer les entrées.
Enfin, pour ceux qui seraient tenté d’utiliser ahk_exe
à la place de ahk_class
le nom de l’exe change selon que vous lancez le jeu en DX9 ou DX11 (me suis fait avoir…).
En espérant que ça puisse servir à d’autre : bon copier coller in game !