Utilisateur:Lawrent
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
level 1-2 : lettre et majuscule
level 3-4 (altgr, altgr+maj) : autres lettres et/ou symboles
level 5 (level5, seulement à droite): pavé numérique
level 5 + maj : chiffres en exposant
level 5 + altgr: chiffres en indice (plus difficiles à saisir)
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────╔════════════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │DEAD_GRK│ CAPSLK │ ALT │ CTRL │ │ │ │ CTRL │ META │ INS │ │ ║ SHT DWN ║
╔══════════════╗──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──╚═════╦══════════╣
║ DEL ║ H │ É │ P │ O Œ │ È │ ¨ ` ~ │ V │ D │ L ≤ │ B ≥ │ Z │ ║ | ║
║ ←—— ║ h ` │ é & │ p | │ o œ │ è │ ^ ´ , │ v ^ 5 │ d _ 6 │ l < 7 │ b > 8 │ z # 9 │ TAB ║ ←—' ║
╠══════════════╩═╗──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────╚═╗ ║
║ ║ A Æ │ U Ù │ I │ E — │ ; – │ C Ç │ T │ S │ R │ N │ M │ ║ ║
║ ALTGR ║ a æ │ u ù │ i ( │ e ) │ , - │ c ç . │ t \ 0 │ s $ 1 │ r { 2 │ n } 3 │ m % 4 │ ALTGR ║ ║
╠═══════════╦════╝──════──┴──════──┴──════──┴──════──┴───┬────┴───┬────┴──════──┴──════──┴──════──┴──════──┴───╔═════════════╩════════╣
║ ║ Ê │ À │ Y │ X │ : │ K │ ? ≠ ≈ │ Q │ G │ J │ F ║ W ║
║ Level5 ║ ê € │ à @ │ y « │ x » │ . … │ k ° │ ' ! = │ q " + │ g / - │ j [ * │ f ] / ║ w ║
╠═══════════╬════════╦════════╦════════╦════════════════════════════════════════════╦════════╦════════╦════════╬══════════════════════╝
║ ║ ║ ║ ║ [esp insecable] [space] ║ ║ ║ ║
║ META ║ ║ OVERLAY║ MAJ ║ [space] ~ ║ MAJ ║ ESC ║ ALT ║
╚═══════════╩════════╩════════╩════════╩════════════════════════════════════════════╩════════╩════════╩════════╝
carte overlay
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔═══════╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │PgDw│PgUp│ │ │ │ ║ ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║CTRL│ALT │META│MAJ │ │ ← │ ↓ │ ↑ │ → │ │ │ ║ ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │End │Home│ │ ║ ║
╠══════╬════╦════╦════╦════════════════════════╦════╦════╦════╬═══════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║OVRL║ ║ ║ ║ ║ ║
╚══════╩════╩════╩════╩════════════════════════╩════╩════╩════╝
Remarque: à partir de 3 touches simultanées, certaines combinaisons de touche n'envoient pas de signal du clavier vers le pc (par exemple sur mon clavier la combinaison maj+altgr (gauche) + n) à cause d'un phénomène appelé ghosting (http://www.microsoft.com/appliedsciences/antighostingexplained.mspx). Lorsqu'on déplace les modificateurs, il arrive que certaines combinaisons de touche s'avèrent impossibles (il faut donc trouver une alternative propre au clavier). Sur Linux, xev affiche dans la console les events envoyés par le clavier et permet de détecter une combinaison de touche interdite.
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
- meta est duppliqué sur la ligne de repos car "meta+fleche" étend mes fenêtres sur un demi-écran ou sur un plein écran
Pour l'utilisation de l'overlay, attention: toujours relacher la touche pressée avant la touche overlay. Sinon elle reste enfoncée et ça fait des trucs bizarres.
Caractéristiques principales
- rendre AltGr symétrique pour pouvoir accéder facilement aux 4 levels de toutes les touches et ainsi rendre les symboles courants en programmation plus accessibles.
- ne pas utiliser la ligne des chiffres que je juge trop inaccessible.
- déplacer les modificateurs (l'idée des majuscules sous les pouces et des ctrl sur la ligne des chiffres vient de Robin). La combinaison maj+altgr s'en voit facilitée des deux côtés.
- placer un pavé numérique sur deux lignes sous la main droite. C'est un peu contre-intuitif d'avoir le chiffre 2 sur le 3ème doigt et le chiffre 3 sous le 4e mais c'est très agréable.
- un accès très facile aux flèches directionnelles. Vraiment, ça change la vie.
- les ^ et ~ sont ajoutés comme touches non-mortes pour la programmation
- les touches spéciales placées sur l'overlay sont fréquemment utilisées sur Linux Mint pour passer d'un écran virtuel à un autre, etc. En plus, MAJ+flèche permet de sélectionnel du texte
J'ai également modifié l'emplacement initial de certaines touches:
- swap j<->b : recommandé par Robin et basé sur la fréquence des digrammes ja, aj, bn, nb
- swap h<->j : j'aimais vraiment pas la place du h à cause du digramme ch. Cette alternative a l'air d'être pas trop mal…
- déplacement du ! : c'est une exception de mettre un signe de ponctuation en altgr, mais le '^' est trop inaccessible à mon goût, et puis ça me permet de faire une touche «accents morts»
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.
Quatrième semaine
Après un peu moins de 2 mois d'absence, j'ai repris bépo après avoir re-modifié ma disposition. Cette fois-ci je pense que je vais la laisser comme elle est. J'ai recommencé les exercices et j'ai fini les séries sur les deux premières lignes (je refais plusieurs fois la même série). J'ai très clairement la carte du clavier en tête, je sais où se trouve chaque lettre et je commence à avoir une frappe fluide. Mais... y'a pas photo, je fais beaucoup d'erreurs je suis encore loin de mes résultats en azerty (jamais mesuré ma vitesse de frappe, je le ferai quand je me sentirai plus à l'aise). Petite anecdote amusante: quand je repasse sur azerty (par exemple pour écrire des textes longs ou sur le pc de mes parents) j'ai des réflexes bépo qui viennent perturber ma frappe.
Cinquième semaine
J'ai enfin fini la première série d'exercices, je vais pouvoir commencer la méthode d'apprentissage des trigrammes. Ma frappe est plus fluide (même si elle est encore lente), je commence à pouvoir réfléchir au texte que j'écris au lieu de taper mes phrases « mot par mot ». Pour la méthode des trigrammes, il y a le sujet initial provenant du forum et le dactylotest de Tazzon: http://forum.bepo.fr/viewtopic.php?id=417 et http://tazzon.free.fr/dactylotest/tridactyl/
Sixième semaine
Ça y est, je suis enfin passé en full bépo, je ne reviens jamais sur l'azerty. J'ai parfois des vieux réflexes de l'azerty qui perturbent ma frappe mais c'est très anecdotique. Je n'ai pas tenu la discipline de «une leçon des trigrammes par jour», je m'y pencherai probablement quand je serai plus habitué au bépo.
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é...). Pour tester la validité des modifications, lancerxkbcomp /usr/share/X11/xkb/symbols/fr
(s'il n'y a pas de sortie, c'est que c'est bon).
!!!!!!!!!!! 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] = "ONE_LEVEL", [ section ]};
key <AE03> { type[group1] = "ONE_LEVEL", [ Alt_L ]};
key <AE04> { type[group1] = "ONE_LEVEL", [ Control_L ]};
key <AE05> { type[group1] = "ONE_LEVEL", [ section ]};
key <AE06> { type[group1] = "ONE_LEVEL", [ section ]};
key <AE07> { type[group1] = "ONE_LEVEL", [ section ]};
key <AE08> { type[group1] = "ONE_LEVEL", [ Control_R ]};
key <AE09> { type[group1] = "ONE_LEVEL", [ Super_R ]};
key <AE10> { type[group1] = "ONE_LEVEL", [ section ]};
key <AE11> { type[group1] = "ONE_LEVEL", [ section ]};
key <AE12> { type[group1] = "ONE_LEVEL", [ Insert ]};
key <BKSP> { type[group1] = "ONE_LEVEL", [ Delete ]};
key <TAB> { type[group1] = "ONE_LEVEL" , [ BackSpace ]};
key <AD01> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC" , [ j , J , grave , section ]};
key <AD02> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC" , [ eacute , Eacute , ampersand , section ]};
key <AD03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC" , [ p , P , bar , 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] = "EIGHT_LEVEL" , [ dead_circumflex, dead_acute , dead_diaeresis , dead_grave , comma ], overlay1=<FK13>};
key <AD07> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ v , V , asciicircum , section , 5, 5 ], overlay1=<PGDN>};
key <AD08> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ d , D , underscore , section , 6, 6 ], overlay1=<PGUP>};
key <AD09> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ l , L , less , lessthanequal , 7, 7 ], overlay1=<FK14>};
key <AD10> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ b , B , greater , greaterthanequal, 8, 8 ]};
key <AD11> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ z , Z , numbersign , section , 9, 9 ]};
key <AD12> { type[group1] = "TWO_LEVEL" , [ Tab , Iso_Left_Tab ]};
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=<AE04>};
key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC" , [ u , U , ugrave , Ugrave ], overlay1=<RCTL>};
key <AC03> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC" , [ i , I , parenleft , leftdoublequotemark ], overlay1=<LCTL>};
key <AC04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC" , [ e , E , parenright , rightdoublequotemark ], overlay1=<LALT>};
key <AC05> { type[group1] = "FOUR_LEVEL" , [ comma , semicolon , minus , emdash ]};
key <AC06> { type[group1] = "EIGHT_LEVEL_ALPHABETIC" , [ c , C , ccedilla , Ccedilla , period , period ], overlay1=<LEFT>};
key <AC07> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ t , T , backslash , section , 0 , 0 ], overlay1=<DOWN>};
key <AC08> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ s , S , dollar , section , 1 , 1 ], overlay1=<UP>};
key <AC09> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ r , R , braceleft , section , 2 , 2 ], overlay1=<RGHT>};
key <AC10> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ n , N , braceright , section , 3 , 3 ]};
key <AC11> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ m , M , percent , section , 4 , 4 ]};
key <BKSL> { type[group1] = "ONE_LEVEL" , [ ISO_Level3_Shift ]};
key <LFSH> { type[group1] = "ONE_LEVEL" , [ ISO_Level5_Shift ]};
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] = "ALPHABETIC" , [ y , Y , bar , section ]};
key <AB03> { type[group1] = "ALPHABETIC" , [ x , X , ampersand , section ]};
key <AB04> { type[group1] = "FOUR_LEVEL" , [ period , colon , ellipsis , section ]};
key <AB05> { type[group1] = "ALPHABETIC" , [ k , K ]};
key <AB06> { type[group1] = "EIGHT_LEVEL" , [ apostrophe , question , exclam , notequal , equal , approxeq ]};
key <AB07> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ q , Q , quotedbl , section , plus , plus ], overlay1=<HOME>};
key <AB08> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ g , G , degree , section , minus , minus ], overlay1=<END>};
key <AB09> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ h , H , bracketleft , section , asterisk , asterisk ]};
key <AB10> { type[group1] = "EIGHT_LEVEL_SEMIALPHABETIC", [ f , F , bracketright , section , slash , slash ]};
key <RTSH> { type[group1] = "ALPHABETIC" , [ w , W ]};
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", [ XF86Back ] };
key <FK14> { type[group1] = "ONE_LEVEL", [ XF86Forward ] };
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
modifier_map Mod3 { ISO_Level5_Shift }; // Level5
};
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.
Liens utiles et tout ce qui n'a pas sa place ailleurs
http://www.lexique.org/listes/liste_bigrammes.txt des statistiques sur les bigrammes de la langue française, utile si on veut modifier le bépo original
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
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────╔════════════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔══════════════╗──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──┴─────┬──╚═════╦══════════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════════════╩═╗──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────╚═╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════════╦════╝───┬────┴───┬────┴───┬────┴──════──┴───┬────┴───┬────┴──════──┴───┬────┴───┬────┴───┬────┴───╔═════════════╩════════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════════╬════════╦════════╦════════╦════════════════════════════════════════════╦════════╦════════╦════════╬══════════════════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║
╚═══════════╩════════╩════════╩════════╩════════════════════════════════════════════╩════════╩════════╩════════╝
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔════════╗
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
│ │ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╔═══════╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦═════╣
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔══════╩════╣
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
║ ║ │ │ │ │ │ │ │ │ │ │ ║ ║
╠══════╬════╦════╦════╦════════════════════════╦════╦════╦════╬═══════════╝
║ ║ ║ ║ ║ ║ ║ ║ ║
║ ║ ║ ║ ║ ║ ║ ║ ║
╚══════╩════╩════╩════╩════════════════════════╩════╩════╩════╝