4 – Comment faire des macros
Ergodox : un seul problème
Beaucoup de personnes, moi y compris, ont acheté l’Ergodox pour pallier à deux choses gênantes des claviers actuels (je parle pour ceux qui tapent beaucoup, comme moi) :
- Être beaucoup mieux positionné avec les mains pour pouvoir écrire ;
- Pouvoir entièrement configurer son clavier afin de pouvoir accéder plus rapidement aux touches d’habitude difficiles d’accès.
Vous allez sûrement faire les étapes que j’ai fait à savoir :
- Utiliser le configurateur sur le site Massdrop ici ;
- Faire une vraie correspondance entre les touches américaines QWERTY et notre bon clavier français AZERTY et j’ai fait un article dessus il y a quelques jours ;
- S’apercevoir que finalement il manque des choses, notamment la possibilité de faire un pipe (j’ai dit “un” pipe, pas une pipe !) ou d’autres choses, qui ne nécessitent pas l’appui avec la touche SHIFT mais l’appui avec la touche
ALTGR
(oui oui avec leGR
c’est à dire uniquement la toucheALT
de droite du clavier).
Donc vous allez sûrement essayer d’aller chercher les dernières sources concernant le programme qui génère le fameux fichier de configuration de l’ergodox, le fichier HEX.
Ici : https://github.com/benblazak/ergodox-firmware
.
Eh bien la compilation ne fonctionne pas. Pour être plus précis elle fonctionne, mais le fichier généré ne fait rien du tout : mon Ergodox ne fonctionne pas du tout.
Alors je me suis pris en main et j’ai commencé à étudier le code qui a été fait.
Maintenant venons-en à…
Ergodox : la solution
- Utilisez le configurateur sur le site Massdrop ici ;
- Configurez votre clavier comme vous le voulez, en utilisant les bonnes “traductions” des touches dont je donne l’aide dans l’article précédent sur l’Ergodox ;
- Récupérez les sources, pas juste le fichier binaire, cochez juste comme ceci :
- Dans le fichier
lib\key-functions\public\special.c
, ajoutez aux directives “include” celle-ci :#include <util/delay.h>
- Dans même fichier
lib\key-functions\public\special.c
, ajoutez cette fonction :
/*
* [name]
* ALTGR + press|release
*
* [description]
* Generate a 'altgr' press or release before the
* normal keypress or keyrelease
*/
void kbfun_altgr_press_release(void) {
/* Remember old state before modifying it */
bool backup_pressed = _kbfun_is_pressed(KEY_RightAlt);
/* Force the state to "pressed" */
_kbfun_press_release(true, KEY_RightAlt);
kbfun_press_release();
/* Send the key */
usb_keyboard_send();
_delay_ms(MAKEFILE_DEBOUNCE_TIME);
/* Restore previous state */
_kbfun_press_release(backup_pressed, KEY_RightAlt);
} - Maintenant, vous avez donc crée une fonction qui permet de “forcer” l’appui sur ALTGR et d’envoyer la touche concernée.
Déclarez cette fonction danslib/key-functions/public.h
:Juste avant la déclaration de
kbfun_shift_press_release
, mettez-y la vôtre :
// special
void kbfun_altgr_press_release (void);
void kbfun_shift_press_release (void);
void kbfun_2_keys_capslock_press_release (void);
- Touche finale : le fichier dans lequel il y a la configuration de votre clavier :
keyboard/ergodox/layout/default--layout.c
A l’endroit des définitions, ajoutez-y la vôtre :
// DEFINITIONS
...
blabla
...
#define salprre &kbfun_altgr_press_release
#define sshprre &kbfun_shift_press_release
...
blabla
...
- Ca y est, vous avez votre fonction prête à être appelée.
Il vous suffira juste de chercher sur quelle touche l’appliquer.
Je vais vous donner un exemple simple, et après à vous de l’adapter : l’exemple est avec le symbole € : nous allons remplacer, juste pour l’exemple, la touche “e” par simuler qu’on appuie sur la toucheALTGR
ete
(comme on le fait sur un clavier classique, pour avoir le symbole€
).Ouvrez le fichier
keyboard/ergodox/layout/default--layout.c
dans lequel vous venez juste de déclarer (étape juste avant) votre fonctionALTGR
sous la forme raccourciesalprre
.Voici le principe qu’a fait le développeur : pour une couche, il crée deux tableaux : un tableau dans lequel il y a les “codes” clavier à envoyer, tableau qui a la taille du clavier, donc, et un autre tableau, qui a la taille du clavier, dans lequel il y a les fonctions à appeler pour chaque touche. Oui je sais c’est très laid, c’est discutable etc mais c’est fait ainsi. Comme il y a plusieurs couches, il y a donc, si vous avez suivi :
- un tableau composé lui même des tableaux des touches pour chaque couche
- un tableau composé lui même des tableaux des fonctions à appeler lorsqu’on presse la touche, et ces fonctions reçoivent en paramètre la touche qui a été cherchée dans le tableau précédent
Dans ce fichier, allez chercher là où il y a la déclaration de la touche
e
. Pour moi c’est facile, c’est sur la couche0
car j’ai configuré mon clavier presque comme un clavier “normal” AZERTY donc ici : - A partir d’ici, mémorisez bien la ligne et la colonne. Ici c’est donc ligne 2, colonne 4. Ensuite descendez dans le code et cherchez la déclaration des fonctions. Placez vous à la même couche, même ligne et même colonne comme ceci :
Et il vous suffit juste de remplacer le nom de l’appel de la fonction actuel (
kprrel
) par l’appel de votre fonction soitsalprre
- Et voilà il ne vous reste plus qu’à compiler :
- Vous avez terminé ! Transférez le fichier HEX sur votre Ergodox, et voilà : avec mon exemple, vous ne pouvez plus qu’écrire des € à la place des “e” normaux. Elle est pas belle la vie ?
- Il vous faudra répéter les opérations à partir de l’étape 7 à chaque fois que vous récupérerez un nouveau layout via le configurator du site Ergodox.
unity master server
network view = instance et sur chaque objet
un personnage c’est un composant
2 comments