ergodox
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
ergodox [2019/04/10 19:56] – [Configurer le layout] simon | ergodox [2020/10/19 12:50] – [Introduction] simon | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Ergodox ====== | ====== Ergodox ====== | ||
- | {{ : | + | {{tag> |
- | (D' | + | |
- | ===== Flasher le firmware | + | ===== Introduction |
- | J'ai tout d' | + | |
- | Pour mémoire: | + | Ça fait longtemps que j'ai le projet de me fabriquer et d' |
- | < | + | |
- | <code bash> | + | |
- | simon@deb: | + | |
- | </code> | + | |
- | < | + | |
- | <code bash> | + | |
- | Clonage dans ' | + | |
- | remote: Enumerating objects: 1, done. | + | |
- | remote: Counting objects: 100% (1/1), done. | + | |
- | remote: Total 17079 (delta 0), reused 0 (delta 0), pack-reused 17078 | + | |
- | Réception | + | |
- | Résolution des deltas: 100% (10038/10038), fait. | + | |
- | </code> | + | |
- | </ | + | |
- | <code bash> | + | |
- | simon@deb:~/Programmes$ cd tmk_keyboard/keyboard/ergodox/ | + | |
- | simon@deb:~/Programmes/ | + | |
- | </code> | + | |
- | < | + | |
- | <code bash> | + | |
- | simon@deb: | + | |
- | -------- begin -------- | + | Après avoir rêvé de tout reprendre de A à Z, de fabriquer le boitier en fibre de carbone et redessiner la carte électronique, |
- | avr-gcc (GCC) 5.4.0 | + | |
- | Copyright (C) 2015 Free Software Foundation, Inc. | + | |
- | This is free software; see the source for copying conditions. | + | |
- | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | |
- | (...) | + | {{ : |
+ | (D' | ||
+ | ===== Programmer le clavier ===== | ||
- | Creating load file for Flash: ergodox_lufa.hex | + | ==== Installation de QMK ==== |
- | avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature ergodox_lufa.elf ergodox_lufa.hex | + | |
- | Creating load file for EEPROM: ergodox_lufa.eep | + | Après avoir testé le [[https://github.com/ |
- | avr-objcopy -j .eeprom --set-section-flags=.eeprom=" | + | |
- | --change-section-lma .eeprom=0 --no-change-warnings -O ihex ergodox_lufa.elf ergodox_lufa.eep || exit 0 | + | |
- | + | ||
- | Creating Extended Listing: ergodox_lufa.lss | + | |
- | avr-objdump -h -S -z ergodox_lufa.elf > ergodox_lufa.lss | + | |
- | + | ||
- | Creating Symbol Table: ergodox_lufa.sym | + | |
- | avr-nm -n ergodox_lufa.elf > ergodox_lufa.sym | + | |
- | + | ||
- | Size after: | + | |
- | | + | |
- | 23404 | + | |
- | </code> | + | |
- | </hidden> | + | |
- | Vérification du MCU (voir [[https://pjrc.com/teensy/loader_cli.html|pjrc.com]]) : | + | |
<code bash> | <code bash> | ||
- | simon@deb: | + | $ python3 -m pip install --user qmk |
- | # MCU name, you MUST set this to match the board you are using | + | |
- | MCU = atmega32u4 | + | |
- | #MCU = at90usb1286 | + | |
</ | </ | ||
- | {{ :: | + | J' |
- | {{ :: | + | |
- | {{ :: | + | |
- | </ | + | |
- | + | ||
- | Ensuite, j' | + | |
<code bash> | <code bash> | ||
- | simon@deb: | + | $ sudo vim /etc/udev/rules.d/50-qmk.rules |
- | + | $ sudo udevadm control | |
- | simon@deb:~/git$ cd qmk_firmware/ | + | $ sudo udevadm trigger |
- | + | ||
- | simon@deb: | + | |
- | autocomplete.sh | + | |
- | book.json | + | |
- | bootloader.mk | + | |
- | build_full_test.mk | + | |
- | build_keyboard.mk | + | |
- | build_layout.mk | + | |
- | build_test.mk | + | |
- | CODE_OF_CONDUCT.md | + | |
- | common_features.mk | + | |
- | + | ||
- | simon@deb: | + | |
- | total 980 | + | |
- | (...) | + | |
- | drwxr-xr-x 3 simon simon 4096 avr 10 19:49 ergodone | + | |
- | drwxr-xr-x | + | |
- | drwxr-xr-x | + | |
- | (...) | + | |
- | + | ||
- | simon@deb: | + | |
- | total 84 | + | |
- | drwxr-xr-x | + | |
- | drwxr-xr-x 243 simon simon 4096 avr 10 19:49 .. | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | drwxr-xr-x | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | -rw-r--r-- | + | |
- | drwxr-xr-x | + | |
- | + | ||
- | simon@deb: | + | |
- | total 96 | + | |
- | (...) | + | |
- | drwxr-xr-x | + | |
- | drwxr-xr-x | + | |
- | drwxr-xr-x | + | |
- | (...) | + | |
- | + | ||
- | simon@deb: | + | |
- | + | ||
- | simon@deb: | + | |
- | QMK Firmware 0.6.328 | + | |
- | Making ergodox_ez with keymap bepo_tm_style and target all | + | |
- | + | ||
- | avr-gcc (GCC) 5.4.0 | + | |
- | Copyright (C) 2015 Free Software Foundation, Inc. | + | |
- | This is free software; see the source for copying conditions. | + | |
- | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | |
- | + | ||
- | Size before: | + | |
- | | + | |
- | 0 30658 | + | |
- | + | ||
- | Compiling: tmk_core/ | + | |
- | Linking: .build/ | + | |
- | Creating load file for flashing: .build/ | + | |
- | Copying ergodox_ez_bepo_tm_style.hex to qmk_firmware folder | + | |
- | Checking file size of ergodox_ez_bepo_tm_style.hex | + | |
- | * The firmware size is fine - 30658/32256 (1598 bytes free) | + | |
</ | </ | ||
- | Le firmware ( ergodox_ez_bepo_tm_style.hex ) est dans le dossier courant. On peut l'envoyer avec cette commande | + | J'ai fait la configuration comme indiqué |
<code bash> | <code bash> | ||
- | simon@deb: | + | $ qmk setup |
- | Teensy Loader, Command Line, Version 2.1 | + | |
- | Read " | + | |
- | Waiting for Teensy device... | + | |
- | | + | |
- | Found HalfKay Bootloader | + | |
- | Read " | + | |
- | Programming................................................................................................................................................................................................................................................ | + | |
- | Booting | + | |
</ | </ | ||
+ | Il installe toutes les dépendances, | ||
- | Maintenant qu'on a compris la procédure pour envoyer un layout choisi sur le clavier, on doit faire le layout qui nous convient et recommencer la procédure. | + | ==== Créer une " |
- | ===== Configurer le layout ===== | + | J'ai créé |
- | On commence par faire une copie du layout bepo pour l' | + | |
<code bash> | <code bash> | ||
- | simon@deb: | + | $ qmk new-keymap -kb ergodox_ez |
+ | Keymap Name: my-ergodox | ||
+ | Ψ my-ergodox keymap directory created in: /home/simon/ | ||
+ | Ψ Compile a firmware with your new keymap by typing: | ||
- | simon@deb: | + | qmk compile |
- | total 32 | + | |
- | drwxr-xr-x 2 simon simon 4096 avr 10 20:10 . | + | |
- | drwxr-xr-x 25 simon simon 4096 avr 10 20:10 .. | + | |
- | -rwxr-xr-x | + | |
- | -rwxr-xr-x | + | |
- | -rwxr-xr-x | + | |
- | -rwxr-xr-x | + | |
</ | </ | ||
- | Keymap WIP ( 10/04/2019 ) : | + | On peut modifier cette keymap |
- | < | + | < |
- | < | + | $ vim ~/qmk_firmware/keyboards/ergodox_ez/keymaps/my-ergodox/ |
- | // An Ergodox EZ keymap meant to be used with a bépo layout (FR ergonomic | + | |
- | // layout, dvorak style). The overall design is slightly inspired by the | + | |
- | // TypeMatrix keyboard. Switching between a TypeMatrix and an Ergodox with this | + | |
- | // layout should be relatively easy. | + | |
- | // | + | |
- | // See the README.md file for an image of this keymap. | + | |
- | + | ||
- | #include QMK_KEYBOARD_H | + | |
- | #include " | + | |
- | + | ||
- | // The layers that we are defining for this keyboards. | + | |
- | #define BASE 0 | + | |
- | #define FN 1 | + | |
- | #define MOUSE 2 | + | |
- | #define NUMS 3 | + | |
- | #define SWAP 4 | + | |
- | #define SYSLEDS 5 | + | |
- | + | ||
- | // The Tap Dance identifiers, | + | |
- | #define TAP_MACRO 0 | + | |
- | + | ||
- | // A ' | + | |
- | #define ___ KC_TRANSPARENT | + | |
- | + | ||
- | // A ' | + | |
- | #define XXX KC_NO | + | |
- | + | ||
- | // Some combined keys (one normal keycode when tapped and one modifier or layer | + | |
- | // toggle when held). | + | |
- | #define ESC_FN | + | |
- | #define M_RSFT | + | |
- | #define W_RCTL | + | |
- | #define SPC_RALT | + | |
- | #define PERC_FN | + | |
- | + | ||
- | // The most portable copy/paste keys (windows (mostly), linux, and some terminal emulators). | + | |
- | #define MK_CUT | + | |
- | #define MK_COPY | + | |
- | #define MK_PASTE | + | |
- | + | ||
- | // Custom keycodes | + | |
- | enum { | + | |
- | // SAFE_RANGE must be used to tag the first element of the enum. | + | |
- | // DYNAMIC_MACRO_RANGE must always be the last element of the enum if other | + | |
- | // values are added (as its value is used to create a couple of other keycodes | + | |
- | // after it). | + | |
- | DYNAMIC_MACRO_RANGE = SAFE_RANGE, | + | |
- | }; | + | |
- | + | ||
- | // This file must be included after DYNAMIC_MACRO_RANGE is defined... | + | |
- | #include " | + | |
- | + | ||
- | const uint16_t PROGMEM | + | |
- | /* Keymap 0: Basic layer | + | |
- | * | + | |
- | * , | + | |
- | * | | " | + | |
- | * |--------+------+------+------+------+-------------| | + | |
- | * | TAB | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | SHIFT | | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | CTRL | | + | |
- | * `--------+------+------+------+------+-------------' | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | */ | + | |
- | [BASE] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | ___, BP_DQOT, BP_LGIL, | + | |
- | KC_TAB, | + | |
- | KC_LSFT, | + | |
- | KC_LCTRL, BP_ECRC, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, | + | |
- | ESC_FN, | + | |
- | | + | |
- | ___, | + | |
- | ___, ___, | + | |
- | /* right hand */ | + | |
- | BP_PLUS, BP_MINS, BP_SLSH, | + | |
- | BP_V, BP_D, BP_L, | + | |
- | | + | |
- | BP_T, BP_Q, BP_G, | + | |
- | KC_LEFT, | + | |
- | ___, S(KC_SLASH), | + | |
- | ___, | + | |
- | ___, ___, | + | |
- | + | ||
- | /* Keymap 1: Symbol Layer | + | |
- | * | + | |
- | * , | + | |
- | * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | | + | |
- | * |--------+------+------+------+------+------+------| | + | |
- | * | | | | | | | | | | Up | HOME | UP | END | PGUP | | | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | | | | | LSFT |------| | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | | CUT | COPY | PASTE| LCTRL| | + | |
- | * `--------+------+------+------+------+-------------' | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | */ | + | |
- | [FN] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, ___, MK_CUT, MK_COPY, MK_PASTE, KC_LCTRL, | + | |
- | ___, | + | |
- | ___, KC_VOLU, | + | |
- | KC_VOLD, | + | |
- | | + | |
- | /* right hand */ | + | |
- | KC_F7, KC_F8, | + | |
- | ___, ___, KC_HOME, | + | |
- | ___, KC_LEFT, KC_DOWN, KC_RIGHT, KC_PGDN, | + | |
- | ___, | + | |
- | ___, | + | |
- | KC_HOME, KC_END, | + | |
- | KC_PGUP, | + | |
- | KC_PGDN, ___, ___), | + | |
- | // Note that any change to the FN layer above must be added to | + | |
- | // the MOUSE layer below (except for the arrow keys). | + | |
- | + | ||
- | /* Keymap 2: Media and mouse keys | + | |
- | * | + | |
- | * , | + | |
- | * | | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 | | | + | |
- | * |--------+------+------+------+------+-------------| | + | |
- | * | | | | MsUp | | | | | | | | | | | | | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | |MsLeft|MsDown|MsRght| | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | | | | | | | | | | | | | | | | + | |
- | * `--------+------+------+------+------+-------------' | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | */ | + | |
- | [MOUSE] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, ___, | + | |
- | | + | |
- | ___, ___, ___, | + | |
- | /* right hand */ | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | ___, ___, | + | |
- | ___, | + | |
- | ___, ___, ___), | + | |
- | + | ||
- | /* Keymap 3: Numeric keypad and system keys. | + | |
- | * | + | |
- | * , | + | |
- | * |PrScreen|INSERT| PAUSE| | + | |
- | * |--------+------+------+------+------+-------------| | + | |
- | * | | | | | | | | | | | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | | | | | |------| | + | |
- | * |--------+------+------+------+------+------| | + | |
- | * | | | CUT | COPY | PASTE| | + | |
- | * `--------+------+------+------+------+-------------' | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | */ | + | |
- | [NUMS] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | KC_PSCR, KC_INS, KC_PAUS, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, | + | |
- | ___, ___, | + | |
- | | + | |
- | ___, ___, ___, | + | |
- | /* right hand */ | + | |
- | | + | |
- | | + | |
- | KC_PCMM, KC_P4, KC_P5, KC_P6, | + | |
- | | + | |
- | | + | |
- | ___, ___, | + | |
- | ___, | + | |
- | ___, ___, ___), | + | |
- | + | ||
- | // Layer 4: hand swap, all keys are mirrored to the other side of the keyboard | + | |
- | // except for the layer toggle itself (so there is no right arrow when this | + | |
- | // layer is activated). | + | |
- | [SWAP] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, | + | |
- | | + | |
- | | + | |
- | ___, ___, ___, | + | |
- | /* right hand */ | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, | + | |
- | ___, TT(SWAP), | + | |
- | ___, | + | |
- | ___, ___, ___), | + | |
- | + | ||
- | // Layer 5: The LEDs are showing the " | + | |
- | // instead of their default which shows the currently active layers (FN, NUMS, | + | |
- | // and MOUSE in that order). | + | |
- | [SYSLEDS] = LAYOUT_ergodox( | + | |
- | /* left hand */ | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, | + | |
- | ___, ___, | + | |
- | | + | |
- | ___, ___, ___, | + | |
- | /* right hand */ | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, ___, ___, ___, ___, ___, | + | |
- | ___, ___, TT(SYSLEDS), | + | |
- | ___, ___, | + | |
- | ___, | + | |
- | ___, ___, ___), | + | |
- | }; | + | |
- | + | ||
- | // Whether the macro 1 is currently being recorded. | + | |
- | static bool is_macro1_recording = false; | + | |
- | + | ||
- | // The current set of active layers (as a bitmask). | + | |
- | // There is a global ' | + | |
- | // to layer_state_set_user(). | + | |
- | static uint32_t current_layer_state = 0; | + | |
- | uint32_t layer_state_set_user(uint32_t state); | + | |
- | + | ||
- | // Method called at the end of the tap dance on the TAP_MACRO key. That key is | + | |
- | // used to start recording a macro (double tap or more), to stop recording (any | + | |
- | // number of tap), or to play the recorded macro (1 tap). | + | |
- | void macro_tapdance_fn(qk_tap_dance_state_t *state, void *user_data) { | + | |
- | uint16_t keycode; | + | |
- | keyrecord_t record; | + | |
- | dprintf(" | + | |
- | if (is_macro1_recording) { | + | |
- | keycode = DYN_REC_STOP; | + | |
- | is_macro1_recording = false; | + | |
- | layer_state_set_user(current_layer_state); | + | |
- | } else if (state-> | + | |
- | keycode = DYN_MACRO_PLAY1; | + | |
- | } else { | + | |
- | keycode = DYN_REC_START1; | + | |
- | is_macro1_recording = true; | + | |
- | layer_state_set_user(current_layer_state); | + | |
- | } | + | |
- | + | ||
- | record.event.pressed = true; | + | |
- | process_record_dynamic_macro(keycode, | + | |
- | record.event.pressed = false; | + | |
- | process_record_dynamic_macro(keycode, | + | |
- | } | + | |
- | + | ||
- | // The definition of the tap dance actions: | + | |
- | qk_tap_dance_action_t tap_dance_actions[] = { | + | |
- | // This Tap dance plays the macro 1 on TAP and records it on double tap. | + | |
- | [TAP_MACRO] = ACTION_TAP_DANCE_FN(macro_tapdance_fn), | + | |
- | }; | + | |
- | + | ||
- | // Runs for each key down or up event. | + | |
- | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | + | |
- | if (keycode != TD(TAP_MACRO)) { | + | |
- | // That key is processed by the macro_tapdance_fn. Not ignoring it here is | + | |
- | // mostly a no-op except that it is recorded in the macros (and uses space). | + | |
- | // We can't just return false when the key is a tap dance, because | + | |
- | // process_record_user, | + | |
- | // returning false would eat the tap dance). | + | |
- | if (!process_record_dynamic_macro(keycode, | + | |
- | return false; | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | return true; // Let QMK send the enter press/ | + | |
- | } | + | |
- | + | ||
- | // Runs just one time when the keyboard initializes. | + | |
- | void matrix_init_user(void) { | + | |
- | ergodox_right_led_1_off(); | + | |
- | ergodox_right_led_2_off(); | + | |
- | ergodox_right_led_3_off(); | + | |
- | }; | + | |
- | + | ||
- | // Runs constantly in the background, in a loop. | + | |
- | void matrix_scan_user(void) { | + | |
- | + | ||
- | }; | + | |
- | + | ||
- | // The state of the LEDs requested by the system, as a bitmask. | + | |
- | static uint8_t sys_led_state = 0; | + | |
- | + | ||
- | // Use these masks to read the system LEDs state. | + | |
- | static const uint8_t sys_led_mask_num_lock = 1 << USB_LED_NUM_LOCK; | + | |
- | static const uint8_t sys_led_mask_caps_lock = 1 << USB_LED_CAPS_LOCK; | + | |
- | static const uint8_t sys_led_mask_scroll_lock = 1 << USB_LED_SCROLL_LOCK; | + | |
- | + | ||
- | // Value to use to switch LEDs on. The default value of 255 is far too bright. | + | |
- | static const uint8_t max_led_value = 20; | + | |
- | + | ||
- | // Whether the given layer (one of the constant defined at the top) is active. | + | |
- | #define LAYER_ON(layer) (current_layer_state & (1<< | + | |
- | + | ||
- | void led_1_on(void) { | + | |
- | ergodox_right_led_1_on(); | + | |
- | ergodox_right_led_1_set(max_led_value); | + | |
- | } | + | |
- | + | ||
- | void led_2_on(void) { | + | |
- | ergodox_right_led_2_on(); | + | |
- | ergodox_right_led_2_set(max_led_value); | + | |
- | } | + | |
- | + | ||
- | void led_3_on(void) { | + | |
- | ergodox_right_led_3_on(); | + | |
- | ergodox_right_led_3_set(max_led_value); | + | |
- | } | + | |
- | + | ||
- | void led_1_off(void) { | + | |
- | ergodox_right_led_1_off(); | + | |
- | } | + | |
- | + | ||
- | void led_2_off(void) { | + | |
- | ergodox_right_led_2_off(); | + | |
- | } | + | |
- | + | ||
- | void led_3_off(void) { | + | |
- | ergodox_right_led_3_off(); | + | |
- | } | + | |
- | + | ||
- | // Called when the computer wants to change the state of the keyboard LEDs. | + | |
- | void led_set_user(uint8_t usb_led) { | + | |
- | sys_led_state = usb_led; | + | |
- | if (LAYER_ON(SYSLEDS)) { | + | |
- | if (sys_led_state & sys_led_mask_caps_lock) { | + | |
- | led_1_on(); | + | |
- | } else { | + | |
- | led_1_off(); | + | |
- | } | + | |
- | if (sys_led_state & sys_led_mask_num_lock) { | + | |
- | led_2_on(); | + | |
- | } else { | + | |
- | led_2_off(); | + | |
- | } | + | |
- | if (sys_led_state & sys_led_mask_scroll_lock) { | + | |
- | led_3_on(); | + | |
- | } else { | + | |
- | led_3_off(); | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | + | ||
- | uint32_t layer_state_set_user(uint32_t state) { | + | |
- | current_layer_state = state; | + | |
- | swap_hands = LAYER_ON(SWAP); | + | |
- | + | ||
- | if (is_macro1_recording) { | + | |
- | led_1_on(); | + | |
- | led_2_on(); | + | |
- | led_3_on(); | + | |
- | return state; | + | |
- | } | + | |
- | + | ||
- | if (LAYER_ON(SYSLEDS)) { | + | |
- | led_set_user(sys_led_state); | + | |
- | return state; | + | |
- | } | + | |
- | + | ||
- | if (LAYER_ON(FN)) { | + | |
- | led_1_on(); | + | |
- | } else { | + | |
- | led_1_off(); | + | |
- | } | + | |
- | + | ||
- | if (LAYER_ON(NUMS)) { | + | |
- | led_2_on(); | + | |
- | } else { | + | |
- | led_2_off(); | + | |
- | } | + | |
- | + | ||
- | if (LAYER_ON(MOUSE)) { | + | |
- | led_3_on(); | + | |
- | } else { | + | |
- | led_3_off(); | + | |
- | } | + | |
- | + | ||
- | return state; | + | |
- | }; | + | |
</ | </ | ||
- | </ | ||
+ | Ensuite, on peut la compiler : | ||
<code bash> | <code bash> | ||
- | simon@deb: | + | $ qmk compile -kb ergodox_ez |
</ | </ | ||
- | < | ||
- | <code bash> | ||
- | QMK Firmware 0.6.328 | ||
- | Making ergodox_ez with keymap bepo_simon and target all | ||
- | avr-gcc (GCC) 5.4.0 | + | ==== Envoyer la configuration sur le clavier ==== |
- | Copyright (C) 2015 Free Software Foundation, Inc. | + | |
- | This is free software; see the source for copying conditions. | + | |
- | warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | + | |
- | Compiling: keyboards/ | + | Enfin, on peut l' |
- | Compiling: quantum/ | + | <code bash> |
- | Compiling: quantum/ | + | $ teensy_loader_cli --mcu=atmega32u4 -v -w ~/qmk_firmware/.build/ergodox_ez_my-ergodox.hex |
- | Compiling: quantum/ | + | |
- | Compiling: quantum/ | + | |
- | Compiling: quantum/ | + | |
- | Compiling: quantum/process_keycode/process_key_lock.c | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Assembling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: tmk_core/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Compiling: lib/ | + | |
- | Linking: | + | |
- | Creating load file for flashing: .build/ | + | |
- | Copying ergodox_ez_bepo_simon.hex to qmk_firmware folder | + | |
- | Checking file size of ergodox_ez_bepo_simon.hex | + | |
- | * The firmware size is fine - 30706/32256 (1550 bytes free) | + | |
</ | </ | ||
- | </ | ||
- | <code bash> | + | **__É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' |
- | simon@deb:~/git/qmk_firmware$ teensy_loader_cli --mcu=atmega32u4 -v -w ergodox_ez_bepo_simon.hex | + | |
- | Teensy Loader, Command Line, Version 2.1 | + | **__État des lieux le 19/ |
- | Read " | + | |
- | Waiting for Teensy device... | + | |
- | (hint: press the reset button) | + | |
- | Found HalfKay Bootloader | + | |
- | Read " | + | |
- | Programming................................................................................................................................................................................................................................................ | + | |
- | Booting | + | |
- | </ | + |
ergodox.txt · Dernière modification : 2021/02/08 21:31 de simon