Hello !

J'ai reçu dernièrement mon ErgoDox EZ. Étant très habitué au TypeMatrix 2030, que je compte continuer à utiliser, je me suis immédiatement rendu compte qu'il me fallait une disposition similaire pour l'ErgoDox, afin de facilement passer de l'un à l'autre.

Bien entendu je suis également utilisateur du bépo de longue date, donc mes choix se sont orientés en fonction de cette disposition.

J'ai donc implémenté ma propre disposition "TypeMatrix" pour l'ErgoDox EZ: https://github.com/DidierLoiseau/qmk_firmware/tree/typematrix/keyboard/ergodox_ez/keymaps/tm2030

Mon idée était de faire une disposition la plus fidèle possible. J'ai aussi essayé de ne pas trop l'orienter vers des choix personnels afin que ça convienne au maximum de monde – d'où l'utilisation de deux touches majuscules de chaque côté (pour imiter la grande touche du TypeMatrix) et de deux touches espace de chaque côté (pour ceux qui auraient des plus grandes mains !).

J'aimerais maintenant faire appel à vous pour vos suggestions, et bien sûr en faire profiter ceux qui seraient intéressés.

Pour l'instant le principal problème qu'il me reste c'est que j'ai dû mettre les touches « m » et « ç » (du bépo) en combinaison avec les touches majuscule de droite, ce qui provoque assez souvent des erreurs. À ce niveau-là j'espère qu'il soit possible de changer l'implémentation de cette fonctionnalité plutôt que de devoir déplacer ces touches.

Je vous transcris ici la disposition telle que ça donne en bépo (le fichier source contient une description des principales différences avec le 2030) :
/* Keymap 0: Basic layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |   `    |   1  |   2  |   3  |   4  |   5  | Del  |           | Del  |   6  |   7  |   8  |   9  |   0  |   W    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * | Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
 * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
 * | LShift |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  | M/Shift|
 * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
 * | LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | Ç/Shift|
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      | RAlt |   =  | Home |   %  |End/Ctl|
 *   `-----------------------------------'                                      `-----------------------------------'
 *                                       ,--------------.       ,-------------.
 *                                       |Esc/Alt|  L1  |       | Left |Right |
 *                                ,------+-------+------|       |------+------+------.
 *                                |      |       | PgUp |       |  Up  |      |      |
 *                                |Space | Space |------|       |------|Space |Space |
 *                                |      |       | PgDn |       | Down |      |      |
 *                                `---------------------'       `--------------------'
 */
/* Keymap 1: Numbers Layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
 *   `----------------------------------'                                       `-----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |n.lock|c.lock|
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       |      |      |      |
 *                                 |      |      |------|       |------|      |      |
 *                                 |      |      |      |       |      |      |      |
 *                                 `--------------------'       `--------------------'
 */
/* Keymap 2: fn layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |        |      |      |      |      |      |Insert|           |Insert|      |      |      |      |      |        |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      |        |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |      |      |      |      |      |------|           |------|      |      |      |      |      |        |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      |      |      |      |      |
 *   `----------------------------------'                                       `----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |      |      |
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       | Next |      |      |
 *                                 | Mute |      |------|       |------|      |      |
 *                                 |      |      |      |       | Prev |      |      |
 *                                 `--------------------'       `--------------------'
 */
Je trouve un peu dommage de gaspiller autant de touches avec des doublons.
Et 4 « espaces » ? du coup les 4 touches super accessibles avec les pouces redeviennent une simple barre d'espace… Au passage à l'Ergo Dox, j'ai remarqué que je ne tapais l'espace qu'avec le pouce droit. Du coup je n'ai pas mis d'espace à gauche ce qui me fait de la place pour d'autres touches (en général on manque toujours de touches, c'est pour cela qu'on utilise des layers)

