Bonjour les amis.
De mon côté aussi j'ai des soucis pour compiler ma propre version ergodox avec Linux. J'utilise un chromebook et je suis parvenu à compiler une version par défaut mais lorsque j'essaye de compiler la mienne que j'ai modifié à partir de celle fournie dans le wiki, impossible.
Il me fait une erreur que je ne comprend pas, j'ai essayé de chercher, mais je n'ai pas la moindre idée. Tout est d'une extrême complexité sous Linux, rien que de placer correctement un fichier suffit à créer des erreurs.
Je m'acharne mais un peu d'aide ne serait pas de refus.
Une instruction qui n'est pas claire dans le wiki, apparement tellement basique qu'elle n'est pas étoffée.
Et enfin plalce la variable «export KEYMAP=bepo»
Et voici mon fichier keymap.c qui doit comporter bon nombre d'erreur car j'ai essayé de le corriger moi même 🙂
#include QMK_KEYBOARD_H
#include "debug.h"
#include "action_layer.h"
#include "version.h"
#include "keymap_bepo.h"
#include "keymap_french.h"
#include "ergodox.h"
#include "keymap_bepo.h"
#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MDIA 2 // media keys
// keymaps
#define BEPO 0 // default layer, for bepo compatible systems
#define QW_B 1 // bepo to qwerty base compat layer, for qwerty systems
#define QW_A 2 // bepo with altgr key to qwerty compat layer
#define QW_S 3 // bepo with shift key to qwerty compat layer
#define AZ_B 4 // bepo to azerty base compat layer, for azerty systems
#define AZ_A 5 // bepo with altgr key to azerty compat layer
#define AZ_S 6 // bepo with shift key to azerty compat layer
#define FNAV 7 // function / navigation / mouse layer
#define NUMK 8 // numeric keypad layer
enum custom_keycodes {
PLACEHOLDER = SAFE_RANGE, // can always be here
EPRM,
VRSN,
RGB_SLD
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | Esc | " | « | » | ( | ) | $ | | % | @ | + | - | / | * | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | BkSp | B | É | P | O | È | W | | Tab | ^ | V | D | L | J | Z |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | DEL | A | U | I | E | , |------| |------| C | T | S | R | N | M |
* |--------+------+------+------+------+------| Ç | | BkSp |------+------+------+------+------+--------|
* | Ctrl | À | Y | X | . | K | | | | ' | Q | G | H | F | Ctrl |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | LGui | Home | Pgup |Pgdown| End | | Left | Down | Up |Right | ~L1 |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* |Ctrl+C|Ctrl+V| |Ctrl+X| L1 |
* ,------|------|------| |------+--------+------.
* | | | Alt/Enter| | App | | |
* | Space|Shift |------| |------| Shift |Enter |
* | | | ê | | AltGr| | |
* `--------------------' `----------------------'
*/
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = LAYOUT_ergodox( // layer 0 : default
// left hand
KC_ESC, BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,
KC_BSPC, BP_B, BP_E_ACUTE, BP_P, BP_O, BP_E_GRAVE, BP_W,
KC_DEL, BP_A, BP_U, BP_I, BP_E, BP_COMMA,
KC_LCTL, BP_A_GRAVE, BP_Y, BP_X, BP_DOT, BP_K, BP_C_CEDILLA,
KC_LGUI, KC_HOME, KC_PGUP, KC_PGDN, KC_END,
LCTL(BP_C), LCTL(BP_V),
ALT_T(KC_ENT),
KC_SPC, KC_LSFT, BP_ECRC ,
// right hand
BP_PERCENT, BP_AT, BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,
KC_TAB, BP_DEAD_CIRCUMFLEX, BP_V, BP_D, BP_L, BP_J, BP_Z,
BP_C, BP_T, BP_S, BP_R, BP_N, BP_M,
KC_BSPC, BP_APOSTROPHE, BP_Q, BP_G, BP_H, BP_F, KC_RCTL,
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_FN1,
LCTL(BP_X), TG(SYMB),
KC_APP,
KC_RALT,KC_RSFT, KC_ENT
),
/* Keymap 1: Symbol Layer
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | F1 | F2 | F3 | F4 | F5 | F6 | |P.Scr|NumLock| + | - | / | * | = |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | VolUp | F7 | F8 | F9 | F10 | F11 | F12 | | | ^ | 7 | 8 | 9 | + |ScrLock |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | Mute | Prev | Play | Stop | Next | Calc |------| |------| ˇ | 4 | 5 | 6 | + | Pause |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | VolDn | Undo | Cut | Copy | Paste| Redo | | | | Ins | 1 | 2 | 3 |Enter | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | 0 | , | . |Enter | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// SYMBOLS
[SYMB] = LAYOUT_ergodox(
// left hand
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
KC_MUTE, KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT, KC_CALC,
KC_VOLD, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS,
// right hand
KC_PSCR, KC_LNUM, KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,
KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS, KC_SLCK,
RALT(BP_V), KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_PLUS, KC_PAUS,
KC_TRNS, KC_INS, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER, KC_TRNS,
KC_KP_0, KC_KP_COMMA,KC_KP_DOT, KC_KP_ENTER, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
/* Keymap 2: Mouse keys
*
* ,--------------------------------------------------. ,--------------------------------------------------.
* | | | | | | | | | | | | | | | |
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
* | | WhUp | Lclk | MsUp | Rclk | Acc0 | | | | Acc0 | WhLft| WhUp | WhRgh| | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------| |------| Acc1 | Lclk | Cclk | Rclk | | |
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
* | | | Btn4 | Cclk | Btn5 | Acc2 | | | | Acc2 | Btn4 | WhDwn| Btn5 | | |
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
* | | | | | | | | | | | |
* `----------------------------------' `----------------------------------'
* ,-------------. ,-------------.
* | | | | | |
* ,------|------|------| |------+------+------.
* | | | | | | | |
* | | |------| |------| | |
* | | | | | | | |
* `--------------------' `--------------------'
*/
// MOUSE
[MOUSE] = LAYOUT_ergodox(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_MS_WH_UP, KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,
KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,
KC_TRNS, KC_TRNS, KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS,
// right hand
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,
KC_ACL1, KC_BTN1, KC_BTN3, KC_BTN2, KC_TRNS, KC_TRNS,
KC_TRNS, KC_ACL2, KC_BTN4, KC_MS_WH_DOWN, KC_BTN5, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS,
KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS
),
};
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_TAP_TOGGLE(SYMB) // FN1 - Momentary Layer 1 (Symbols)
};
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
// MACRODOWN only works in this function
switch(id) {
case 0:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
break;
case 1:
if (record->event.pressed) { // For resetting EEPROM
eeconfig_init();
}
break;
}
return MACRO_NONE;
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
// dynamically generate these.
case EPRM:
if (record->event.pressed) {
eeconfig_init();
}
return false;
break;
case VRSN:
if (record->event.pressed) {
SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
}
return false;
break;
case RGB_SLD:
if (record->event.pressed) {
#ifdef RGBLIGHT_ENABLE
rgblight_mode(1);
#endif
}
return false;
break;
}
return true;
}
// Runs just one time when the keyboard initializes.
void matrix_init_user(void) {
};
// Runs constantly in the background, in a loop.
void matrix_scan_user(void) {
uint8_t layer = biton32(layer_state);
ergodox_board_led_off();
ergodox_right_led_1_off();
ergodox_right_led_2_off();
ergodox_right_led_3_off();
switch (layer) {
// TODO: Make this relevant to the ErgoDox EZ.
case SYMB:
ergodox_right_led_1_on();
break;
case MDIA:
ergodox_right_led_2_on();
break;
default:
// none
break;
}
};