Typematrix, couper/copier/coller et FFXIV

Par défaut

Aller, 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 racourcis à activer avec la touche « Fn » en bas à gauche :

cut_copy_paste_tmx

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 racourcis très répendus pour couper, copier et coller en informatique. Là où ça coince, c’est que certains logiciels ne prennent pas en compte ces séquences standard 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

ARR_FFXIV_Logo

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 pour 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 de Autohotkey.

Ensuite, Autohotkey 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. Le dernier fonctionne nettement mieux sur ce jeu mais l’info peut être utile si jamais ça ne marche pas pour vous pour 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, j’envoie un levé de touche Shift. Le levé de Control est pour nettoyer le tout car ça 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…).

Bon copier coller in game !

Script Autohotkey pour Telegram Desktop

Par défaut

Mise à jour 25/04/2016: j’avais un comportement agaçant où si Telegram était déjà au premier plan, on perdait le curseur dans le champs d’entrée. C’est désormais corrigé dans l’archive.


Quand j’utilise un logiciel de messagerie instantanée sous Windows, j’aime bien pouvoir ramener la fenêtre de dicussion au premier plan sans avoir à utiliser la souris. Parfois, le logiciel possède une option pour configurer un raccourcis clavier globale (utilisable quelque soit l’application active) mais la plupart du temps, ce n’est pas possible.

L’astuce, c’est que par contre, toute les application d’IM (instant messaging) fournissent une tray icon, la petite icône à côté de l’heure. Et quand on clique, cela permet de faire apparaître la fenêtre de discussion. Du coup, il suffit de simuler un clic sur cette icône et le tour est joué !

Sous Windows, Autohotkey permet de faire ce genre de choses (et bien plus encore) et je l’avais déjà utilisé pour faire un script pour Gajim. Du coup, j’avais bien entendu envie de la même chose pour Telegram Desktop, et voici donc le script qui va bien.

Attention, il est configuré pour réagir sur Alt+$, qui est super sur bépo (« $ » étant là où est « ² » sur azerty) mais pas idéal sur azerty. Vous pouvez changer ça en modifiant dans le fichier telegram.ahk, « !$ » en ce que vous souhaitez, sachant que :

  • ! = Alt
  • ^ = Ctrl
  • # = Win
  • + = Shift

Le 2e fichier est indispensable et les 2 doivent être dans le même dossier.

Il faut aussi configurer Windows pour qu’il affiche tout le temps la tray icon de Telegram, sinon Autohotkey ne pourra pas cliquer dessus (tout est en anglais chez moi, mais avec les screenshot, vous devriez vous en sortir) :

  1. cliquez sur la petite flèche : tray
  2. cliquez sur Customize
  3. trouvez l’icône de Telegram
  4. choisir « Show icon and notifications »

Pensez à mettre un raccourcis vers le script dans le dossier « Démarrage » du menu Démarrer pour avoir la fonctionnalité disponible sans y penser (sinon lancez le en double cliquant sur le script).

Bien entendu il faudra avoir installé Autohotkey pour que le script se lance bien.

Les plus bidouilleurs pourront faire bien d’autre choses avec Autohotkey (vérouiller son poste avec la touche « Mail » par exemple, ramener au premier plan d’autres applications…).

Je présenterais sûrement des bidouilles dont je me sers quotidiennement avec Autohotkey 🙂