Pour moi la révélation, ça a été la découverte du SpaceFn (j'avais lancé un sujet sur ce forum: https://geekhack.org/index.php?topic=51069.0), composé avec l'ErgoDox, c'est magique, on a des flèches super accessibles (sur la rangée du repos), un backspace super accessible aussi (bien pratique quand on commence avec l'ErgoDox !)
Je ne peut qu'être d'accord avec fauge, il est dommage de limiter les possibilité de l'ergodox en se calquant sur une disposition des TM2030. Metter un shift sous le pouce est vraiement agréable pour ne pas se faire des torsion de poignet.
Ton placement des touche directionnelles est ne me semble pas vraiemnt pratique.

Je comprend ton idée, d'ailleur moi même j'utilise un TM au boulot et un ED à la maison et cette idée d'avoir une disposition presque identique m'avais traversé l'idée, mais quand j'ai fait quelques tests avec l'ED et les possibilitée des pouces il m'a semblé évidetn que ce n'étati finalement pas une bonne idée. Par la suite je me suis aperçu que je n'avais pas tant de mal que ça de changer de disposition entre les 2 claviers. Comme ils sont physiquement bien differents (domes / méca) le changement se fait sans trop grande difficultées.
Merci pour vos retours. En fait mon idée c'est d'avoir une disposition de base similaire au TypeMatrix, et de la mettre à disposition pour que chacun en fasse ce qu'il veut ensuite. Probablement que je l'adapterai aussi à mes propres besoins par la suite aussi.

À noter que j'ai déjà remarqué que je me suis habitué à la position que j'ai donnée au AltGr par exemple, qui devrait être mis à la place du «=» pour une meilleure correspondance géométrique ;-)

Pour ce qui est des espaces, je sais que j'utilise les deux pouces (peut-être plus le droit). Maintenant effectivement il n'en faut sans doute pas deux de chaque côté, peut-être que je mettrai les shifts comme Mimoza le suggère.

Un problème que j'ai remarqué hier d'ailleurs, c'est que j'ai en fait 4 shifts gauche et aucun shift droit, du coup il n'y a pas de « Magic keys » pour passer le clavier en debug, changer le layer par défaut etc. Du coup pour l'instant j'ai mis à shift droit à gauche ! :-D
2 mois plus tard
Petites nouvelles sur l'évolution de ma disposition :-)

Au niveau de l'implémentation « TypeMatrix » tout d'abord :
  • remplacement d'un espace de chaque côté par un shift, pour ceux qui préfèrent utiliser les pouces pour ça (personnellement ça me gênerait un peu car je fais généralement shift-espace d'une seule main, donc j'ai laissé les autres shifts)
  • ajout des touches calculatrice, e-mail et navigateur en Fn
  • implémentation du Dvorak-us pour couvrir quasi entièrement les fonctionnalités du TM :-)
  • réintégration dans le dépôt QMK (PR 97 et 157)
Sur base de ça, j'ai commencé à définir une disposition plus spécifique au BÉPO, mais basée sur la précédente. C'est toujours en cours mais pour l'instant j'ai :
  • définition d'alias pour toutes les touches du bépo, avec les combinaisons de shift et altgr
  • suppression des combinaisons de shift avec d'autres touches (SFT_T) :
    • déplacement du « = » à gauche à la place d'un des shifts
    • déplacement du « ç » à la place de « % »
    • déplacement du « % » à la place du « = »
  • implémentation d'une disposition « BÉPO over CSA » : configurez l'OS en QWERTY Canadien Multilingue (CSA), mais utilisez le clavier comme s'il était en bépo !
    • permet d'utiliser le BÉPO sur un système où il n'est pas possible d'en installer le pilote (et si PKL ne convient pas) en basculant dessus avec Fn+$ (la touche en haut à gauche)
    • le clavier CSA supporte une flopée de caractères spéciaux, ainsi que les majuscules accentuées et le « Ç », et est fourni avec Windows, donc ça m'a semblé être le meilleur choix
    • testé uniquement sous Windows – la définition du Canadien Multilingue étant beaucoup trop approximative sous X.org (modificateur GR2A non supporté et redéfinition de tous les caractères spéciaux en AltGr) et je n'ai pas de Mac
    • définition d'alias pour toutes les touches du CSA, avec les combinaisons de shift, altgr et GR2A
    • tous les caractères disponibles dans le CSA sont normalement supportés
    • les caractères « – », « — » et « … » sont implémentés via le support Unicode (alt + « + » + valeur hexadécimale), mais ça n'est pas tout à fait au point (chez moi ça marche dans Firefox et Excel mais pas dans Word par exemple)
    • globalement le résultat est très satisfaisant, et je trouve que ça marche mieux que PKL (mes problèmes…)
