OPTIMISATION DES AFFECTATIONS CLAVIER

par  Alaindor

  

   

 

Voici un tutorial pour optimiser les affectations clavier au-delà de ce que permet l'interface standard SdAO, et notamment :


- Combiner des actions différentes quand une touche est appuyée, relâchée, cliquée ou double-cliquée,
- Séparer les touches modificatrices gauche et droite : shift, control, alt,...
- Affecter au clavier les mouvement souris (au lieu de click souris).

Cela sera fait au travers du fichier lotro.keymap.

Ce tutorial ne couvre pas les alias / raccourcis, pour lesquels d'excellent guides existent par ailleurs, et qu'on peut utiliser en combinaison avec ce tutorial.

Toutes les affectations clavier du jeu se font à travers un fichier unique pour tous vos personnages : 

lotro.keymap qui se trouve dans le répertoire Mes Documents/Le Seigneur des Anneaux Online.

Ce fichier est chargé au démarrage du jeu (donc le jeu est à redémarrer après toute modification manuelle du fichier).

Vous pouvez utiliser des affectations différentes par personnage en jonglant avec des fichiers différents (renommages).

ATTENTION : si le client SdAO rencontre un problème dans l'interprétation du fichier (coquilles,...), celui-ci sera remplacé impitoyablement par un fichier défaut et TOUTES VOS CUSTOMISATIONS SERONT PERDUES.

Il est donc INDISPENSABLE avant toute manipulation de SAUVEGARDER ce fichier.

 

   

   

(1) Généralités

Ce fichier est structuré de la manière suivante :

Devices - Liste ordonnée de tous les périphériques d'entrée, générée par le système (à ne pas toucher)
MetaKeys - Liste des touches modificatrices, shift, alt, ctrl, etc
Bindings - Les affectations clavier à chaque action, classées par chapitre, notamment (mais pas seulement) :
Main - Les actions dans l'interface standard
EditControls - Les actions quand on est en édition dans une fenêtre de texte type chat
MusicUI - Les actions en mode musique
MapPanel - Les actions en mode carte du monde
VendorBuyUI - Les actions en mode interaction avec PNJ vendeur,...

Les touches sont nommées selon les constantes définies par Microsoft : http://msdn.microsoft.com/en-us/library/ee418641(VS.85).aspx

Pour les touches ordinaires en général cela revient à préfixer avec DIK_, exemples:
DIK_0
DIK_F1
DIK_S

Les autres touches ont un nom en général explicite :
DIK_DELETE
DIK_ESCAPE
DIK_NUMPAD0
DIK_LCONTROL
DIK_LSHIFT
DIK_LMENU

Devices:
La liste des périphériques d'entrée.

On s'intéressera essentiellement aux deux premiers, toujours : clavier en 0 et souris en 1

(éventuellement les joysticks suivent, pour lesquels vous pouvez utiliser les boutons mais pas les axes, quoique si mais lisez le début du fichier lotro.keymap si vous en avez besoin...).
Keyboard [ GUID_SysKeyboard ]
Mouse [ GUID_SysMouse ]

SECTION A NE PAS MODIFIER
 

   

   

(2) Gérer les touches modificatrices

MetaKeys:

Voici les touches modificatrices dites meta : en appuyant sur shift on modifie le comportement des autres touches appuyées simultanément.

On peut en définir jusqu'à 32. Cela se fait de la manière suivante :

MetaKeys
[
1 [ 0 DIK_LSHIFT ]
1 [ 0 DIK_RSHIFT ]
2 [ 0 DIK_LCONTROL ]
2 [ 0 DIK_RCONTROL ]
3 [ 0 DIK_LMENU ]
3 [ 0 DIK_RALT ]
4 [ 0 DIK_LWIN ]
4 [ 0 DIK_RWIN ]
]

Ceci signifie : première modification (numéro 1) atteinte en appuyant soit sur LSHIFT soit sur RSHIFT du clavier (périphérique 0),

                    deuxième modification (numéro 2) atteinte en appuyant soit sur LCONTROL soit sur RCONTROL du clavier (périphérique 0), etc...

