<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://bepo.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spok</id>
	<title>Disposition de clavier bépo - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://bepo.fr/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Spok"/>
	<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/Sp%C3%A9cial:Contributions/Spok"/>
	<updated>2026-05-10T14:30:15Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25214</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25214"/>
		<updated>2016-06-29T10:46:20Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* Reprogramation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (même si vous n&#039;avez pas acheté chez eux), soit passer par la compilation maison pour profiter des avantages des derniers firmwares ou des alternatifs. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliquées.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeurs pour vous faire une base rapidement et la personnaliser à votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les différentes manières de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 2 Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifiée pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui pourront vous aider.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur signification&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html, de cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très claires du site. Seulement en anglais malheureusement mais si vous rencontrez des difficultés vous pouvez venir sur le forum pour trouver de l&#039;aide.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer, avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25213</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25213"/>
		<updated>2016-06-29T10:45:18Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* 1bis Compilation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (même si vous n&#039;avez pas acheté chez eux), soit passer par la compilation maison pour profiter des avantages des derniers firmwares ou des alternatifs. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliquées.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeurs pour vous faire une base rapidement et la personnaliser à votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifiée pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui pourront vous aider.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur signification&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html, de cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très claires du site. Seulement en anglais malheureusement mais si vous rencontrez des difficultés vous pouvez venir sur le forum pour trouver de l&#039;aide.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer, avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25212</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25212"/>
		<updated>2016-06-29T10:44:46Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* Astuces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (même si vous n&#039;avez pas acheté chez eux), soit passer par la compilation maison pour profiter des avantages des derniers firmwares ou des alternatifs. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliquées.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeurs pour vous faire une base rapidement et la personnaliser à votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifié pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui pourront vous aider.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur signification&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html, de cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très claires du site. Seulement en anglais malheureusement mais si vous rencontrez des difficultés vous pouvez venir sur le forum pour trouver de l&#039;aide.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer, avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25211</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25211"/>
		<updated>2016-06-29T10:41:30Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* Installation en mémoire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (même si vous n&#039;avez pas acheté chez eux), soit passer par la compilation maison pour profiter des avantages des derniers firmwares ou des alternatifs. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliquées.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeurs pour vous faire une base rapidement et la personnaliser à votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifié pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui vous aiderons.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur significations&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html, de cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très claires du site. Seulement en anglais malheureusement mais si vous rencontrez des difficultés vous pouvez venir sur le forum pour trouver de l&#039;aide.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer, avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25210</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25210"/>
		<updated>2016-06-29T10:36:51Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* Disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (même si vous n&#039;avez pas acheté chez eux), soit passer par la compilation maison pour profiter des avantages des derniers firmwares ou des alternatifs. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliquées.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeurs pour vous faire une base rapidement et la personnaliser à votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifié pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui vous aiderons.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur significations&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html&lt;br /&gt;
De cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très bien faite du site. Seulement en anglais malheureusement mais si vous rencontrer des difficultés venez sur le forum nous en parler.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25174</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25174"/>
		<updated>2016-06-22T07:33:26Z</updated>

		<summary type="html">&lt;p&gt;Spok : /* Falbatech */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des services de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoires en tout genre et les prix sont raisonnables.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (vous pouvez l&#039;utiliser même si vous n&#039;avez pas acheté chez eux). Soit passer par la compilation maison pour profiter des avantages des derniers firmware ou des alternatif. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliqué.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeur pour vous faire une base rapidement et le personnaliser a votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifié pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui vous aiderons.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur significations&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html&lt;br /&gt;
De cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très bien faite du site. Seulement en anglais malheureusement mais si vous rencontrer des difficultés venez sur le forum nous en parler.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
	<entry>
		<id>https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25173</id>
		<title>ErgoDox</title>
		<link rel="alternate" type="text/html" href="https://bepo.fr/wiki/index.php?title=ErgoDox&amp;diff=25173"/>
		<updated>2016-06-22T07:30:57Z</updated>

		<summary type="html">&lt;p&gt;Spok : Corrections orthographe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Présentation =&lt;br /&gt;
[[Image:ErgoDox.png|400px|thumb|right]]&lt;br /&gt;
Site internet du projet : http://ergodox.org&lt;br /&gt;
&lt;br /&gt;
Le projet est inspiré d&#039;un projet déjà existant http://www.key64.org. Vous pouvez retracer l&#039;historique du projet en lisant le fil d&#039;origine sur :&lt;br /&gt;
* https://geekhack.org/index.php?topic=22780.0&lt;br /&gt;
* http://deskthority.net/workshop-f7/split-ergonomic-keyboard-project-t1753-30.html&lt;br /&gt;
&lt;br /&gt;
== Achat ==&lt;br /&gt;
Plusieurs sites vous proposent des kits complet pour vous permettre de monter votre clavier. Sachez qu&#039;il faut compter un budget minimum de 200€ pour faire l&#039;acquisition d&#039;un modèle neuf. Un fil sur [http://forum.bepo.fr/viewtopic.php?id=1072 le forum] vous détaille tout cela. Sachez également qu&#039;il est en général difficile de se procurer des pièces pour claviers mécaniques depuis la France. &lt;br /&gt;
&lt;br /&gt;
=== Massdrop ===&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox&lt;br /&gt;
Le plus connu et le plus ancien revendeur de kit. Selon le principe du site on ne peut commander que quand un nombre suffisant de personnes en fait la demande (200) et le prix diminue suivant le nombre d&#039;acheteurs après une certaine période.&lt;br /&gt;
Pour la page des commandes c&#039;est [https://keyboard-configurator.massdrop.com/ext/ergodox là], ils proposent pas mal d&#039;options de personnalisation (switches, repose poignet, …). Ils proposent également pas mal d’accessoires autour du produit. Il ne faut pas hésiter a fouiller un peu le site pour trouver son bonheur, par exemple :&lt;br /&gt;
* https://www.massdrop.com/buy/grifiti-ergodox-wrist-rest&lt;br /&gt;
* https://www.massdrop.com/buy/ergodox-hard-case&lt;br /&gt;
&lt;br /&gt;
Pour la personnalisation de la disposition ils proposent aussi [https://keyboard-configurator.massdrop.com/ext/ergodox un configurateur en ligne] qui permet de faire ses première armes.&lt;br /&gt;
&lt;br /&gt;
A savoir qu&#039;ils proposent maintenant une version évoluée, [https://www.massdrop.com/buy/infinity-ergodox infinity]. Chaque partie est autonome, inclut un écran LCD, une conception simplifiée, bien moins de composants a souder, connexion des 2 partie via USB, …&lt;br /&gt;
&lt;br /&gt;
=== Falbatech ===&lt;br /&gt;
Site plus classique de commande, basé en Pologne. Des bépoïstes ont déjà expérimenté cette boutique et ils en sont content.&lt;br /&gt;
* http://falbatech.pl/&lt;br /&gt;
&lt;br /&gt;
A noter que Falbatech propose aussi des service de montage partiel ou complet ce qui peut être rassurant pour les moins bricoleurs. Ils proposent aussi pas mal d&#039;accessoire en tout genre et les prix sont raisonnable.&lt;br /&gt;
&lt;br /&gt;
== Personnalisation ==&lt;br /&gt;
==== Capuchons ====&lt;br /&gt;
Si vous n&#039;avez pas pris les capuchons lors de votre achat ou que vous souhaitez en changer vous pouvez vous tourner vers des sites tel que :&lt;br /&gt;
* http://pimpmykeyboard.com/blank-key-packs/&lt;br /&gt;
* http://www.wasdkeyboards.com/index.php/products/keycap-set.html&lt;br /&gt;
&lt;br /&gt;
Sinon il y a une page plus complète de revendeur ici : https://www.reddit.com/r/MechanicalKeyboards/wiki/keycapsellers&lt;br /&gt;
&lt;br /&gt;
==== Disposition ====&lt;br /&gt;
Pour cela vous avez le choix entre utiliser [https://keyboard-configurator.massdrop.com/ext/ergodox le configurateur web que massdrop met a disposition] (vous pouvez l&#039;utiliser même si vous n&#039;avez pas acheté chez eux). Soit passer par la compilation maison pour profiter des avantages des derniers firmware ou des alternatif. Ils apportent des fonctionnalités supplémentaires comme les touches de média, copier/couper/coller, etc.&lt;br /&gt;
La procédure n&#039;est pas des plus compliqué.&lt;br /&gt;
&lt;br /&gt;
Il existe sur le forum [http://forum.bepo.fr/viewtopic.php?id=981 un fil] regroupant toutes les propositions d&#039;adaptation du Bépo sur ce clavier. Vous pouvez librement reprendre le travail fait par les contributeur pour vous faire une base rapidement et le personnaliser a votre convenance.&lt;br /&gt;
&lt;br /&gt;
=== Reprogramation ===&lt;br /&gt;
Nous allons voir les manière possible de configurer la disposition de votre ErgoDox.&lt;br /&gt;
&lt;br /&gt;
==== 1 Configurateur Massdrop ====&lt;br /&gt;
C&#039;est l&#039;interface la plus conviviale pour se faire une première disposition personnalisé sans trop mettre les main dans les lignes de code.Pour cela il vous suffit d&#039;aller sur [https://keyboard-configurator.massdrop.com/ext/ergodox le site adéquate], de charger la configuration par défaut et de faire vos petits arrangement.&lt;br /&gt;
&lt;br /&gt;
[[Image:Massdrop_load.png|||]]&lt;br /&gt;
&lt;br /&gt;
Pour vous mettre le pied à l&#039;étrillé [https://keyboard-configurator.massdrop.com/ext/ergodox/?referer=EL3LHH&amp;amp;hash=f31537e2292d062a10f55fa2e7a07ace voilà un lien] qui vous donneras une disposition de base.&lt;br /&gt;
ATTENTION, vous remarquerez que la disposition globale des touches est en QWERTY et non Bépo comme l&#039;on pourrais s&#039;y attendre. La raison est que le clavier n&#039;envoie que des code de touches à votre OS et que c&#039;est le driver qui va faire la traduction vers une disposition ou une autre. Donc n&#039;essayez surtout pas de refaire un Bépo dans cette interface, seulement déplacer les touches qui vous sont proposés.&lt;br /&gt;
&lt;br /&gt;
Vous avez aussi la possibilité de sauvegarder vos œuvre et de les modifier plus tard. Pour cela il vous suffit d&#039;utiliser les boutons «save» et «load» de l&#039;outil.&lt;br /&gt;
&lt;br /&gt;
==== 1bis Compilation ====&lt;br /&gt;
C&#039;est la face nord pour la personnalisation mais clairement celle qui offre le plus de possibilités! Cependant il n&#039;y a rien de bien compliqué car le travail est tout pré-mâché et il ne vous reste plus qu&#039;a modifier un fichier et lancer quelques lignes de commande.&lt;br /&gt;
D&#039;abord on s&#039;install les outils qui nous seront utile :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install avr-libc g++ gcc &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite on télécharge les sources :&lt;br /&gt;
Le dépot de référence est celui de [https://github.com/tmk/tmk_keyboard TMK] mais il est générique a beaucoup de clavier programmable. Donc des fork sont plus spécialisé pour l&#039;Ergodox comme celui de [https://github.com/cub-uanic/tmk_keyboard/tree/master/keyboard/ergodox Cub-uanic] ou celui de [https://github.com/jackhumbert/qmk_firmware Jack Humbert]. Il y a aussi le dépot de [https://github.com/benblazak/ergodox-firmware Benblazak] qui est une autre alternative.&lt;br /&gt;
&lt;br /&gt;
Pour notre exemple nous allons rester avec celui de Jack Humbert qui est légèrement plus populaire que celui de Cub-uanic et a [https://github.com/jackhumbert/qmk_firmware/pull/194 un fichier de d&#039;entête permettant la configuration simplifié pour le bépo.]&lt;br /&gt;
&lt;br /&gt;
On récupère les sources via :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;wget https://github.com/jackhumbert/tmk_keyboard/archive/master.zip&lt;br /&gt;
unzip tmk_keyboard-master.zip&amp;lt;/source&amp;gt;&lt;br /&gt;
ou en clonant le dépot git :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;git clone https://github.com/jackhumbert/tmk_keyboard.git&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ensuite il est préférable de se faire son propre répertoire pour sa futur disposition :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;cd tmk_keyboard/keyboard/ergodox_ez/keymaps/&lt;br /&gt;
cp default bepo&lt;br /&gt;
vi bepo/keymap.c&amp;lt;/source&amp;gt;&lt;br /&gt;
Puis on personnalise le fichier «keymap.c» qui se trouve dans le répertoire nouvellement créé. Vous pouvez vous inspirer des diverses disposition présente. Sinon [http://forum.bepo.fr/viewtopic.php?id=981&amp;amp;p=10 sur le forum] vous en trouverez pour le Bépo, attention la plus part sont pour Cub-uain, des adaptations sont peut être nécessaire. Sinon un exemple est disponible [https://github.com/Flink/qmk_firmware/blob/bepo-flink/keyboard/ergodox_ez/keymaps/bepo_flink/keymap.c ici]&lt;br /&gt;
&lt;br /&gt;
Alors pourquoi ergodox_ez alors que l&#039;on parle de l&#039;Ergodox «tout court». Il s&#039;agit juste d&#039;une version commerciale de l&#039;Ergodox original, électroniquement il n&#039;y a aucun changement, rien que du cosmétique et packaging. Vous pouvez aller voir le site [https://ergodox-ez.com/pages/our-firmware ici]&lt;br /&gt;
&lt;br /&gt;
Ensuite on vérifie que l&#039;on a bien les dépendances suivante pour la cross compilation :&lt;br /&gt;
* gcc-avr&lt;br /&gt;
* binutils-avr&lt;br /&gt;
* avr-libc&lt;br /&gt;
&lt;br /&gt;
Et enfin place la variable «export KEYMAP=bepo» pour que la compilation prenne bien le répertoire que l&#039;on a créé, puis avec un simple «make» en se plaçant dans le répertoire «keyboard/ergodox_ez» on récupère le fichier «ergodox_ez.hex» dans le même répertoire qui sera chargé dans le clavier (voir § suivant).&lt;br /&gt;
&lt;br /&gt;
Vous allez me dire pourquoi s&#039;embêter a le faire à la main si un utilitaire graphique nous le fait ? Et bien l&#039;outil de Massdrop n&#039;est pas basé sur le dernier firmware disponible et certaines touches spéciales ne sont pas fonctionnelles, comme copier/couper/coller, volume+/-, … donc oui le jeu en vaut largement la chandelle.&lt;br /&gt;
&lt;br /&gt;
===== Astuces =====&lt;br /&gt;
Dans le fichier «config.h» vous pouvez configurer les données de description USB du clavier. Personnellement j&#039;ai remis les identifiants d&#039;origine de mon ergodox, ce qui donne : &lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
/* USB Device descriptor parameter */&lt;br /&gt;
#define VENDOR_ID       0xFEED&lt;br /&gt;
#define PRODUCT_ID      0x1307&lt;br /&gt;
#define DEVICE_VER      0x0001&lt;br /&gt;
#define MANUFACTURER    ErgoDox&lt;br /&gt;
#define PRODUCT         ErgoDox ergonomic keyboard&lt;br /&gt;
#define DESCRIPTION     t.m.k. keyboard firmware for Ergodox&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous voulez plus d&#039;info sur les possibilités voilà quelques fichiers qui vous aiderons.&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
README.MD = vous explique ce que vous pouvez faire avec le programme&lt;br /&gt;
tmk_core/doc/keymap.md = vous explique comment fonctionne le programme&lt;br /&gt;
            /keycode.txt = liste toutes les touches disponibles avec leur significations&lt;br /&gt;
        /common/keycode.h = liste toutes les notations abrégées des touches&lt;br /&gt;
quantum/keymap_extras/keymap_bepo.h = liste toutes les correspondances pour le bépo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Installation en mémoire ====&lt;br /&gt;
Pour cela rien de plus simple. Il suffit d&#039;aller sur la page du composant et de télécharger son «loader»&lt;br /&gt;
https://www.pjrc.com/teensy/loader.html&lt;br /&gt;
De cliquer sur l&#039;image correspondant a votre système d&#039;exploitation et de suivre les indications très bien faite du site. Seulement en anglais malheureusement mais si vous rencontrer des difficultés venez sur le forum nous en parler.&lt;br /&gt;
&lt;br /&gt;
Si vous faites de nombreux essais de configuration, je vous recommande de laisser le programme en arrière plan et de cliquer sur le bouton «auto». Comme ça il vous suffit d&#039;appuyer avec un cure-dent ou similaire, sur le petit bouton pour recharger votre nouvelle configuration après chaque compilation. Pratique et rapide.&lt;br /&gt;
&lt;br /&gt;
Parfois il peut s&#039;avérer nécessaire de débrancher et rebrancher le clavier pour qu&#039;il fonctionne correctement, mais rien de grave en soi.&lt;br /&gt;
&lt;br /&gt;
== Représentation schématique ==&lt;br /&gt;
Vous pouvez utiliser ces schémas pour présenter votre propre adaptation du Bépo a ce clavier.&lt;br /&gt;
=== Carte complète ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╔══════╗────┬────┬────┬────┬────┬────┐ ┌────┬────┬────┬────┬────┬────╔══════╗&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    │    │ │    │    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╔════╗ ╔════╗────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ╠════╣ ╠════╣    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╠══════╣────┼────┼────┼────┼────╢    ║ ║    ╟────┼────┼────┼────┼────╠══════╣&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ║      ║    │    │    │    │    ║    ║ ║    ║    │    │    │    │    ║      ║&lt;br /&gt;
 ╚══════╝────┴────┼────┼────┼────╚════╝ ╚════╝────┼────┼────┼────┼────╚══════╝&lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   │    │    │    │    │    │                     │    │    │    │    │    │  &lt;br /&gt;
   └────┴────┴────┴────┴────┘                     └────┴────┴────┴────┴────┘  &lt;br /&gt;
                            ┌────┬────┐ ┌────┬────┐                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                            │    │    │ │    │    │                           &lt;br /&gt;
                       ┌────┼────┼────┤ ├────┼────┼────┐                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    ├────┤ ├────┤    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       │    │    │    │ │    │    │    │                      &lt;br /&gt;
                       └────┴────┴────┘ └────┴────┴────┘                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
=== Carte simplifiée ===&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   ├───┤ ├───┤   │   │   │   │   │     │&lt;br /&gt;
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤&lt;br /&gt;
 │     │   │   │   │   │   │   │ │   │   │   │   │   │   │     │&lt;br /&gt;
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘&lt;br /&gt;
   │   │   │   │   │   │                 │   │   │   │   │   │  &lt;br /&gt;
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  &lt;br /&gt;
                       ┌───┬───┐ ┌───┬───┐                      &lt;br /&gt;
                       │   │   │ │   │   │                      &lt;br /&gt;
                   ┌───┼───┼───┤ ├───┼───┼───┐                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   │   │   ├───┤ ├───┤   │   │                  &lt;br /&gt;
                   │   │   │   │ │   │   │   │                  &lt;br /&gt;
                   └───┴───┴───┘ └───┴───┴───┘                  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Autre ==&lt;br /&gt;
Un retour d&#039;expérience d&#039;un utilisateur (non converti au Bépo)&lt;br /&gt;
http://www.olivierpons.fr/ergodox/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Ergonomie]]&lt;br /&gt;
[[Catégorie:Clavier]]&lt;br /&gt;
&lt;br /&gt;
=== Exemple de fichier déjà prêt ===&lt;br /&gt;
Pour ne pas partir de zéro je vous met ma configuration actuelle :&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;br /&gt;
#include &amp;quot;ergodox_ez.h&amp;quot;&lt;br /&gt;
#include &amp;quot;debug.h&amp;quot;&lt;br /&gt;
#include &amp;quot;action_layer.h&amp;quot;&lt;br /&gt;
#include &amp;quot;keymap_bepo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define BASE 0 // default layer&lt;br /&gt;
#define SYMB 1 // symbols&lt;br /&gt;
#define MOUSE 2 // media keys&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {&lt;br /&gt;
/* Keymap 0: Basic layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * | Esc    |   &amp;quot;  |   «  |   »  |   (  |   )  |  $   |           |  %   |   @  |   +  |   -  |   /  |   *  |   =    |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | Ç      |   B  |   É  |   P  |   O  |   È  | Tab  |           | Tab  |   ^  |   V  |   D  |   L  |   J  |   Z    |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | W      |   A  |   U  |   I  |   E  |   ,  |------|           |------|   C  |   T  |   S  |   R  |   N  |   M    |&lt;br /&gt;
 * |--------+------+------+------+------+------|  Del |           | BkSp |------+------+------+------+------+--------|&lt;br /&gt;
 * | Ctrl   |   À  |   Y  |   X  |   .  |   K  |      |           |      |   &#039;  |   Q  |   G  |   H  |   F  |  Ctrl  |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   | LGui | Home | Pgup |Pgdown| End  |                                       | Left | Down |  Up  |Right | RGui |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |Ctrl+C|Ctrl+V|       |  L1  |  L2  |&lt;br /&gt;
 *                                 ,------|------|------|       |------+--------+------.&lt;br /&gt;
 *                                 |      |      | ~L1  |       | App  |        |      |&lt;br /&gt;
 *                                 | Space|Shift |------|       |------|  Shift |Enter |&lt;br /&gt;
 *                                 |      |      |Alt/Enter|    | AltGr|        |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `----------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// If it accepts an argument (i.e, is a function), it doesn&#039;t need KC_.&lt;br /&gt;
// Otherwise, it needs KC_*&lt;br /&gt;
[BASE] = KEYMAP(  // layer 0 : default&lt;br /&gt;
        // left hand&lt;br /&gt;
        KC_ESC,       BP_DOUBLE_QUOTE, BP_LEFT_GUILLEMET, BP_RIGHT_GUILLEMET, BP_LEFT_PAREN, BP_RIGHT_PAREN, BP_DOLLAR,&lt;br /&gt;
        BP_C_CEDILLA, BP_B,            BP_E_ACUTE,        BP_P,               BP_O,          BP_E_GRAVE,     KC_TAB,&lt;br /&gt;
        BP_W,         BP_A,            BP_U,              BP_I,               BP_E,          BP_COMMA,&lt;br /&gt;
        KC_LCTL,      BP_A_GRAVE,      BP_Y,              BP_X,               BP_DOT,        BP_K,           KC_DELT,&lt;br /&gt;
          KC_LGUI,    KC_HOME,         KC_PGUP,           KC_PGDN,            KC_END,&lt;br /&gt;
                                          &lt;br /&gt;
					           LCTL(BP_C), LCTL(BP_V),&lt;br /&gt;
                                                               MO(SYMB),&lt;br /&gt;
                                              KC_SPC, KC_LSFT, ALT_T(KC_ENT),&lt;br /&gt;
        // right hand&lt;br /&gt;
             BP_PERCENT, BP_AT,              BP_PLUS, BP_MINUS, BP_SLASH, BP_ASTERISK, BP_EQUAL,&lt;br /&gt;
             KC_TAB,     BP_DEAD_CIRCUMFLEX, BP_V,    BP_D,     BP_L,     BP_J,        BP_Z,&lt;br /&gt;
                         BP_C,               BP_T,    BP_S,     BP_R,     BP_N,        BP_M,&lt;br /&gt;
             KC_BSPC,    BP_APOSTROPHE,      BP_Q,    BP_G,     BP_H,     BP_F,        KC_RCTL,&lt;br /&gt;
                                             KC_LEFT, KC_DOWN,  KC_UP,    KC_RGHT,     KC_LGUI,&lt;br /&gt;
             TG(SYMB), TG(MOUSE),&lt;br /&gt;
             KC_APP,&lt;br /&gt;
             KC_RALT,KC_RSFT, KC_ENT&lt;br /&gt;
    ),&lt;br /&gt;
/* Keymap 1: Symbol Layer&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |           |P.Scr|NumLock|   +  |  -   |  /   |  *   |    =   |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * | VolUp  |   F7 |  F8  |  F9  |  F10 | F11  |  F12 |           |      |   ^  |   7  |   8  |   9  |   +  |ScrLock |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |  Mute  | Prev | Play | Stop | Next | Calc |------|           |------|   ˇ  |   4  |   5  |   6  |   +  | Pause  |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * | VolDn  | Undo | Cut  | Copy | Paste| Redo |      |           |      |  Ins |   1  |   2  |   3  |Enter |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |   0  |   ,  |   .  |Enter |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// SYMBOLS&lt;br /&gt;
[SYMB] = KEYMAP(&lt;br /&gt;
       // left hand&lt;br /&gt;
       KC_TRNS,   KC_F1,   KC_F2,   KC_F3,   KC_F4,    KC_F5,   KC_F6,&lt;br /&gt;
       KC_VOLU,   KC_F7,   KC_F8,   KC_F9,   KC_F10,   KC_F11,  KC_F12,&lt;br /&gt;
       KC_MUTE,   KC_MPRV, KC_MPLY, KC_MSTP, KC_MNXT,  KC_CALC,&lt;br /&gt;
       KC_VOLD,   KC_UNDO, KC_CUT,  KC_COPY, KC_PASTE, KC_CALC, KC_TRNS,&lt;br /&gt;
         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       &lt;br /&gt;
                                       KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                KC_TRNS,&lt;br /&gt;
                               KC_TRNS,KC_TRNS, KC_TRNS,&lt;br /&gt;
       // right hand&lt;br /&gt;
       KC_PSCR, KC_LNUM,            KC_KP_PLUS,KC_KP_MINUS,KC_KP_SLASH,KC_KP_ASTERISK,KC_KP_EQUAL,&lt;br /&gt;
       KC_TRNS, BP_DEAD_CIRCUMFLEX, KC_KP_7,   KC_KP_8,    KC_KP_9,    KC_KP_PLUS,    KC_SLCK,&lt;br /&gt;
                RALT(BP_V),         KC_KP_4,   KC_KP_5,    KC_KP_6,    KC_KP_PLUS,    KC_PAUS,&lt;br /&gt;
       KC_TRNS, KC_INS,             KC_KP_1,   KC_KP_2,    KC_KP_3,    KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
                                    KC_KP_0,   KC_KP_COMMA,KC_KP_DOT,  KC_KP_ENTER,   KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
/* Keymap 2: Mouse keys&lt;br /&gt;
 *&lt;br /&gt;
 * ,--------------------------------------------------.           ,--------------------------------------------------.&lt;br /&gt;
 * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhUp | Lclk | MsUp | Rclk | Acc0 |      |           |      | Acc0 | WhLft| WhUp | WhRgh|      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        | WhDwn|MsLeft|MsDown|MsRght| Acc1 |------|           |------| Acc1 | Lclk | Cclk | Rclk |      |        |&lt;br /&gt;
 * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|&lt;br /&gt;
 * |        |      | Btn4 | Cclk | Btn5 | Acc2 |      |           |      | Acc2 | Btn4 | WhDwn| Btn5 |      |        |&lt;br /&gt;
 * `--------+------+------+------+------+-------------&#039;           `-------------+------+------+------+------+--------&#039;&lt;br /&gt;
 *   |      |      |      |      |      |                                       |      |      |      |      |      |&lt;br /&gt;
 *   `----------------------------------&#039;                                       `----------------------------------&#039;&lt;br /&gt;
 *                                        ,-------------.       ,-------------.&lt;br /&gt;
 *                                        |      |      |       |      |      |&lt;br /&gt;
 *                                 ,------|------|------|       |------+------+------.&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 |      |      |------|       |------|      |      |&lt;br /&gt;
 *                                 |      |      |      |       |      |      |      |&lt;br /&gt;
 *                                 `--------------------&#039;       `--------------------&#039;&lt;br /&gt;
 */&lt;br /&gt;
// MOUSE&lt;br /&gt;
[MOUSE] = KEYMAP(&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_UP,   KC_BTN1, KC_MS_U, KC_BTN2, KC_ACL0, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_MS_WH_DOWN, KC_MS_L, KC_MS_D, KC_MS_R, KC_ACL1,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_BTN4, KC_BTN3, KC_BTN5, KC_ACL2, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,       KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
                                           KC_TRNS, KC_TRNS,&lt;br /&gt;
                                                    KC_TRNS,&lt;br /&gt;
                                  KC_TRNS, KC_TRNS, KC_TRNS,&lt;br /&gt;
    // right hand&lt;br /&gt;
       KC_TRNS,  KC_TRNS, KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL0, KC_MS_WH_UP, KC_MS_WH_UP,   KC_MS_WH_DOWN, KC_TRNS, KC_TRNS,&lt;br /&gt;
                 KC_ACL1, KC_BTN1,     KC_BTN3,       KC_BTN2,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,  KC_ACL2, KC_BTN4,     KC_MS_WH_DOWN, KC_BTN5,       KC_TRNS, KC_TRNS,&lt;br /&gt;
                          KC_TRNS,     KC_TRNS,       KC_TRNS,       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS,&lt;br /&gt;
       KC_TRNS,&lt;br /&gt;
       KC_TRNS, KC_TRNS, KC_TRNS&lt;br /&gt;
),&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const uint16_t PROGMEM fn_actions[] = {&lt;br /&gt;
    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)&lt;br /&gt;
{&lt;br /&gt;
  // MACRODOWN only works in this function&lt;br /&gt;
      switch(id) {&lt;br /&gt;
        case 0:&lt;br /&gt;
        if (record-&amp;gt;event.pressed) {&lt;br /&gt;
          register_code(KC_RSFT);&lt;br /&gt;
        } else {&lt;br /&gt;
          unregister_code(KC_RSFT);&lt;br /&gt;
        }&lt;br /&gt;
        break;&lt;br /&gt;
      }&lt;br /&gt;
    return MACRO_NONE;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs just one time when the keyboard initializes.&lt;br /&gt;
void matrix_init_user(void) {&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// Runs constantly in the background, in a loop.&lt;br /&gt;
void matrix_scan_user(void) {&lt;br /&gt;
&lt;br /&gt;
    uint8_t layer = biton32(layer_state);&lt;br /&gt;
&lt;br /&gt;
    ergodox_board_led_off();&lt;br /&gt;
    ergodox_right_led_1_off();&lt;br /&gt;
    ergodox_right_led_2_off();&lt;br /&gt;
    ergodox_right_led_3_off();&lt;br /&gt;
    switch (layer) {&lt;br /&gt;
      // TODO: Make this relevant to the ErgoDox EZ.&lt;br /&gt;
        case 1:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
            break;&lt;br /&gt;
        case 2:&lt;br /&gt;
            ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
	case 3:&lt;br /&gt;
            ergodox_right_led_1_on();&lt;br /&gt;
	    ergodox_right_led_2_on();&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            // none&lt;br /&gt;
            break;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Spok</name></author>
	</entry>
</feed>