Ça devrait encore un peu évoluer, mais pour l'instant ça ressemble à ça :
/* Basic layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * | Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
 * |--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
 * |   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
 * |--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
 * | LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |LCtrl |  fn  | LGui | Play |App/Alt|                                      |Alt Gr|   %  | Home |   Ç  |End/Ctl|
 *   `-----------------------------------'                                      `-----------------------------------'
 *                                       ,--------------.       ,-------------.
 *                                       |Esc/Alt| num  |       | Left |Right |
 *                                ,------+-------+------|       |------+------+------.
 *                                |      |       | PgUp |       |  Up  |      |      |
 *                                |Space |LShift |------|       |------|RShift|Space |
 *                                |      |       | PgDn |       | Down |      |      |
 *                                `---------------------'       `--------------------'
 */
/* Numeric Layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |      |      |  Tab |   /  |   *  |   -    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |  F6  |  F7  |  F8  |  F9  |  F10 |      |           |      |      | Home |   7  |   8  |   9  |   +    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |  F11 |  F12 |      |      |      |------|           |------|  Up  | End  |   4  |   5  |   6  |   +    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |      |      |      |      |      |      |           | Left | Down | Right|   1  |   2  |   3  |KpEnter |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      |   0  |  00  |   .  |Etr/Ctl|
 *   `----------------------------------'                                       `-----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |n.lock|c.lock|
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       |      |      |      |
 *                                 |      |      |------|       |------|      |      |
 *                                 |      |      |      |       |      |      |      |
 *                                 `--------------------'       `--------------------'
 */
/* fn layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |~CA-mult|      |      |      |      |      |Insert|           |Insert|Eject |Power |Sleep | Wake |PrtScr|ScrollLk|
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |      |      |      |      |      |VolUp |           |      |      |      |      |      |      | Pause  |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |  RESET |      |      | Calc | Mail |Browsr|------|           |------|      |      |      |      |      |        |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |      | cut  | copy |paste | Mute |VolDn |           |      |      |      |      |      |      |        |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      |      |      |      |      |
 *   `----------------------------------'                                       `----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |      |      |
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       | Next |      |      |
 *                                 | Mute |      |------|       |------|      |      |
 *                                 |      |      |      |       | Prev |      |      |
 *                                 `--------------------'       `--------------------'
 */
Au niveau du BÉPO over CSA, le support est complet pour la disposition de base et le shift. Poult altgr et altgr+shift ça donne ça :
/* AltGr-ed BÉPO over Canadian Multilingual
 * "////" indicates that the key is disabled (unsupported bépo character)
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |    –   |   —  |   <  |   >  |   [  |   ]  |      |           |      |   ^  |   ±  | //// |   ÷  |   ×  | dead ˘ |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |   |  |dead '|   &  |   œ  |dead `|      |           |      |   ¡  |dead ˇ|   ð  | //// |   ij  | ////// |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * | ////// |   æ  |   ù  |dead "|   €  |   ̛’  |------|           |------|   ©  |   þ  |   ß  |   ®  |dead ~| dead ¯ |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        |   \  |   {  |   }  |   …  |   ~  |      |           |      |   ¿  |dead °|   μ  | //// |dead ˛|        |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      | //// |      |dead ¸|       |
 *   `----------------------------------'                                       `-----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |      |      |
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       |      |      |      |
 *                                 |   _  |      |------|       |------|      |  _   |
 *                                 |      |      |      |       |      |      |      |
 *                                 `--------------------'       `--------------------'
 */
