Utilisateur:Nbrodu/bépo contextuel

De Disposition de clavier bépo
< Utilisateur:Nbrodu
Version datée du 22 mai 2008 à 16:20 par Nbrodu (discussion | contributions) (Bugs eradiqués, Caps en AltGr ça marche vraiment :))

Bépo contextuel

L’idée de cette variante est d’adapter la disposition bépo pour un usage plus « technique » tout en gardant la possibilité de basculer dans un mode plus « littéraire » en fonction du contexte (ex : écriture de mail) par un mécanisme proche du caps-lock.

Par exemple, on peut utiliser l’apostrophe «’» comme je fait là pour un texte en français, ou bien celle-ci «'» droite, pour taper un script. Les deux occupent la même touche, en accès direct dans les deux cas sans avoir besoin de remapper quoi que ce soit, juste en choisissant le « mode » du clavier en fonction du contexte par pression sur une simple touche « litt. lock ».

Ça permet aussi d’échanger à la volée «» et <> en accès direct, et potentiellement d’autres choses du genre, peu intrusives mais bien pratique.

L’idée peut être étendue à plus que deux modes, à différents contextes comme ici un mode « technique » et un mode « littéraire », mais on peut imaginer de nombreuses autres possibilités. Le tout est de partir d’une disposition de base qui implique le moins de changement possible entre les modes afin que ça reste intuitif, mais suffisamment de changement pour que la présence de différents modes se justifie.


En Image

Il s’agit pour l’instant d’une version peu modifiée de la 0.6.6 provisoire. Note : Les «» ont des nbsp automatiques dans les deux cas ci-dessous…


Par défaut (presque une 0.6.6, changements en bleu) :

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ #  │ 1  │ 2  │ 3  │ 4  │ 5  ║ 6  │ 7  │ 8  │ 9  │ 0  │ @  │    ║        ║
│ $  │ " —│ < «> »│ ( [│ ) ]║ _  │ +  │ -  │ /  │ *  │ =  │ %  ║ <--    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║  |<-  ║ B  │ É  │ P  │ O Œ│ È  ║ !  │ V  │ D  │ L  │ J  │ Z  │ W  ║   | ║
║  ->|  ║   |│    │   &│    │    ║ ˆ  │    │    │    │    │    │    ║ <-' ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║ A Æ│ U Ù│ I  │ E  │ ?  ║ C  │ T  │ S  │ R  │ N  │ M  │ Ç  ║    ║
║ Shift  ║    │    │   ¨│   €│ ,  ║    │    │    │    │    │    │    ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║      ║  Ê │ X  │ Y  │ À  │ :  │ K  ║ ;  │ Q  │ G  │ H  │ F  ║     ^     ║
║ Caps ║   /│   \│   {│   }│ . …│   ~║ '  │    │    │    │    ║     |     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧╦═══╧═╦══╧════╬═════╦═════╣
║       ║      ║     ║ Espace insécable         ║     ║       ║     ║     ║
║ Ctrl  ║ Litt ║ Alt ║ Espace            _      ║AltGr║Compose║Menu ║Ctrl ║
╚═══════╩══════╩═════╩══════════════════════════╩═════╩═══════╩═════╩═════╝


Après pression sur « Litt » (changements par rapport à ci-dessus en bleu) :

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ #  │ 1  │ 2  │ 3  │ 4  │ 5  ║ 6  │ 7  │ 8  │ 9  │ 0  │ @  │    ║        ║
│ $  │ " —│ « <» >│ ( [│ ) ]║ _  │ +  │ -  │ /  │ *  │ =  │ %  ║ <--    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║  |<-  ║ B  │ É  │ P  │ O Œ│ È  ║ !  │ V  │ D  │ L  │ J  │ Z  │ W  ║   | ║
║  ->|  ║   |│    │   &│    │    ║ ˆ  │    │    │    │    │    │    ║ <-' ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗    ║
║        ║ A Æ│ U Ù│ I  │ E  │ ?  ║ C  │ T  │ S  │ R  │ N  │ M  │ Ç  ║    ║
║ Shift  ║    │    │   ¨│   €│ ,  ║    │    │    │    │    │    │    ║    ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩════╣
║      ║  Ê │ X  │ Y  │ À  │ :  │ K  ║ ;  │ Q  │ G  │ H  │ F  ║     ^     ║
║ Caps ║   /│   \│   {│   }│ . …│   ~║   │    │    │    │    ║     |     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧╦═══╧═╦══╧════╬═════╦═════╣
║       ║      ║     ║ Espace insécable         ║     ║       ║     ║     ║
║ Ctrl  ║ Tech ║ Alt ║ Espace            _      ║AltGr║Compose║Menu ║Ctrl ║
╚═══════╩══════╩═════╩══════════════════════════╩═════╩═══════╩═════╩═════╝

« Tech » permet de revenir en mode « technique ». On peut voir ça comme un genre de CapsLock ou NumLock.


