====== Ergodox ====== {{tag>clavier ergodox}} ===== Introduction ===== Ça fait longtemps que j'ai le projet de me fabriquer et d'apprendre à utiliser un clavier mécanique. Après avoir regardé longuement, bavé sur des modèles comme le [[https://marcyoung.us/post/pterodactyl/|Pterodactyl]], ou d'autres claviers particuliers comme le [[https://www.velocifiretech.com/product/dumang-dk6-ergo-v2/|DUMANG DK6]] ([[https://hackers.town/@zpojqwfejwfhiunz/103573273574733970|pouet mastodon]]), j'ai choisi de m'orienter vers un [[https://www.ergodox.io/|Ergodox]]. Après avoir rêvé de tout reprendre de A à Z, de fabriquer le boitier en fibre de carbone et redessiner la carte électronique, je me suis avoué vaincu par le temps. J'ai commandé un kit chez [[https://falba.tech/customize-your-keyboard/customize-your-ergodox/?v=d3dcf429c679|falba.tech]]. {{ :img_20190207_232329.jpg?400 |}} (D'autres photos : [[https://images.simonlefort.be/?dir=Keyboard|Galerie]]) ===== Programmer le clavier ===== ==== Installation de QMK ==== Après avoir testé le [[https://github.com/tmk/tmk_keyboard|firmware TMK (github)]] sans succès, je suis passé à [[https://qmk.fm/|QMK (site)]]. Pour l'installation, j'ai suivi la [[https://docs.qmk.fm/#/|documentation de QMK]]. Installation avec pip3 : $ python3 -m pip install --user qmk J'ai copié [[https://github.com/qmk/qmk_firmware/blob/master/util/udev/50-qmk.rules|ce fichier]] pour les règles [[informatique:udev]] : $ sudo vim /etc/udev/rules.d/50-qmk.rules $ sudo udevadm control --reload-rules $ sudo udevadm trigger J'ai fait la configuration comme indiqué : $ qmk setup Il installe toutes les dépendances, vérifie les règles udev, demande où il peut s'installer par défaut, etc.. (Il reste quelques erreurs relatives à udev mais elles concernent d'autres types de clavier et ne semblent pas poser de problèmes pour la suite.) ==== Créer une "keymap" ==== J'ai créé une nouvelle keymap dans le dossier de l'ergodox_ez (qui correspond le plus à ce que j'ai) : $ qmk new-keymap -kb ergodox_ez Keymap Name: my-ergodox Ψ my-ergodox keymap directory created in: /home/simon/qmk_firmware/keyboards/ergodox_ez/keymaps/my-ergodox Ψ Compile a firmware with your new keymap by typing: qmk compile -kb ergodox_ez -km my-ergodox On peut modifier cette keymap : $ vim ~/qmk_firmware/keyboards/ergodox_ez/keymaps/my-ergodox/keymap.c Ensuite, on peut la compiler : $ qmk compile -kb ergodox_ez -km my-ergodox ==== Envoyer la configuration sur le clavier ==== Enfin, on peut l'envoyer sur le clavier avec [[informatique:teensy-loader-cli]] : $ teensy_loader_cli --mcu=atmega32u4 -v -w ~/qmk_firmware/.build/ergodox_ez_my-ergodox.hex **__État des lieux le 18/10/2020 :__** Toutes les touches fonctionnes mais je n'ai pas encore modifié la keymap créée par défaut... Il faut que j'attaque ça avant de m'habituer au clavier. **__État des lieux le 19/10/2020 :__** J'avance, j'ai un layout à peu près convenable pour le calque de base. **__État des lieux le 30/11/2020 :__** J'approche d'un layout correct pour la base ainsi que le calque "média" et "symbole". **__État des lieux le 08/02/2021 :__** J'ai corrigé toutes les touches "lettres". #include QMK_KEYBOARD_H #include "version.h" enum layers { BASE, // default layer SYMB, // symbols MDIA, // media keys }; enum custom_keycodes { #ifdef ORYX_CONFIGURATOR VRSN = EZ_SAFE_RANGE, #else VRSN = SAFE_RANGE, #endif RGB_SLD }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap 0: Basic layer * * ,--------------------------------------------------. ,--------------------------------------------------. * | µ | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 0 | - | = | Del | * |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------| * | Tab | Q | W | E | R | T | Y | | U | I | O | P | [ | ] | BkSp | * |--------+------+------+------+------+------| | | |------+------+------+------+------+--------| * | CapsLk | A | S | D | F | G |------| |------| J | K | L | ; | ' | Enter | * |--------+------+------+------+------+------| B | | H |------+------+------+------+------+--------| * | LShift |event.pressed) { switch (keycode) { case VRSN: SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION); return false; #ifdef RGBLIGHT_ENABLE case RGB_SLD: rgblight_mode(1); return false; #endif } } return true; } // Runs just one time when the keyboard initializes. void keyboard_post_init_user(void) { #ifdef RGBLIGHT_COLOR_LAYER_0 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); #endif }; // Runs whenever there is a layer state change. layer_state_t layer_state_set_user(layer_state_t state) { ergodox_board_led_off(); ergodox_right_led_1_off(); ergodox_right_led_2_off(); ergodox_right_led_3_off(); uint8_t layer = get_highest_layer(state); switch (layer) { case 0: #ifdef RGBLIGHT_COLOR_LAYER_0 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_0); #endif break; case 1: ergodox_right_led_1_on(); #ifdef RGBLIGHT_COLOR_LAYER_1 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_1); #endif break; case 2: ergodox_right_led_2_on(); #ifdef RGBLIGHT_COLOR_LAYER_2 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_2); #endif break; case 3: ergodox_right_led_3_on(); #ifdef RGBLIGHT_COLOR_LAYER_3 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_3); #endif break; case 4: ergodox_right_led_1_on(); ergodox_right_led_2_on(); #ifdef RGBLIGHT_COLOR_LAYER_4 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_4); #endif break; case 5: ergodox_right_led_1_on(); ergodox_right_led_3_on(); #ifdef RGBLIGHT_COLOR_LAYER_5 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_5); #endif break; case 6: ergodox_right_led_2_on(); ergodox_right_led_3_on(); #ifdef RGBLIGHT_COLOR_LAYER_6 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_6); #endif break; case 7: ergodox_right_led_1_on(); ergodox_right_led_2_on(); ergodox_right_led_3_on(); #ifdef RGBLIGHT_COLOR_LAYER_7 rgblight_setrgb(RGBLIGHT_COLOR_LAYER_7); #endif break; default: break; } return state; }; ===== Sources ===== * [[https://www.ergodox.io/|ErgoDox]] : Le site de l'ErgoDox "d'origine". * [[https://ergodox-ez.com/|ErgoDox-EZ]] : Une nouvelle version de l'ErgoDox. * [[https://www.reddit.com/r/MechanicalKeyboards/|MechanicalKeyboards]] : La communauté Reddit autour des claviers mécaniques.