/* AltGr-shifted BÉPO over Canadian Multilingual
 * "////" indicates that the key is disabled (unsupported bépo character or unused in bépo)
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * |    ¶   | //// |   “  |   ”  | //// | //// |      |           |      | //// |   ¬  |   ¼  |   ½  |   ¾  | ////// |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * |        |   ¦  |   ˝  |   §  |   Œ  |   `  |      |           |      | //// | //// |   Ð  | //// |   IJ  | ////// |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * | ////// |   Æ  |   Ù  |dead-˙| //// | //// |------|           |------| //// |   Þ  |   ẞ  |   ™  | //// |   º    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * |        | //// |   ‘  |   ’  | //// | //// |      |           |      | //// | //// | //// | //// |   ª  |        |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   |      |      |      |      |      |                                       |      |      |      |      |      |
 *   `----------------------------------'                                       `----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |      |      |       |      |      |
 *                                 ,------|------|------|       |------+------+------.
 *                                 |      |      |      |       |      |      |      |
 *                                 |      |      |------|       |------|      |      |
 *                                 |      |      |      |       |      |      |      |
 *                                 `--------------------'       `--------------------'
 */
2 mois plus tard
Salut,
Après pas mal de tervigersation j'ai refait ma dispo pour mon ergodox.
Je met mon fichier de conf complet pour les intéressé.
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
#include "keymap_bepo.h"

#define BASE 0 // default layer
#define SYMB 1 // symbols
#define MOUSE 2 // media keys

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap 0: Basic layer
 *
 * ,--------------------------------------------------.           ,--------------------------------------------------.
 * | Esc    |   "  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  |  Ctrl  |
 * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |
 *   `----------------------------------'                                       `----------------------------------'
 *                                        ,-------------.       ,-------------.
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |
 *                                 ,------|------|------|       |------+--------+------.
 *                                 |      |      | ~L1  |       | App  |        |      |
 *                                 | Space|Shift |------|       |------|  Shift |Enter |
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |
 *                                 `--------------------'       `----------------------'
 */
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[BASE] = KEYMAP(  // layer 0 : default
        // left hand
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,
                                          
					           LCTL(BP_C), LCTL(BP_V),
                                                               MO(SYMB),
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),
        // 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_LGUI,
             TG(SYMB), TG(MOUSE),
             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] = KEYMAP(
       // 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] = KEYMAP(
       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) {
          register_code(KC_RSFT);
        } else {
          unregister_code(KC_RSFT);
        }
        break;
      }
    return MACRO_NONE;
};

// 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 1:
            ergodox_right_led_1_on();
            break;
        case 2:
            ergodox_right_led_2_on();
            break;
	case 3:
            ergodox_right_led_1_on();
	    ergodox_right_led_2_on();
            break;
        default:
            // none
            break;
    }

};
J'ai pas mal chargé le pouce gauche car finalement quand on a la main sur la sourie c'est bien pratique.
Le placement du «W» est vraiment pas mal car le rend bien mieux accessible que sur un clavier classique. J'ai fait sauté le «ê» car je le tape systématiquement en composition «^+e»
Sur ma deuxième couche j'ai mis tout le pavé numérique à droite en respectant l'ordre des opérateurs du Bépo classique, a gauche j'ai casé tout ce qu'il me semblait utile.
Ma 3ème couche est dédié à la sourie, il y a pas mal de touches redondantes mais c'est fait exprès.

Sinon j'ai fait une page sur le wiki pour facilité la prise en main de ce clavier. Toute contribution est la bienvenue.
4 mois plus tard
Pour ceux que ça intéresserait, ma disposition a été intégrée au dépôt QMK :
https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/bepo_csa