Note : J’ai également pendant un temps inversé Shift et Caps gauche pour améliorer l’accessibilité du Shift gauche, mais il se trouve que certains claviers n’apprécient pas. Il se pourrait que CAPS soit hardcodé, même si en l’occurence seulement l’indicateur LED du CAPS semblait hardcodé (la touche fonctionnait comme un vrai CAPS). Ceci dit je penche plutôt pour une mauvaise configuration xkb, il faudrait que je regarde la section concernant les indicateurs lumineux dans le manuel pour tenter de résoudre ce problème. Qui plus est mes tests récents avec un AltGr à droite sur CAPS sont également sujets à des problèmes similaires.


Fichier Xkb

Vous pouvez enregistrer le texte ci-dessous dans un fichier comme « bépo_contexte.xkb » puis exécuter la commande « xkbcomp -w bépo_contexte.xkb :0 » pour la tester.

xkb_keymap        {
 
xkb_keycodes      { include "xfree86+aliases(azerty)" };

// Cf section ci-dessous pour les explications: Shift sur CAPS, AltGr sur LFSH, et Caps_Lock en AltGr+Caps
xkb_types {
   include "complete"
   type "ALTGR_TWO" {
       modifiers = LevelThree;
       map[None] = Level1;
       map[LevelThree] = Level2;
       level_name[Level1] = "Base";
       level_name[Level2] = "AltGr";
   };
};
   
xkb_compatibility { include "complete" };
   
partial alphanumeric_keys
xkb_symbols "dvorak" {
   
   name[Group1]= "France - Bepo, ergonomic, Dvorak way (v0.6.6 variant)";
   include "pc(pc105)"
   
   key <TLDE> { type[group1] = "FOUR_LEVEL", [ dollar, numbersign, section, paragraph ] }; // $ # § ¶
   key <AE01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ quotedbl, 1, emdash ] }; // " 1 —
   key <AE02> {
       type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ less, 2, guillemotleft, lessthanequal ],
       type[group2] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotleft, 2, less, lessthanequal ] 
   }; // « 2 < ≤
   key <AE03> { 
       type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ greater, 3, guillemotright, greaterthanequal ],
       type[group2] = "FOUR_LEVEL_SEMIALPHABETIC", [ guillemotright, 3, greater, greaterthanequal ]
   }; // » 3 > ≥
   key <AE04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenleft, 4, bracketleft, leftdoublequotemark ] }; // ( 4 [ “
   key <AE05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ parenright, 5, bracketright, rightdoublequotemark ] }; // ) 5 ] ”
   key <AE06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ at, 6 ] }; // @ 6
   key <AE07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ plus, 7, plusminus, degree ] }; // + 7 ± °
   key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ minus, 8, endash, minutes ] }; // - 8 – ′
   key <AE09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ slash, 9, division, seconds ] }; // / 9 ÷ ″
   key <AE10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ asterisk, 0, multiply ] }; // * 0 ×
   key <AE11> { type[group1] = "THREE_LEVEL", [ equal, asciicircum, notsign ] }; // = ^ ¬
   key <AE12> { type[group1] = "THREE_LEVEL", [ percent, grave, U2030 ] }; // % ` ‰
   
   key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b, B, bar, brokenbar ] }; // b B | ¦
   key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute, Eacute, dead_acute, dead_doubleacute ] }; // é É ´ ˝
   key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p, P, ampersand ] }; // p P &
   key <AD04> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ o, O, oe, OE ] }; // o O œ Œ
   key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave, Egrave, dead_grave, grave ] }; // è È ` `
   key <AD06> { type[group1] = "FOUR_LEVEL", [ dead_circumflex, exclam, dead_caron, exclamdown ] }; // ^ ! ˇ ¡
   key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v, V ] }; // v V
   key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ d, D, eth, ETH ] }; // d D ð Ð
   key <AD09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l, L, UFDD0 ] }; // l L ﷐
   key <AD10> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ j, J, U0133, U0132 ] }; // j J ij IJ
   key <AD11> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ z, Z, schwa, SCHWA ] }; // z Z ə Ə
   key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ w, W, dead_breve ] }; // w W ˘
   
   key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ a, A, ae, AE ] }; // a A æ Æ
   key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ u, U, ugrave, Ugrave ] }; // u U ù Ù
   key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i, I, dead_diaeresis, dead_abovedot ] }; // i I ¨ ˙
   key <AC04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e, E, EuroSign, UFDD1 ] }; // e E € ﷑
   key <AC05> {
       type[group1] = "FOUR_LEVEL", [ comma, question, rightsinglequotemark, questiondown ],
       type[group2] = "FOUR_LEVEL", [ comma, question, apostrophe, questiondown ]
   }; // , ? ’ ¿
   key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c, C, copyright ] }; // c C ©
   key <AC07> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ t, T, thorn, THORN ] }; // t T þ Þ
   key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s, S, ssharp ] }; // s S ß
   key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r, R, registered ] }; // r R ®
   key <AC10> { type[group1] = "FOUR_LEVEL_ALPHABETIC", [ n, N, ntilde, Ntilde ] }; // n N ñ Ñ
   key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m, M, dead_macron, masculine ] }; // m M ¯ º
   key <BKSL> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ccedilla, Ccedilla, dead_cedilla ] }; // ç Ç ¸
   
   key <LSGT> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex, Ecircumflex, slash ] }; // ê Ê /
   key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x, X, backslash ] }; // x X \
   key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y, Y, braceleft ] }; // y Y {
   key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave, Agrave, braceright ] }; // à À }
   key <AB04> { type[group1] = "FOUR_LEVEL", [ period, colon, ellipsis, periodcentered ] }; // . : … ·
   key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k, K, asciitilde, dead_tilde ] }; // k K ~ ~
   key <AB06> {
       type[group1] = "THREE_LEVEL", [ apostrophe, semicolon, leftsinglequotemark ],
       type[group2] = "THREE_LEVEL", [ rightsinglequotemark, semicolon, leftsinglequotemark ]
   }; // ' ; ‘
   key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q, Q, dead_abovering ] }; // q Q ˚
   key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g, G, UFDD2 ] }; // g G ﷒
   key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h, H, dagger, doubledagger ] }; // h H † ‡
   key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f, F, dead_ogonek, ordfeminine ] }; // f F ˛ ª
   key <SPCE> { type[group1] = "FOUR_LEVEL", [ space, nobreakspace, underscore, U202F ] }; //     _  

   // Cf section ci-dessous pour les explications: Shift sur CAPS, AltGr sur LFSH, et Caps_Lock en AltGr+Caps
   key <CAPS> {
       [ Shift_L ],
       actions = [ SetMods(modifiers=Shift) ]
   };
   key <LFSH> {
       type = "ALTGR_TWO",
       [ ISO_Level3_Shift, Caps_Lock ],
       actions = [ SetMods(modifiers=LevelThree), LockMods(modifiers=Lock) ]
   };

   key <RWIN>	{ [ Multi_key, Multi_key, Multi_key, Multi_key ] };
   key <LWIN> { [  ISO_Next_Group, ISO_Prev_Group, ISO_Next_Group, ISO_Prev_Group ] };
   
   include "level3(ralt_switch)"
};
   
