Utilisateur:Ewen goisot

De Disposition de clavier bépo

(ceci est un test, je compte éditer sérieusement cette page d'ici quelques jours).

Résumé de ma démarche: Je passe beaucoup de temps à écrire, souvent pour de la programmation (notamment bash, zsh, C++), et j'ai vite été frustré par la difficulté d'accès des caractères spéciaux, la sur utilisation des auriculaires… bref comme tout le monde ici je crois^^. Je suis rapidement passé en bépo, puis en ai profité pour regarder quel clavier serait plus adapté. Après un temps de recherche, j'ai finalement opté pour le clavier Ergodox EZ, mais sa forme différente des claviers classiques a fait que j'ai tenté de créer une disposition de clavier optimisée pour les claviers ergonomiques de ce type, ayant notamment plusieurs touches sur chaque pouce.

Caractéristiques du clavier Ergodox

Le clavier Ergodox a 6 touches accessibles sous chaque pouce au lieu d'une seule, au moins 3 par pouce sont très faciles d'accès.

C'est un clavier orthogonal et splitté.

3 touches en plus par index, moins de touches sur les auriculaires, pas de pavé numérique, pas de touches F1 … F12, mais 5 touches sur une ligne en dessous.

Le clavier est programmable.

Disposition de clavier, partie traîtée par l'ordinateur

En résumé

Voici la disposition que j'utilise la plupart du temps.

 ┌─────┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬─────┐
 │  -  │ ! │ ? │ : │ " │cap│supr │ins│ Ù │ ( │ ) │ < │ > │  =  │
 ├─────┼───┼───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┼───┼─────┤
 │  Z  │ È │ È │ P │ ' │ Y │   │ │   │ B │ C │ M │ L │ F │  Ç  │
 ├─────┼───┼───┼───┼───┼───┤bks│ │tab├───┼───┼───┼───┼───┼─────┤
 │  Ê  │ O │ A │ I │ U │ H ├───┤ ├───┤ G │ T │ S │ N │ R │  ^  │
 ├─────┼───┼───┼───┼───┼───┤   │ │   ├───┼───┼───┼───┼───┼─────┤
 │group│ X │ À │ . │ , │ / │ [ │ │ ] │ Q │ D │ V │ J │ W │  K  │
 └─┬───┼───┼───┼───┼───┼───┴───┘ └───┴───┼───┼───┼───┼───┼───┬─┘
   │imp│ s+│ s-│ ↑ │ ↓ │                 │ ← │ → │F11│F13│F14│  
   └───┴───┴───┴───┴───┘                 └───┴───┴───┴───┴───┘  
                       ┌───┬───┐ ┌───┬───┐                      
                       │←←←│→→→│ │↑↑↑│TT3│                      
                   ┌───┼───┼───┤ ├───┼───┼───┐                  
                   │   │   │tmux │↓↓↓│   │   │                  
                   │ E │esc├───┤ ├───┤ent│esp│                  
                   │   │   │TT1│ │TT2│rée│ace│                  
                   └───┴───┴───┘ └───┴───┴───┘                  


Comme pour la disposition Bépo ou Dvorak, les lettres les plus fréquentes sont sur la ligne du milieu.

Beaucoup de lettres ont un placement proche de celui de Bépo, il y a cependant plusieurs différences, les principales sont: J'ai mis la lettre E sur l'un des pouces, car il s'agit de loin de la lettre la plus fréquente en français. Déplacé le M pour éviter de surcharger l'auriculaire droit. Rendu plus accessibles des lettres utiles en anglais, notamment le W, H et Y sans pour autant prendre des places trop importantes car peu utiles en français. Rendu le digramme CH fréquent en français pour la lettre H, plus facile. Éviter les déplacements latéraux pour les lettres fréquentes comme C M , en bépo.

La ligne du bas sert à (de gauche à droite) : [screenshot] [volume -] [volume +] [flèche haut] [flèche bas] [flèche gauche] [flèche droite] [F11: plein écran] [F13: afficher un terminal] [F14: afficher le presse papier]. Donc 2 touches directionnelles et 3 touches spéciales (nécessitant certains logiciels pour bien fonctionner) par main. Ces touches sont dures d'accès en repliant les doigts, mais on les atteinds facilement avec le milieu du doigt ou avec le pouce pour les touces directionnelles.

Touches à double fonction

C'est une particularité de l'ergodox: une touche à double fonction permet d'agir comme un modifieur (majuscule, ctrl, alt, altgr… ) si on la garde appuyée et qu'on appuie sur une autre touche pendant ce temps, ou comme une touche normale (espace, enter, lettre, chiffre, suppr, flèches… ) si on l'appuie et la lâche juste après. Cela permettrais en théorie de doubler virtuellement le nombre de touches du clavier, c'est en réalité un peu moins que ça étant donné qu'il existe moins de modifieurs que de lettres.

J'ai choisi de mettre mes modifieurs sur les pouces, et de faire en sorte que les racourcis clavier (par exemple Ctrl+T) soient faits avec un pouce (Ctrl) et un doigt autre (par exemple T est fait avec l'index), si possible de l'autre main.

                       ┌───┬───┐ ┌───┬───┐                      
                       │alt│meh│ │↑↑↑│TT3│                      
                   ┌───┼───┼───┤ ├───┼───┼───┐                  
                   │   │   │maj| │ctgr   │   │                  
                   │alt│sup├───┤ ├───┤ctr│maj│                  
                   │ gr│ er│TT1│ │TT2│  l│   │                  
                   └───┴───┴───┘ └───┴───┴───┘                  

