« Utilisateur:Lawrent » : différence entre les versions
Ligne 35 : | Ligne 35 : | ||
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║ | ╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║ | ||
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║ | ║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║ | ||
║ ESC ║CTRL│ALT | ║ ESC ║CTRL│ALT │META│MAJ │ │ ← │ ↓ │ ↑ │ → │ │ │ ║ ║ | ||
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣ | ╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣ | ||
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║ | ║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║ |
Version du 5 juin 2013 à 09:03
Ma disposition est récente et subit encore quelques modifications. Si vous souhaitez une version stable, revenez d'ici quelques temps :-) .
Disposition complète, encore en cours de changements
idée récente: placer une touche morte (disons [M]) telle que [M]a = æ, [M]u = ù, [M]o = œ (+ autres accents?) et ainsi gagner 3 touches faciles d'accès en altgr. On peut imaginer des accents plus exotiques sur [MAJ+M]<touche> et [ALTGR+M]<touche> (une idée d'implémentation se trouve ici: http://shtrom.ssji.net/skb/xorg-ligatures.html ).
Comme candidat, il y a la touche ^ (on déplace alors ! en altgr+', sur la même touche que ?). On peut placer un accent mort "-e" sur maj+^.
Etape suivante: dresser une liste des priorités pour les lettres accentuées et pour les symboles ascii de programmation et remapper mes touches en altgr suite à la disponibilité de a+altgr et u+altgr
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────╔════════════════╗
│ │ │ K │ │ │ │ │ │ │ │ │ ³ │ ║ ║
│ CAPSLK │ ALTGR │ k │ ALT │ CTRL │ │ │ │ CTRL │ META │ │ ² │ INS ║ DEL ║
╔══════════════╗──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──╚═════╦══════════╣
║ ║ J « │ É » │ P ° │ O Œ │ È │ ! , │ V 5 │ D 6 │ L 7 │ B 8 │ Z 9 │ ║ | ║
║ ←—— ║ j < │ é > │ p * │ o œ │ è ` │ ^ ¨ │ v ^ │ d _ │ l { │ b } │ z # │ TAB ║ ←—' ║
╠══════════════╩═╗──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────╚═╗ ║
║ ║ A Æ │ U Ù │ I │ E │ ; │ C . │ T 0 │ S 1 │ R 2 │ N 3 │ M 4 │ ║ ║
║ ALTGR ║ a æ │ u ù │ i + │ e = │ , ’ │ c / │ t \ │ s $ │ r ( │ n ) │ m % │ ALTGR ║ ║
╠═══════════╦════╝──════──┴──════──┴──════──┴──════──┴───┬────┴───┬────┴──════──┴──════──┴──════──┴──════──┴───╔═════════════╩════════╣
║ W ║ Ê │ À │ Y │ X │ : │ — ‒ │ ? = │ Q + │ G - │ H * │ F / ║ Ç ║
║ w ║ ê € │ à @ │ y | │ x & │ . … │ - – │ ' ! │ q " │ g - │ h [ │ f ] ║ ç ║
╠═══════════╬════════╦════════╦════════╦════════════════════════════════════════════╦════════╦════════╦════════╬══════════════════════╝
║ ║ ║ ║ ║ [esp insecable] [space] ║ ║ ║ ║
║ META ║ ║ OVERLAY║ MAJ ║ [space] ~ ║ MAJ ║ OVERLAY║ ALT ║
╚═══════════╩════════╩════════╩════════╩════════════════════════════════════════════╩════════╩════════╩════════╝
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔═══════╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │PgPr│PgDw│PgUp│PgNx│ │ │ ║ ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ESC ║CTRL│ALT │META│MAJ │ │ ← │ ↓ │ ↑ │ → │ │ │ ║ ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │End │Home│ │ ║ ║
╠══════╬════╦════╦════╦════════════════════════╦════╦════╦════╬═══════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║OVRL║ ║ ║ ║OVRL║ ║
╚══════╩════╩════╩════╩════════════════════════╩════╩════╩════╝
Remarque: à partir de 3 touches simultanées, certaines combinaisons de touche n'envoient pas le bon signal du clavier vers le pc (par exemple sur mon clavier la combinaison maj+altgr (gauche) + n pour produire un "3") à cause d'un phénomène appelé ghosting (http://www.microsoft.com/appliedsciences/antighostingexplained.mspx). C'est pourquoi j'ai duppliqué altgr sur la rangée des chiffres. Il faut également en tenir compte sur le placement des touches en overlay. (Pour tester si une séquence de touches est valide, on peut utiliser xev.)
Explication de la place de mes modificateurs:
- ctrl, alt et maj sont donc duppliqués sur la ligne de repos en overlay pour faciliter les combinaisons "ctrl-alt-flèche" et "ctrl-alt-maj-flèche". Le "trou" entre alt et maj se trouve là car c'est le seul placement possible sur mon clavier pour éviter le ghosting
- alt est duppliqué sur la ligne des chiffres pour un accès rapide aux raccourcis alt-f2 et alt-f4
- meta est duppliqué sur la ligne des chiffres pour la combinaison "meta-D" qui réduit toutes les fenêtres et donne accès au bureau
Caractéristiques principales
cette section n'est pas à jour!
A l'exception du ç et du w inversées pour l'anglais, j'ai gardé la disposition des lettres initiale du bépo. Pour le reste, j'ai presque tout modifié avec en tête les contraintes suivantes:
- limiter au strict minimum l'usage de la ligne des chiffres, pas assez accessible à mon gout
- rendre les symboles de programmation très accessibles avec la priorité aux symboles courants en LaTeX (remarque: en LaTeX, ~ est une espace insécable, c'est pourquoi il est placé sur la barre d'espace)
- placer un pavé numérique sur le clavier
Dans les caractéristiques principales, on peut noter
- un altgr symétrique
- maj gauche inversé avec caps lock, la touche caps lock étant plus accessible. En particulier, la combinaison altgr+maj à gauche devient très accessible
- les +-*/= sont duppliqués pour pouvoir utiliser le pavé numérique de manière indépendante du reste du clavier
Je destine ma configuration à un usage personnel (et donc personnalisé), c'est pourquoi beaucoup de caractères sont absents (ce qui me laisse de la place disponible si je veux ajouter des caractères plus tard).
Parmi mes gadgets, j'ai ajouté
- des flèches directionnelles "un peu comme vim" sur la ligne supérieure (je les ai mises là où j'ai trouvé de la place)
- la touche ESC sur le ê, rendue volontairement très accessible pour son usage dans vim
- les touches INSERT et DELETE sont plus accessible que sur un clavier standard parce que je les utilise souvent
Utilisation recommandée
- saisie des caractères proche de la variante A (idée: utiliser les index comme pivots pour les lignes supérieures et "tirer les mains vers l'extérieur" pour la ligne inférieure)
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ 1 │ 1 │ 1 │ │ 1 │ │ 1 │ 1 │ │ 1 │ │ │ ║ ║
╔═══════╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║ ║ 1 │ │ 1 │ │ │ 1 │ 1 │ │ 1 │ │ │ ║ ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║
║ ║ 1 │ │ 1 │ │ │ 1 │ 1 │ │ 1 │ │ │ ║ ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣
║ ║ 1 │ │ 1 │ │ │ │ 1 │ 1 │ │ 1 │ ║ ║
╠══════╬════╦════╦════╦════════════════════════╦════╦════╦════╬═══════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
╚══════╩════╩════╩════╩════════════════════════╩════╩════╩════╝
- usage du caps lock: en fait, cette touche est très utile! Par exemple, pour écrire LASER, je tape: <caps lock>laser<caps lock>. Pas besoin de faire danser les auriculaires sur maj gauche et maj droit.
Apprentissage
Première semaine
J'ai commencé par installer klavaro mais j'ai très vite décroché, ne voulant pas faire d'exercices de type "nu su er na isu ra etti". J'ai copié-colle les exercices dans un fichier, et je les réécris en activant la touche insert.
Mon clavier comporte encore quelques bugs et je ne peux pas me permettre de quitter définitivement azerty. Je switche entre azrety et bépo pour faire mes exercices et pour écrire quelques petits textes. J'écris très lentement et je me focalise davantage sur le clavier que sur mon texte.
Deuxième semaine
J'ai corrigé mes bugs et j'ai mis bépo comme disposition par défaut. Je connais l'ensemble du clavier par coeur sans devoir faire d'efforts particuliers; c'est très agréable d'écrire avec. Ma frustration quant à ma lenteur d'écriture me fait basculer vers azerty quand j'ai des longs textes à écrire. Ma disposition subit encore quelques modifications, principalement sur la place des modificateurs et quelques caractères de programmation mais dans l'ensemble l'alphabet ne bouge plus.
Je m'exerce de temps en temps sur le recueil d'Amic.
Je recommence les exercices avec une méthode un peu différente: je recommence chaque phrase plusieurs fois jusqu'à le réussir sans faute plusieurs fois d'affilée. J'essaye une méthode de saisie un peu particurière: je tape mes exercices en aveugle. Je me rends compte que je fais moins d'erreurs de cette manière et j'épelle moins les mots lettre par lettre dans ma tête.
Troisième semaine
Cette semaine j'ai relativisé l'importance du bépo dans ma vie. C'est très clairement une disposition avantageuse, mais j'ai des projets plus urgents et/ou plus importants actuellement que pour dépenser beaucoup de mon temps à réapprendre à taper. Je laisse ma disposition au frigo pour l'instant, je reviendrai probablement dessus pendant des vacances.
Installation (Linux)
- Copier le code suivant à la fin du fichier
/usr/share/X11/xkb/symbols/fr
(les touches non-affectées sont toutes affectées à §). - Pour activer la disposition, lancer la commande
setxkbmap fr bepo2
- Pour activer la disposition par défaut, modifier le fichier
xorg.conf
(locate xorg.conf
pour le trouver) ou/etc/default/keyboard
sur les dernières versions d'Ubuntu/Linux Mint avec les lignes
XKBLAYOUT="fr"
XKBVARIANT="bepo2"
- Après chaque modification ultérieure, lancer commande
sudo sudo rm /var/lib/xkb/*
(copier préalablement le contenu du dossier/var/lib/xkb/
par sécurité...)
cette section n'est pas à jour !
// a ajouter dans xkb/symbols/french
partial alphanumeric_keys
xkb_symbols "bepo2" {
include "keypad(oss)" // touches standard
name[Group1]= "French (Bepo2, ergonomic, derived from the Bepo by Laurent Van Eesbeeck)";
key <TLDE> { type[group1] = "ONE_LEVEL" , [ Caps_Lock ]};
key <AE01> { type[group1] = "ONE_LEVEL" , [ ISO_Level3_Shift ]};
key <AE02> { type[group1] = "FOUR_LEVEL" , [ section , section , section , section ]};
key <AE03> { type[group1] = "FOUR_LEVEL" , [ emdash , endash , figdash , section ]};
key <AE04> { type[group1] = "FOUR_LEVEL" , [ section , section , section , section ]};
key <AE05> { type[group1] = "FOUR_LEVEL" , [ section , section , section , section ]};
key <AE06> { type[group1] = "FOUR_LEVEL" , [ section , section , section , section ]};
key <AE07> { type[group1] = "FOUR_LEVEL" , [ section , section , A , section ]};
key <AE08> { type[group1] = "FOUR_LEVEL" , [ w , W , B , section ]};
key <AE09> { type[group1] = "FOUR_LEVEL" , [ ccedilla , Ccedilla , C , section ]};
key <AE10> { type[group1] = "FOUR_LEVEL" , [ asterisk , degree , D , section ]};
key <AE11> { type[group1] = "FOUR_LEVEL" , [ twosuperior , threesuperior , E , section ]};
key <AE12> { type[group1] = "FOUR_LEVEL" , [ section , section , F , section ]};
// key <BKSP> { type[group1] = "FOUR_LEVEL" , [ BackSpace , BackSpace , Delete , Delete ]};
key <TAB> { type[group1] = "FOUR_LEVEL" , [ BackSpace , Delete , Insert , section ]};
key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ j , J , parenleft , guillemotleft]};
key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ eacute , Eacute , parenright , guillemotright]};
key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ p , P , asterisk , section ]};
key <AD04> { type[group1] = "FOUR_LEVEL_ALPHABETIC" , [ o , O , oe , OE ]};
key <AD05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ egrave , Egrave , section , section ]};
key <AD06> { type[group1] = "FOUR_LEVEL" , [ dead_circumflex, exclam , dead_diaeresis , comma ]};
key <AD07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ v , V , asciicircum , 5 ]};
key <AD08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ d , D , underscore , 6 ]};
key <AD09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ l , L , less , 7 ]};
key <AD10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ b , B , greater , 8 ]};
key <AD11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ z , Z , numbersign , 9 ]};
key <AD12> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ Tab , Iso_Left_Tab , section , 3 ]};
key <RTRN> { type[group1] = "ONE_LEVEL" , [ Return ]};
key <CAPS> { type[group1] = "ONE_LEVEL" , [ ISO_Level3_Shift ], overlay1=<ESC> };
key <AC01> { type[group1] = "FOUR_LEVEL_ALPHABETIC" , [ a , A , ae , AE ], overlay1=<LFSH>};
key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC" , [ u , U , ugrave , Ugrave ], overlay1=<RCTL>};
key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ i , I , plus , section ], overlay1=<LALT>};
key <AC04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ e , E , minus , section ], overlay1=<RCTL>};
key <AC05> { type[group1] = "FOUR_LEVEL" , [ comma , semicolon , rightsinglequotemark, section ]};
key <AC06> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ c , C , slash , period ], overlay1=<LEFT>};
key <AC07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ t , T , backslash , 0 ], overlay1=<DOWN>};
key <AC08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ s , S , dollar , 1 ], overlay1=<UP>};
key <AC09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ r , R , braceleft , 2 ], overlay1=<RGHT>};
key <AC10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ n , N , braceright , 3 ], overlay1=<LCTL>};
key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ m , M , percent , 4 ]};
key <BKSL> { type[group1] = "ONE_LEVEL" , [ ISO_Level3_Shift ]};
key <LFSH> { type[group1] = "ONE_LEVEL" , [ Control_L ]};
key <LSGT> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ecircumflex , Ecircumflex , EuroSign , section ]};
key <AB01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ agrave , Agrave , at , section ]};
key <AB02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ y , Y , bar , section ]};
key <AB03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ x , X , ampersand , section ]};
key <AB04> { type[group1] = "FOUR_LEVEL" , [ period , colon , ellipsis , section ]};
key <AB05> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ k , K , section , section ]};
key <AB06> { type[group1] = "FOUR_LEVEL" , [ apostrophe , question , quotedbl , equal ]};
key <AB07> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ q , Q , leftsinglequotemark , plus ]};
key <AB08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ g , G , minus , minus ]};
key <AB09> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ h , H , bracketleft , asterisk ]};
key <AB10> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ f , F , bracketright , slash ]};
key <RTSH> { type[group1] = "ONE_LEVEL" , [ Control_R ]};
key <LCTL> { type[group1] = "ONE_LEVEL" , [ Super_L ]};
key <LWIN> { type[group1] = "ONE_LEVEL" , [ VoidSymbol ] , actions = [ SetControls(controls=Overlay1) ]};
key <LALT> { type[group1] = "ONE_LEVEL" , [ Shift_L ]};
key <SPCE> { type[group1] = "FOUR_LEVEL" , [ space , nobreakspace , asciitilde , space ]};
key <RALT> { type[group1] = "ONE_LEVEL" , [ Shift_R ]};
key <MENU> { type[group1] = "ONE_LEVEL" , [ VoidSymbol ] , actions = [ SetControls(controls=Overlay1) ]};
key <RCTL> { type[group1] = "ONE_LEVEL" , [ Alt_R ]};
// fake key for overlay
// key <FK13> { type[group1] = "ONE_LEVEL", [ Caps_Lock ] };
modifier_map Shift { Shift_L, Shift_R }; // shift
modifier_map Lock { Caps_Lock }; // caps lock
modifier_map Control { Control_L, Control_R };
modifier_map Mod5 { ISO_Level3_Shift }; // altgr
};
Autour du clavier
A terme je prévois de passer à vim, mais je réserve ça pour lorsque je serai habitué à bépo. J'hésite encore sur le gestionnaire de fenêtres vers lequel migrer, wmii et scrotwm ont l'air intéressants.
Divers
Un lien vers les symboles ascii, utiles pour dessiner un clavier: http://www.toutimages.com/codes_caracteres.htm
╔ ╗ ╚ ╝ ╩ ╦ ╠ ╣ ═ ║ ╬
┌ ┐ └ ┘ ┴ ┬ ├ ┤ ─ │ ┼
Deux claviers vierges: un large et un étroit
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────╔════════════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔══════════════╗──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──╚═════╦══════════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════════════╩═╗──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────╚═╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════════╦════╝───┬────┴───┬────┴───┬────┴──════──┴───┬────┴───┬────┴──════──┴───┬────┴───┬────┴───┬────┴───╔═════════════╩════════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════════╬════════╦════════╦════════╦════════════════════════════════════════════╦════════╦════════╦════════╬══════════════════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║
╚═══════════╩════════╩════════╩════════╩════════════════════════════════════════════╩════════╩════════╩════════╝
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔═══════╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════╬════╦════╦════╦════════════════════════╦════╦════╦════╬═══════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║
╚══════╩════╩════╩════╩════════════════════════╩════╩════╩════╝