xkb_geometry { include "pc(pc105)" };
   
};


Test en cours: AltGr sur CAPS et Caps_Lock en AltGr

Pour décrire cette idée plus clairement, il s’agit de mettre un AltGr à gauche, en l’occurence ici sur la touche CAPS. Et de garder quand même la possibilité d’un Caps_Lock au besoin (par exemple pour taper des séries de chiffres avec la disposition actuelle). Ce Caps_Lock est pour l’instant mis en AltGr(droit)+CAPS. Caps_Lock est donc gardé sur la même touche, car je n’ai pas trouvé pour l’instant de moyen de à la fois le déplacer, le mettre en AltGr, et que ça fonctionne sur tous les claviers. Cf également la note ci-dessus.

Le fichier xkb ci-dessus contient le code nécessaire pour ce changement. Pour tester sur une autre disposition, il faut utiliser pour « xkb_types » ce qui suit :

xkb_types {
    include "complete" 
    type "ALTGR_TWO" {
        modifiers = LevelThree;
        map[None] = Level1;
        map[LevelThree] = Level2;
        level_name[Level1] = "Base";
        level_name[Level2] = "AltGr";
    };
};

ainsi qu’ajouter les lignes suivantes à la fin de la section « xkb_symbols » :

    key <CAPS> {
        [ Shift_L ],
        actions = [ SetMods(modifiers=Shift) ]
    };
    key <LFSH> {
        type = "ALTGR_TWO",
        [ ISO_Level3_Shift, Caps_Lock ],
        actions = [ SetMods(modifiers=LevelThree), LockMods(modifiers=Lock) ]
    };


Note: Si vous souhaitez garder Shift gauche sur LFSH il suffit de changer seulement CAPS :

    key <CAPS> { 
        type = "ALTGR_TWO",
        [ ISO_Level3_Shift, Caps_Lock ],
        actions = [ SetMods(modifiers=LevelThree), LockMods(modifiers=Lock) ]
    };


Reste plus qu’à tester sur votre clavier…

Merci de rajouter ici où dans la page de discussion des bugs éventuels si vous en voyez.


Archives

Vous pouvez consulter la page archivée sur Utilisateur:Nbrodu/archive bépo tech. Elle contient une image d’une version précédente de ma disposition qui améliorait la place du W en particulier pour l’anglais, et il faudrait que je réfléchisse à une autre solution pour rester proche de la 0.6.6.


À propos

Voir ma page perso.