... et ensuite, chaque fonction sera définie à l'aide d'un masque hexa (voir section suivante) défini comme suit (avec l'exemple précédent) :
0x00000000 - Fonction de base sans modification
0x00000001 - Shift
0x00000002 - Ctrl
0x00000004 - Alt
0x00000008 - Win

... et cela double à chaque fois qu'on en rajoute. Dans l'exemple précédent, si je veux séparer les actions liées aux touches WIN droite et WIN gauche, je remplace la dernière ligne par :

5 [ 0 DIK_RWIN ]

... et le masque hexa correspondant sera :
0x0000008 - Win gauche
0x0000010 - Win droite


Ce masque hexa est susceptible de cumuler des appuis sur plusieurs touches meta en simultané, par exemple pour associer une fonction à shift+control+touche, ou bien Shift+Ctrl+Alt+touche on utilisera :
0x00000003 - Shift+Ctrl
0x00000007 - Shift+Ctrl+Alt


Enfin, si on veut utiliser des boutons souris en touches meta :

1 [ 1 DIMOFS_BUTTON0 ]
2 [ 1 DIMOFS_BUTTON1 ]
3 [ 1 DIMOFS_BUTTON2 ]

Bouton 0 = gauche
Bouton 1 = droite
Bouton 2 = roulette

Evidemment, il n'est pas autorisé de définir une touche meta utilisée par ailleurs pour une action.

 

   

   

(3) Gestion totale des touches

Main:

La structure générale de chaque action est la suivante, avec jusqu'à 6 champs que je vais détailler (les deux derniers sont optionnels mais les crochets ne le sont pas !) :

AutoLootAll [ User [ 0 DIK_X ] 0x00000001 DblClick ]

L'ordre est imposé par le client SdAO, ne cherchez pas à faire du cosmétique cela sera perdu et automatiquement ré-ordonné.

3.1) Premier champ : nom de l'action. 

 

Celui-ci est en général explicite et déjà défini dans le fichier lotro.keymap que vous éditez. 

IMPORTANT : une touche qui a une action par défaut doit se voir assigner l'action DoNothing si on n'utilise plus cette touche.

3.2) Second champ : Old ou User. 

Chaque configuration par défaut est "Old", si vous la modifiez vous DEVEZ remplacer "Old" par "User" sans les guillemets (sinon cette modification sera perdue).

3.3) Troisième champ : numéro du périphérique. 

A moins d'utiliser un joystick ou autre chose, cela sera toujours 0 pour une touche clavier ou 1 pour un bouton souris.

3.4) Quatrième champ : nom de la touche (DIK_A, DIK_F1,...) comme mentionné plus haut.

3.5) Cinquième champ, optionnel : 

masque hexa correspondant à la combinaison des touches shift, ctrl, alt... associée à cette action. 

Si on ne met rien, alors l'action est déclenchée sur appui normal de la touche (sans shift ni rien).

3.6) Sixième champ, optionnel : Up, Down, DblClick ou Tap

Si rien n'est mis, alors il s'agit d'un appui normal de la touche en question (comportement par défaut). 

Si on met :
- Down = quand la touche est appuyée
- Up = quand la touche est relâchée
- Tap = quand la touche est appuyée / relâchée en moins de 100 ms
- DblClick = un équivalent "double-click" de la touche en moins de 200 ms

On peut donc affecter des actions différentes à une même touche, avec ou sans touche meta, selon comment on manipule cette touche, et combiner :
- Down avec Up et Tap
- Up avec Down et DblClick
- Tap avec DblClick

Si vous avez bien suivi, vous avez donc compris que l'exemple du début du chapitre (3) affecte la fonction "auto loot" à la touche shift-X du clavier, quand cette touche est double-cliquée.

 

   

   

IL EST TRES IMPORTANT DE VERIFIER QUE :

 

- Chaque combinaison touches+meta n'est affectée qu'à une action unique


- Toutes les affectations par défaut ("Old") sont soit inchangées, soit ré-affectées à une autre fonction, soit affectées à une action DoNothing si elles deviennent inutilisées, par exemple pour désactiver la touche F1 :
DoNothing [ User [ 0 DIK_F1 ] ]


Voici, en combinant avec des alias on peut décupler les possibilités d'affectations... il faut juste que le cerveau suive !

Bon courage et contactez-moi pour toute question, etc. A bientôt IG