La touche magique, introduction aux couches de fonctions

Dans mon post précédent je vous expliquais comment vous débarrasser de la touche capslock une fois pour toute (avec un tantinet de prétention d’ailleurs… après tout, des gens peuvent l’aimer cette touche !). Je vous y ai suggéré également quelques possibilités de remplacement utile comme ctrl ou delete (backspace). Mais j’avais laissé en suspens une possibilité encore plus séduisante aux pouvoirs immense (non ce n’est pas le côté obscur) : La métamorphose en nouvelle touche modificateur !

Une touche modificateur consiste à changer la signification des autres touches pendant la pression de celle-ci, de la même manière que l’appui sur ‘c’ avec le modificateur ctrl actionne ‘copier’ au lieu d’écrire ‘c’.

Par exemple sur mon clavier, lors de mon appui sur capslock les touches ‘ijkl’ (rangée de repos de la main droite) deviennent les flèches directionnelles ! Plus besoin sortir de la rangée de frappe pour se déplacer dans son texte ! Vous pouvez ensuite ajouter à loisir des raccourcis sur les touches alentours.

C’est ce que fait nativement le “optimizer” (non mécanique) de Matias (fabricant de clavier) avec la touche capslock tout bonnement remplacée par un chaleureux ‘optimize’. Voici un liens vers la fiche produit qui montre bien la disposition alternative et surtout le gain d’efficacité.

Cependant je ne suis pas fan de ce modèle, malgré son mérite d’effacer capslock sans concession, sa disposition “optimisée” ne l’est justement pas du tout suffisamment à mon goût, et surtout non reprogrammable ! AHK a l’énorme avantage de vous permettre de créer la disposition qui vous convient personnellement.

Grosse Note : Matias n’est pas le seul fabricant de clavier à proposer une disposition alternative, même si c’est un des rares à le proposer sur un 100 %. De nombreux claviers courts proposent des dispositions secondaires pour pallier au manque de touches. La fameuse touche optimize est communément retrouvée sous l’appellation “fonction” ou “FN”. Parmi ceux-ci, une référence est le pok3r de vortex qui propose quatre dispositions alternatives reprogrammables en live. Le design, efficace et purée épuré, s’inspire des HHKB ou Happy Hacking Keyboard. Et permet notamment d’interchanger nativement les positions de ctrl, capslock, FN via des commutateurs (DIP switch) situés au dos du clavier. Je m’arrêterai ici pour ce qui est des claviers car mon but est plutôt de parler de la couche fonction, ce sera peut-être l’objet d’un autre post.

Un autre avantage de AHK sera aussi sa portabilité (limitée toutefois Windows) car quelque soit le clavier utilisé, vous retrouverez toujours votre script et vos fonctionnalités.

Mais je pourrais m’épancher encore 4 ou 5 scroll de souris sur la question, passons plutôt à la pratique.

Si l’idée vous tente voici comment faire (ici simplement les touches ijkl deviennent les flèches de direction pendant la pression) :

Suspend On

;===Navigate
i::Up
j::Left
k::Down
l::Right

CapsLock::Suspend Off
CapsLock Up::Suspend On

Ce script a un fonctionnement un peu particulier puisque le principe est de suspendre tout le contenu tant que la touche Capslock n’est pas pressée (un certain CornSmith a fait remarquer sur stack overflow que cette méthode était plus efficace et rapide). Aucune action incluse dans le script n’est donc possible tant que la touche n’est pas enfoncée. Vous pouvez rajouter tout ce que vous voulez entre Suspend On et CapsLock::Suspend Off, ces actions seront ajoutées à votre couche fonction.

Remarque : Si vous voulez ajouter des commandes qui ne nécessitent pas capslock pressée vous devrez laisser tourner un autre script non suspendu simultanément. Les raccourcis et macros feront l’objet d’un autre post.

  Remplacer la touche Capslock, c’est bien gentil mais que faire si on veut finalement l’activer pour taper tout un texte en majuscule ? Ou pire… Si elle est passée active et qu’on ne peut plus la désactiver ! Solution 1: J’ai remarqué que l’appui d’une touche de modifier en combinaison avec capslock peut l’activer/désactiver (si capslock n’est pas pressée en premier). Rien à faire de plus avec cette solution. Solution 2: Créer un 2ème script avec une commande qui gère l’état de capslock avec par exemple shift droit et shift gauche pressées simultanément :

LShift & RShift::
if GetKeyState("CapsLock", "T") = 1
    SetCapsLockState off
else if GetKeyState("CapsLock", "T") = 0
    SetCapsLockState on
return

  Pour aller encore plus loin (et ainsi réussir à faire un post de 8km de long) sachez aussi que vous n’êtes pas obligé d’utiliser capslock comme modifier pour le layout de fonction ! Normalement là vous venez de vous dire : “c’est n’importe quoi ! Quelle autre touche accessible pourrait être sacrifiée ?!” Réponse : la barre d’espace.

Là vous vous dites : “ok, c’est bon, le mec a pété les plombs !” Mais que nenni c’est parfaitement sérieux et existant grâce à la technique du “dual role key”. C’est détaillé par spiceBar sur ce thread geekhack (forum anglais qui parle uniquement de claviers ^^). La disposition s’appelle spaceFN (pour “espace fonction”).

L’astuce est de ne déclencher la touche espace qu’au relâché de celle-ci et d’engager la partie fonction tant qu’elle est pressée. À l’usage cela fait juste une très légère latence dans l’apparition de l’espace mais qui ne gênera que ceux qui frappent du texte à longueur de journées.) Le seul point négatif : cela supprime du même coup l’auto-répétition de l’espace qui permettait de faire une série d’espace d’affilé en restant pressé.

Un utilisateur a déjà mis à disposition une implémentation du spaceFn pour AHK Cependant, si exactement ce mode qui vous tente et que vous êtes sur windows, le plus simple est de passer par le logiciel TouchCursor qui a été créé dans cette optique.

La seule raison qui me fait rester sur capslockFN plutôt que spaceFN tient du fait que les logiciels 3D/2D utilisent très souvent la barre d’espace pressée en continu pour les déplacements dans la scène ou des accès aux menus. Si vous faites de la PAO ou de la 3D je ne recommande donc pas cette méthode. Pour les autres ça ne devrait pas poser de problème. D’ailleurs pour l’histoire cette idée est en partie inspirée d’une disposition japonaise appelé SAndS (pour space and shift) qui vise à faciliter l’accès au majuscule en activant shift lorsque espace est gardée pressée.

Il est aussi très intéressant de voir que cette idée a déjà été creusée par Edgar Matias (le type à l’origine de la marque de clavier et des switch* éponymes) qui a utilisé cette technique il y a déjà un bout de temps pour créer le clavier halfkeyboard à une main pour les handicapés (en revanche vendu beaucoup trop cher à mon goût même si le design à été très réfléchi). Lors de la pression d’espace, les touches de la partie droite du clavier sont ramenées sur la partie gauche. Vous pouvez le tester directement ici (tout en web, pas besoin d’installer quoi que ce soit) et avoir ainsi un aperçu du spaceFn.

Si cela vous intéresse, pas besoin de débourser un centime, vous pouvez parfaitement programmer la même chose avec AHK ou TouchCursor.

Voilà, c’est la fin de ce mara-post (ou post-apocalyptique selon votre impression) pour vous présenter plusieurs optimisations de layout.

A+ gens du web.