Pouce gauche: -altgr (alt droite) sert à saisir des caractères spéciaux tels que * ~ \ | @ $ fréquents en programmation (la plupart sont des caractères ASCII). -super (appellée $mod dans mon fichier de configuration i3wm) est la touche ayant parfois un logo Windows dessus, elle me sert à de nombreux racourcis permettant de se déplacer vers une autre fenêtre, de redimentionner, d'ouvrir les logiciels que j'utilise le plus etc. -alt sert pour certains racourcis clavier, mais je m'en sers assez peu. -meh est une idée provenant d'ergodox, envoyant plusieurs modifieurs à la fois (pour définir des racourcis clavier qui ont peu de chance d'être pris par d'autres logiciels). -maj, mais je me sers généralement de celui du pouce droit.

Pouce droit: -maj (ou shift), plus facile d'accès que celui de gauche, c'est celui que j'utilise la plupart du temps, sauf pour les quelques racourcis clavier du style Ctrl+Maj+… ou si les majuscules sont trop souvent juste après des espaces (ce n'est pas toujours le cas en programmation). -ctrl -ctgr est la touche Ctrl de droite, qui a une fonction similaire au Altgr (Altgr est un ISO_Level3_Shift, et Ctgr est un ISO_Level5_Shift) permettant de taper des caractères spéciaux différents de Altgr. Étant donné qu'on peut appuyer sur Altgr et/ou Maj et/ou Ctgr, cela laisse la possibilité d'avoir jusqu'à 8 caractères différents sur la même touche (ceux nécessitant l'appui simultané de deux ou trois modifieurs étant plus lents à taper, c'est réservé à des caractères rares). Notons que toutes les combinaisons à un ou deux modifieurs (+ une lettre n'étant pas sur un pouce) peuvent s'effectuer à l'aide des deux pouces.

Caractères spéciaux et VerrNum