Les principaux changements depuis mon dernier message :
  • remplacement de Play par numAlt (combinaison du "num" avec Alt lorsqu'on maintient la touche). Play passe dans la couche Fn
  • App/Alt devient juste Alt, Alt/Esc devient juste Esc, End/Ctrl devient juste Ctrl – les combinaisons de touches s'avèrent trop peu fiables
  • Home remplacé par App (= Menu)
  • Home et End passent sur les pouces
  • pas de changements sur la position des lettres
,--------------------------------------------------.           ,--------------------------------------------------.
|   $    |   "  |   «  |   »  |   (  |   )  | Del  |           | Del  |   @  |   +  |   -  |   /  |   *  |   W    |
|--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
| Tab    |   B  |   É  |   P  |   O  |   È  |Backsp|           |Backsp|   ^  |   V  |   D  |   L  |   J  |   Z    |
|--------+------+------+------+------+------|ace   |           |ace   |------+------+------+------+------+--------|
|   =    |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |
|--------+------+------+------+------+------|Enter |           |Enter |------+------+------+------+------+--------|
| LShift |   À  |   Y  |   X  |   .  |   K  |      |           |      |   '  |   Q  |   G  |   H  |   F  | RShift |
`--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
  |LCtrl |  fn  | LGui |numAlt| LAlt |                                       |Alt Gr|   %  |  App |   Ç  | RCtrl|
  `----------------------------------'                                       `----------------------------------'
                                      ,--------------.       ,-------------.
                                      |  Esc  | num  |       | Left |Right |
                               ,------+-------+------|       |------+------+------.
                               |      |       | PgUp |       |  Up  |      |      |
                               |Space | Home  |------|       |------| End  |Space |
                               |      |       | PgDn |       | Down |      |      |
                               `---------------------'       `--------------------'
2 mois plus tard
Bonjour à tous

J'ai récemment fait l'acquisition d'un Ergodox EZ, je cherchais à installer une configuration Bépo. N'étant pas versée dans la programmation, c'est assez complexe. Enfin j'ai tout de même réussi à comprendre l'essentiel pour compiler un fichier d'exemple et l'envoyer sur le contrôleur (en utilisant un lien vers roastedpotatoes que je peux pas mettre car je viens de m'inscrire). Ne comprenant pas suffisamment comment composer soit-même le fichier de disposition du clavier, je me suis tournée vers une config déjà prête qui semble correspondre à ce que je recherche : celle que Mimosa a mise en ligne sur le wiki et 2 post plus haut)

Mais je suis bloquée. Où dois-je intégrer le fichier dans le Makefile.lula ? Où sont les fichiers .h mentionnés dans le code :
#include "ergodox_ez.h"
#include "debug.h"
#include "action_layer.h"
#include "keymap_bepo.h"

Est-ce que je dois les récupérer sur GitHub ou autre ? J'avoue que je suis complètement perdue, je pensais innocemment qu'il y aurait des configurations déjà prêtes qu'il suffirait de charger dans le clavier (le marketing d'ergodox insiste un peu lourdement sur le fait que c'est facile à configurer, sauf qu'ils ont oublié de mentionner "quand on veut un clavier américain"), et vu le prix du clavier, ca ne m'aurait pas paru aberrant. Mais bon, j'en suis là, donc si quelqu'un pouvait m'éclairer un peu, j'en serais très reconnaissante. A la limite, si quelqu'un avait le .hex pour cette config, même si j'aimerais bien comprendre comment tout ca marche, ca me ferait quand même gagner un temps fou.

🙂
J'ai finalement réussi à compiler le code et l'installer le firmware sur le clavier, mais quelle disposition faut-il configurer dans Windows pour qu'il tienne compte des codes utilisés ? J'ai essayé avec plusieurs dispositions mais aucune ne fonctionne, et le bépo n'est pas disponible sous windows.
J'ai trouvé finalement. Tout fonctionne parfaitement. Désolée pour ces messages inutiles. Je me sens un peu bête du coup ><
Hello eliz et bienvenue sur le forum bépo.