Sur la plupart des claviers, il y a à droite un pavé numérique (ainsi que des touches pour les opérations mathématiques les plus simples), et une touche VerrNum permettant de désactiver les chiffres et d'obtenir d'autres touches à la place (servant surtout à effectuer des déplacements, souvent redondants avec d'autres touches du clavier).

Ici,

-Si VerrNum est désactivé, les chiffres sont en accès direct sur la ligne du haut au lieu des caractères -!?:" ()<>= on aura les caractères 54321 09876 (j'ai choisi cet ordre pour donner un accès facile aux chiffres 1 et 2 qui sont très fréquents principalement à cause de la loi de Benford https://fr.wikipedia.org/wiki/Loi_de_Benford , ainsi que 0 utile pour les nombres plus petits que 1, et 9 peut s'avérer fréquent dans certains cas (dans un logiciel comme Vim, il me sera plus rapide de dire 99l pour se déplacer de 99 caractères dans la version par défaut, que 100l, et généralement les deux mènent au même résultat: on arrive en fin de ligne, et j'ai également voulu garder un ordre logique entre les chiffres d'une même main). La plupart des caractères spéciaux courants (ASCII) sont accessibles avec Altgr+lettre.

-SI VerrNum est activé, les caractères -!?:" ()<>= sont en accès direct, et en appuyant sur Altgr+chiffre on obtient les chiffres, et pour éviter une trop forte redondance avec d'autres caractères spéciaux (présents notamment sur les touches xà., tsnr), le fait d'appuyer sur Altgr+[xà.,tsnr] donne un accès plus facile aux flèches, PageUp, PageDown, début et fin de ligne.

Pour obtenir de tels effets, sur Ubuntu, j'ai dû modifier le fichier /usr/share/X11/xkb/types/level5 (sur une autre distribution GNU/Linux, ce sera certainement un fichier de nom semblable, voire le même), et lui ajouter les lignes:


    // pour les chiffres
    type "EIGHT_LEVEL_NUMERICAL_ERGODOX" {
        modifiers = Shift + LevelThree + NumLock + LevelFive;

        map[None]                                    = Level1; // 4 premiers cas: normaux
        map[Shift]                                   = Level2;
        map[LevelThree]                              = Level3;
        map[LevelThree+Shift]                        = Level4;

        map[LevelFive]                               = Level5; // cas 5 à 8 sans VerrNum: normaux
        map[LevelFive+Shift]                         = Level6;
        map[LevelFive+LevelThree]                    = Level7;
        map[LevelFive+LevelThree+Shift]              = Level8;

        map[NumLock]                                 = Level7; // VerrNum: le niveau 7 est en accès direct au lieu du 1
        map[NumLock+Shift]                           = Level2;
        map[NumLock+LevelThree]                      = Level3;
        map[NumLock+LevelThree+Shift]                = Level4;

        map[NumLock+LevelFive]                       = Level5;
        map[NumLock+LevelFive+Shift]                 = Level6;
        map[NumLock+LevelFive+LevelThree]            = Level2; 
        map[NumLock+LevelFive+LevelThree+Shift]      = Level8;
        preserve[LevelFive+Shift] = Shift;
        preserve[NumLock+Shift] = Shift;
        //preserve[Lock+LevelFive+Shift] = Shift;
        //preserve[Lock+NumLock+Shift] = Shift;

        level_name[Level1] = "Base";
        level_name[Level2] = "Shift";
        level_name[Level3] = "Alt Base";
        level_name[Level4] = "Shift Alt";
        level_name[Level5] = "X";
        level_name[Level6] = "X Shift";
        level_name[Level7] = "X Alt Base";
        level_name[Level8] = "X Shift Alt";
    };

    type "EIGHT_LEVEL_LETTER_ERGODOX" {
        modifiers = Shift + LevelThree + NumLock + LevelFive;

        map[None]                                    = Level1;
        map[Shift]                                   = Level2;
        map[LevelThree]                              = Level3;
        map[LevelThree+Shift]                        = Level4;

        map[LevelFive]                               = Level5;
        map[LevelFive+Shift]                         = Level6;
        map[LevelFive+LevelThree]                    = Level3; // Ctgr+Altgr permet d'avoir des caractères indépendant de VerrNum
        map[LevelFive+LevelThree+Shift]              = Level4;

        map[NumLock]                                 = Level1;
        map[NumLock+Shift]                           = Level2;
        map[NumLock+LevelThree]                      = Level8; // avec VerrNum: un changement sur Altgr
        map[NumLock+LevelThree+Shift]                = Level4;

        map[NumLock+LevelFive]                       = Level5;
        map[NumLock+LevelFive+Shift]                 = Level7;
        map[NumLock+LevelFive+LevelThree]            = Level3;
        map[NumLock+LevelFive+LevelThree+Shift]      = Level4;

        level_name[Level1] = "Base";
        level_name[Level2] = "Shift";
        level_name[Level3] = "Alt Base";
        level_name[Level4] = "Shift Alt";
        level_name[Level5] = "X";
        level_name[Level6] = "X Shift";
        level_name[Level7] = "X Alt Base";
        level_name[Level8] = "X Shift Alt";
    };

qui en contrepartie réduit le nombre de niveaux utiles par touche (mais qui reste plus que 4).

Caractères spéciaux

Étant donné que la touche la plus fréquente pour l'accès aux caractères spéciaux, Altgr, est sur le pouce gauche, j'ai mis des caractères un peu plus fréquents sur la main droite, en tentant également de donner une certaine cohérance, en mettant () <> {} côte à côte, tous les signes mathématique %+=-* ensemble, et sur la main gauche, le reste: `@$#~\|&!?:" (certains de ces caractères ne sont plus en accès avec Altgr si VerrNum est activé). Certains caractères très fréquents à la fois en langue et en programmation comme .,/' sont mis en accès direct.

Cela donne donc, sans VerrNum:

Avec VerrNum:

Le code source ci-dessous est à mettre dans /usr/share/X11/xkb/symbols/oo (j'ai choisi le nom "oo" car il est court est ce nom n'était pas déjà pris), et d'entrer dans un terminal la commande `setxkbmap oo -variant ergo`:


xkb_symbols "ergo" {

 augment "level5"
 include "keypad(oss)"
 name[Group1]="french ergodox dual_num";

key.type[Group1] = "ONE_LEVEL";
key <RALT>{[ ISO_Level3_Shift ]};
key <RCTL>{[ ISO_Level5_Shift ]};
key <CAPS>{[ caps ]};

key.type[Group1] = "EIGHT_LEVEL_NUMERICAL_ERGODOX";// Chiffres, accès direct différent avec Altgr, certaines lettres en accès indirect pour le Mode 2 de l'ergodox.
key <KP1>{[ KP_1,    dead_grave, 1, k, a, a,   quotedbl ]};
key <KP2>{[ KP_2,    dead_acute, 2, j, a, a,      colon ]};
key <KP3>{[ KP_3,    dead_tilde, 3, i, a, a,   question ]};
key <KP4>{[ KP_4,   dead_macron, 4, h, a, a,     exclam ]};
key <KP5>{[ KP_5,    dead_breve, 5, g, a, a,      minus ]};
key <KP6>{[ KP_6, dead_abovedot, 6, l, a, a,       plus ]};
key <KP7>{[ KP_7, dead_belowdot, 7, m, a, a,    greater ]};
key <KP8>{[ KP_8,     dead_hook, 8, n, a, a,       less ]};
key <KP9>{[ KP_9,    dead_caron, 9, o, a, a, parenright ]};
key <KP0>{[ KP_0,    dead_greek, 0, p, a, a,  parenleft ]};

key.type[Group1] = "EIGHT_LEVEL";
key <TLDE>{[ dead_grave, a, grave ]};
key <AE11>{[ minus, underscore, hyphen, endash ]};
key <AE12>{[ equal, plus ]};
key <AE01>{[ U25A1, ISO_Level3_Lock, ISO_Next_Group, ISO_Level5_Lock, w, ISO_Level5_Lock, p, ISO_Level3_Lock ]};


key.type[Group1] = "EIGHT_LEVEL";// Lettres normales
key <AB01>{[         z,         Z,         ae,       AE, U2205 ]};
key <AE04>{[    egrave,    Egrave,      grave,    U2032, U2115 ]};
key <AE03>{[    eacute,    Eacute,         at,    U203B, U2124 ]};
key <AD10>{[         p,         P,     dollar,    U00B6, U211A ]};
key <AC11>{[apostrophe,  ellipsis, numbersign,  section, U211D ]};
key <AD06>{[         y,        Y, U00A4, periodcentered, U2102 ]};
// z Z æ Æ ∅
// è È ` ′ ℕ
// é É @ ※ ℤ
// p P $ ¶ ℚ
// ' … # § ℝ
// y Y t § ℂ

key <AE02>{[ecircumflex, Ecircumflex, oe, OE, U2201 ]};
key <AD09>{[ o,  O,  asciitilde,       U221A, U2229 ]};
key <AC01>{[ a,  A,   backslash,       U221E, U222A ]};
key <AD08>{[ i,  I,         bar,   brokenbar, U2203 ]};
key <AD07>{[ u,  U,   ampersand,       U2202, U2200 ]};
key <AC06>{[ h,  H,       U202F,  exclamdown, U2208 ]};
// ê Ê œ Œ ∁
// o O ~ √ ∩
// a A \ ∞ ∪
// i I | ¦ ∃
// u U & ∂ ∀
// h H   ¡ ∈

key.type[Group1] = "EIGHT_LEVEL_LETTER_ERGODOX";// Lettres, +autre fonction en VerrNum+Altgr
key <AB02>{[     x,      X,   exclam, exclamdown,  U1F12F, a, a, Home]};
key <AE05>{[agrave, Agrave, question, questiondown, U00A9, a, a,Prior]};
key <AB09>{[period, degree,    colon, U203D,        U00AE, a, a, Next]};
key <AB08>{[comma, minutes, quotedbl, U2E2E,        U2122, a, a,  End]};
key.type[Group1] = "EIGHT_LEVEL";//
key <AB10>{[slash, seconds,  seconds, questiondown, U2212 ]};
// x X ! ¡ 🄯
// à À ? ¿ ©
// . ° : ‽ ®
// , ′ " ⸮ ™
// / ″ ″ ¿ −

key <AE08>{[ ugrave, Ugrave, eth,       ETH ]};
key <AB05>{[ b, B, dead_currency,  division, U2248 ]};
key <AB03>{[ c, C,          plus,  notequal, U230A ]};
key <AB07>{[ m, M,         equal, plusminus, U230B ]};
key <AC09>{[ l, L,         minus,    endash, U2308 ]};
key <AC04>{[ f, F,      asterisk,     U00D7, U2309 ]};
key <AE07>{[ ccedilla, Ccedilla, dagger, doubledagger, U221D]};
// ù Ù ð Ð
// b B ¤ ÷ ≈
// c C + ≠ ⌊
// m M = ± ⌋
// l L - – ⌈
// f F * × ⌉
// ç Ç † ‡ ∝

key <AC05>{[ g, G,    percent, U2030, U27C2 ]};
key.type[Group1] = "EIGHT_LEVEL_LETTER_ERGODOX";//
key <AD05>{[ t, T,  parenleft, U27E6, U220F, a, a,  Left ]};
key <AC02>{[ s, S, parenright, U27E7, U2211, a, a,    Up ]};
key <AB06>{[ n, N,       less, U2264, U2228, a, a,  Down ]};
key <AD04>{[ r, R,    greater, U2265, U2227, a, a, Right ]};
//division
// g G % ‰ ⟂
// t T ( ⟦ ∏
// s S ) ⟧ ∑
// n N < ≤ ∨
// r R > ≥ ∧

key.type[Group1] = "EIGHT_LEVEL";//
key <AD01>{[ q, Q,   EuroSign,  U017F ]};
key <AC03>{[ d, D,  braceleft, ssharp ]};
key <AB04>{[ v, V, braceright,  thorn ]};
key <AC07>{[ j, J,  semicolon,  THORN ]};
key <AD02>{[ w, W,      schwa,  SCHWA ]};
key <AC08>{[ k, K,      U0133,  U0132, notsign ]};
// q Q € ſ
// d D { ß
// v V } þ
// j J ; Þ
// w W ə Ə
// k K ij IJ

key <AD03>{[ e, E, e, E ]};
key <AD11>{[ bracketleft,  guillemotleft,  a,  leftdoublequotemark]};
key <AD12>{[ bracketright, guillemotright, a, rightdoublequotemark]};
key <SPCE>{[ space, space, underscore, underscore ]};
key <AE06>{[ dead_circumflex, dead_diaeresis, asciicircum ]};
//key<RTRN>{[ m, M, Delete, Delete, percent]};
 

key <AC10>{[ semicolon, colon ]};
key <BKSL>{[ backslash, bar ]};

key <AE09>{[ ISO_Next_Group]};
key <AE10>{[ dead_grave]};
key <KPAD>{[ CodeInput ]};
key <KPEN>{[ e, b, c, d, e, f ]};
key <KPSU>{[ e]};
key <KPDL>{[ e]};
key <KPMU>{[ e]};

};

8 modes de clavier

Ma configuration complète de l'Ergodox est disponible sur ce site: https://configure.ergodox-ez.com/layouts/5zNY/latest/0 indiquant à la fois l'apparence visuelle, le fichier .hex à mettre sur le clavier, et le code source pour ceux qui souhaitent en faire une version améliorée (sachant que c'est aussi possible sur le site d'ergodox ez).

Le clavier Ergodox a l'avantage d'être programmable, c'est à dire que certaines fonctions (la position des touches mais pas que) sont gérées en dehors de l'ordinateur. En résumé, j'utilise:

Mode 1: lettres. C'est le mode que j'utilise le plus souvent, pour du texte, pour divers racourcis clavier, une partie du temps en programmation.

Mode 2: maths. Contient les chiffres TOUJOURS en accès direct (que verr num soit activé ou pas), tous les caractères spéciaux ASCII utiles en programmation, les 6 premières lettres en accès direct (pour l'hexadécimal), et 10 lettres de plus en majuscule.

Mode 3: souris. Je n'ai plus besoin d'une souris physique, ce mode peut diriger le pointeur de la souris, scroller, cliquer comme une souris. Il y a aussi de nombreux racourcis clavier faciles d'accès dessus servant notamment pour la navigation sur internet (changer d'onglet, fermet/ouvrir/recharger un onglet… ), également utiles sur d'autres logiciels une fois ceux ci bien configurés.

Mode 4 à 8: spéciaux / pour une main sur le clavier et une sur la souris / pour deux mains sur le clavier dont une émulant la souris et l'autre tapant des lettres.

Transitions

Entre les modes 1 2 et 3, les transitions se font avec les touches des pouces, situées les plus en bas. Gauche: 1->2 2->1 3->2 Droite: 1->3 3->1 2->3 Ce choix donne un rôle prédominant au 1 (d'ailleurs, les touches sont marquées TT sur le site depuis ce mode, c'est à dire qu'en gardant………)

Pour aller au mode 4 (qui donne accès à d'autres), on appuie sur une autre touche du pouce droit depuis le mode 1.

Entre les modes 5, 6, 7, il y a également deux touches permettant d'aller de l'un à l'autre.

plan futur

position des lettres et caractères spéciaux [ lettres ] [ dual modifiers ] [ plusieurs couches ] [ 8 niveaux ] [ deux modes pour les nombres ]


clavier ergodox [ avis détaillé ] [ spécificités programmables ] [ organisation des modes ] [ modes 2 et 3 seront détaillés, l'ensemble des modes suivants aussi ]

[[ compatibilité avec des logiciels ] [ i3 ] [ i3 + scripts ] [ vim ] [tmux ] [ zsh ]