La disposition de Mimoza nécessite d'installer le driver bépo officiel pour fonctionner sous Windows.

La mienne permet de fonctionner avec le driver officiel, ou bien en utilisant la disposition "Canadien Multilingue". Ma disposition se trouve ici :
https://github.com/jackhumbert/qmk_firmware/tree/master/keyboards/ergodox/keymaps/bepo_csa

(ce qui me fait remarquer que j'ai des changements en local que je n'ai pas encore publiés)
Bonjour Didier

Oui j'ai vu votre config mais je trouve que celle de Mimosa correspond plus à mes besoins, notamment avec le contrôle de la souris sur la couche 2. Du coup j'ai installé le bépo pour que ca marche. Et j'aime bien avoir la touche "entrée" au niveau du pouce droit. Je trouve ca très pratique.
Cela dit, j'aurais apprécié pour utiliser le bépo avec le clavier canadien car j'utilise déjà ce clavier et ca m'aurait évité d'avoir à changer la configuration à chaque fois que je change de clavier (sur le portable, quand je suis chez moi ou que je l'emporte).

En tout cas merci, je n'hésiterai pas à jeter un oeil à votre config quand vous aurez publié les mises à jour 🙂
Normalement changer les touches simples n'est pas très difficile, et même copier une couche complète devrait marcher en adaptant son numéro et en ajoutant une touche pour basculer dans cette couche. Là où ça peut devenir plus compliqué c'est avec les macros mais s'il ne s'agit que de déplacer des touches ça devrait rester simple – même dans la couche de compatibilité CSA.

Pour les changements que je dois publier, de mémoire il ne s'agit que de l'implémentation des caractères spéciaux qui ne sont pas dans CSA (« – », « — », « … » et « ` »). En effet j'utilisais avant les fonctionnalités unicode (pour les trois premiers) et l'accent grave mort (pour le dernier) mais aucune de ces deux techniques n'est vraiment fiable. J'ai à présent basculé sur Alt+numéro du caractère CP1252 en décimal et ça marche beaucoup mieux.
J'y jetterai un oeil quand j'aurai un peu plus de temps mais je vous avoue que ça reste assez complexe pour moi, même si je comprends globalement le principe.
Content que ma disposition soit utile 🙂
10 mois plus tard
Merci didier pour cette disposition, je l'utilise pour mes premiers pas avec l'ergodox.

Meme si elle n'est pas parfaite pour ce clavier, on s'y retrouve quand on a l'habitude du typematrix.
Il n'y a que les touches haut et pas que je trouve difficile d'acces avec le pouce et les shift qui sont moins grands.
Je dois encore essayer les chiffres.

C'est aussi la seule que je sois parvenu à utiliser apres avoir compilé le .hex sur une vm linux.
Heureusement, le .hex marche aussi sous ms indos avec le canadien + pkl bepo.
Si quelqu'un peut publier ceux des autres dispositions, ca m'intéresse.
5 mois plus tard
Bonjour à tous,


J'utilise un Ergodox-EZ sous MacOS. J'ai établi ma disposition à partir de la disposition QMK bépo (merci Mimoza !).
J'ai le problème suivant : le code BP_ECRC renvoie la touche $ et le code KC_KP_COMMA ne donne pas de ",".
Je précise que les touches sont physiquement fonctionnelles. J'ai pensé à un problème ANSI/ISO, si cela était possible (?).

Avez-vous des idées ?
3 ans plus tard
Bonjour Didier,

J’ai qq question sur ta disposition qui semble avoir de la bouteille… sur un autre post… tu dit que tu l’utilise depuis de nombreuses années…

Comment cela se passe pour utiliser le clavier
sur un ordi qui a le pilote bépo.

puis de passer ensuite sur l’ordi qui a le pilote qwerty Canadien…

une séquence de touche à frapper au clavier pour passer d’une programmation à une autre ?

+++++++++++++++++++++

Si j’ai bien compris ton clavier est tout terrain :
linux en bépo
win en qwerty CA
win en bépo
linux en qwerty CA

et probablement Mac qwerty CA ?
-----------------------------------------------
À ce jour tu n’a jamais été mis en échec par un pc sur lequel tu ne puisse changer de clavier Fr pour un Qwerty CA ? … Les administrateur tolèrent tous cela ?

amicalement

Hubert
Hubert a écritComment cela se passe pour utiliser le clavier sur un ordi qui a le pilote bépo, puis de passer ensuite sur l’ordi qui a le pilote qwerty Canadien…

une séquence de touche à frapper au clavier pour passer d’une programmation à une autre ?
Oui effectivement, avec fn + $. Tout est décrit dans le README: https://github.com/qmk/qmk_firmware/tree/master/layouts/community/ergodox/bepo_csa

Par contre j’ai quelques changements que je dois encore réintégrer ici: https://github.com/DidierLoiseau/qmk_firmware/blob/bepo_csa-update/layouts/community/ergodox/bepo_csa/keymap.c
Par exemple je conserve maintenant le mode "BÉPO over CSA" activé quand on débranche et rebranche le clavier ou qu’on redémarre la machine, c’est plus pratique.

Par contre il ne vaut mieux pas forker mon répo, il n’est pas à jour et je ne garantis pas de garder son historique en l’état.
Hubert a écritSi j’ai bien compris ton clavier est tout terrain :
linux en bépo
win en qwerty CA
win en bépo
linux en qwerty CA

et probablement Mac qwerty CA ?
Oui, bien que Linux en Canadian Qwerty n’a que peu d’intérêt, et d’ailleurs l’implémentation CSA n’est pas exactement la même que sous Windows donc il y a certainement des choses qui ne marchent pas.
Bien que j’ai développé ça sous Linux, l’objectif premier reste le support Windows.
Je n’ai jamais testé sur Mac.
Hubert a écritÀ ce jour tu n’a jamais été mis en échec par un pc sur lequel tu ne puisse changer de clavier Fr pour un Qwerty CA ? … Les administrateur tolèrent tous cela ?
Je n’utilise ce mode que sur les PCs fournis par un seul client. J’en ai changé plusieurs fois, et on est passés de Windows 7 à Windows 10, mais je n’ai jamais eu de soucis.
C’est une grande entreprise (10k+ collaborateurs) donc j’imagine que ça doit marcher de manière similaire dans d’autres boîtes.
Je ne crois pas qu’il y ait beaucoup d’intérêt pour l’administrateur d’empêcher d’utiliser une disposition particulière, ça serait plutôt contre-productif, d’autant que dans une grosse société il y a souvent des collaborateurs étrangers qui sont habitués à d’autres dispositions, donc pourquoi les empêcher d’utiliser celle avec laquelle ils sont familiers?
-------------édit-------------
Quand je me reli 24h plus tard
je me rends compte que je ne suis pas clair
Pauvre de vous…
------------------------------

ok,
je comprend que tu as fais le tour de la question.

Le clavier programmable avec qwerty Canadien
serait une sorte de panacé ?

à condition d’avoir assez de neurones pour prendre trente seconde pour ajouter ledit clavier qwerty canadien dans parametres régionaux windows ou mac.

et que sur linux autant changer directement pour un bépo sans passer par qwerty canadien.

Comme tu le dit ailleur, l’achat d’un clavier programmable est forcément l’apanage de gens un peu geek qui alignent qq neurones… donc le problème n’existerai pas …

J’ai été confronté à la programmation de clavier… et quand j’ai découvert le clavier qwerty canadien
c’est vrai que c’est un clavier plus international… avec bcp de touches mortes pour les accents et bcp de lettres accentués en accès direct… plus facile à transposer que le azerty… (un comble).
Je n’avais pas envisagé le passage en qwerty canadien comme faisant parti de l’équation.
Je restai borné sur … le clavier de départ est azerty, qwerty, qwertz… quel est le programme optimal pour écrire en partant de là quel que soit la disposition.