Utilisateur:A2/neo2bepo

De Disposition de clavier bépo

neo2bepo est en travaux, de nombreux changements sont possibles sur les pilotes Windows depuis les sources en C.

neo2bepo est un projet pour améliorer l'accessibilité des chiffres, des caractères de programmation et de typographie de la disposition de clavier bépo sur un clavier standard en s'inspirant de la disposition Neo2 allemande.

L'idée du Neo2 est de sacrifier deux touches en accès direct, en bépo clavier bépoê et clavier bépoç ainsi que capslock pour obtenir six modificateurs donnant accès de manière quasi symétrique pour les deux mains à deux couches complètes[1], nommées mod3 et mod4 sur le neo2, en plus de la couche majuscule. Les deux couches sont bien plus accessibles que la couche AltGr (définie Ctrl+Alt) du bépo ou que la touche morte 8 à tout faire du dvorak-fr.

Dans les sources en C, l'astuce est que le .H contient une table des scancodes des touches et des virtualkeys. On sait que l'on peut donc déplacer certains modificateurs. De plus l'utilisation de la touche kana comme touche morte permet de créer une couche vérrouillable (kanalock). Pour tester le pilote je copie la dll générée avec le WDK dans les répertoires system32/sysWOW64 en écrasant l'ancienne puis je ferme et rouvre ma session. Il n'y pas besoin de rebooter ou d’installer/désinstaller des tonnes de dispositions.

Je sacrifie deux touches de plus au milieu du clavier, clavier bépo^ et clavier bépok du bépo, comme je faisais avec pkl pour améliorer la symétrie et donc l'accessibilité aux modificateurs des couches auxiliaires : pour ça je permute clavier bépoAlt, clavier bépoSuper, les clavier bépoMajs, clavier bépoCapslock, clavier bépoRetour arrière, clavier bépoEntrée, clavier bépoç et clavier bépo^. J'ai Entrée et Retour au milieu du clavier sous les index comme sur un clavier TypeMatrix. Les Majuscules sont remontées d'un cran sur clavier bépoCapslock et clavier bépoEntrée. Alt sert d'AltGr gauche. Je décalle Alt à la place de Win gauche toujours sous le pouce. Reste capslock à placer sur Retour arrière en attendant une autre idée.

Utilisable comme bépo sur un clavier 104 touches pour le moment. J'ai mis la touche compose ♫ (du Neo2) en AltGr+ê[2].

État de base et majuscules

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│    │    │    │    │    │    │    │    │    │    │    │    │    ║Capslock ║
│    │    │    │    │    │    │    │    │    │    │    │    │    ║         ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║       ║ B  │ É  │ P  │ O  │ È  │    │ V  │ D  │ L  │ J  │ Z  │ W  ║      ║ 
║  ->|  ║ b  │ é  │ p  │ o  │ è  │ <--│ v  │ d  │ l  │ j  │ z  │ w  ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
║        ║ A  │ U  │ I  │ E  │    │ C  │ T  │ S  │ R  │ N  │ M  │ K  ║     ║
║  Maj   ║ a  │ u  │ i  │ e  │ ,  │ c  │ t  │ s  │ r  │ n  │ m  │ k  ║ Maj ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║      ║ Ê  │ À  │ Y  │ X  │    │    │    │ Q  │ G  │ H  │ F  ║            ║
║  New ║ ê  │ à  │ y  │ x  │ .  │ <-'│ ’  │ Q  │ g  │ h  │ f  ║    New     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║       ║      ║     ║ Espace insécable          ║     ║      ║     ║      ║
║ Ctrl  ║ AltAltGr║ Espace                    ║AltGr║SuperMenu ║ Ctrl ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝

du bépo from scratch : les nouveaux modificateurs


  • Je garde bépo pour l’alphabétique et place les chiffres en accès direct. Pas question de réapprendre un réarrangement des touches, ça attendra une éventuelle v2 dans quelques années.
  • Je supprime l’espace insécable de maj+espace : elle me dérange car je l’insère trop souvent par mégarde.
  • Je place l’apostrophe typographique en accès direct à la place de '.
  • De là, le reste va bouger en fonction de mes besoins personnels et se construire petit à petit. De toute manière je peux revenir à bépo. Le but est en premier temps d’étudier l’accessibilité des nouvelles couches.
Remarque :

On peut revoir la position des touches « sensibles » en tenant compte de la fréquence des lettres sur le corpus de o< utilisée pour générer la dispo :

  • le tiret « - », servant de trait d'union en français, est quasi aussi fréquent que « à » et manque complètement alors que x y è z w ç et k moins fréquents sont en accès direct !
  • si on a ê le ^ mort est moins pertinent en accès direct, il serait surement mieux avec les autres touches mortes (vérifier fréq. des âûî tout de même)
  • tenir compte de l’argument que les touches de M, Z et surtout W sont en dehors de la « zône dactylograpique », voir les différentes variantes du bépo : bépow ?
  • Nemolivier suggère d'inverser NEW et SHIFT : j'essaye ça (ça augmente l'accessibilité des « » insécable mais le maj droit se retrouvre plus loin, autant il est énorme (entrée !) > pb. le linefeed (shift+entrée) est moins accessible qu'avant.

Rangée supérieur : 26 places

Ceux qui veulent une disposition optimisée pour coder peuvent utiliser cette ligne de 13 touches pour mettre l'alphabet dans l'ordre…

 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │ a  │ b  │ c  │ d  │ e  │ f  │ g  │ h  │ i  │ j  │ k  │ l  │ m  ║         ║
 │ n  │ o  │ p  │ q  │ r  │ s  │ t  │ u  │ v  │ w  │ x  │ y  │ z  ║         ║

Blague à part. Le neo2 choisit de mettre les chiffres en direct c'est discutable. Déjà l’ordre des chiffres peut être modifié fonction de la place du 0. Il faut tenir compte du fait que la touche du 6 est très peu accessible. Les caractères en majuscules sur cette rangée paraissent moins accessibles que ceux des nouvelles couches.

De plus le semblant de pavé numérique (sur lock) pour les chiffres est bien plus pratique et ergonomique à l'utilisation que la rangée supérieure, linéaire. Il vaudrait mieux placer des symboles en direct sur cette rangée. Les chiffres sont moins fréquents que certains symboles. Voici le bépo actuel :

 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │ # ¶│ 1 „│ 2 “│ 3 ”│ 4 ≤│ 5 ≥║ 6  │ 7 ¬│ 8 ¼│ 9 ½│ 0 ¾│ ° ′│ ` ″║         ║
 │ $ –│ " —│ « <│ » >│ ( [│ ) ]║ @ ^│ + ±│ - −│ / ÷│ * ×│ = ≠│ % ‰║         ║
  • je supprime les accès direct ascii « historique » pour le moment : ~`° sont disponibles avec les touches mortes
  • « et » comme : ; ? et ! sont liés à l’espace insécable en français : en maj. avec $ qui peut avoir besoin d’une insécable « 298 $ ».
  • «»()[]<>/\{} n'ont pas à être placées par paires comme sur bépo (qui a adopté cette configuration à cause de l'altgr asymétrique)
  • trois tirets sont nécessaires en français, - en direct donc sur le 0, le moins pire pour le moment étant droitier ;
  • reste deux places surement pour des touches mortes multi-fonctions comme fait neo (à tester).
  • pour info il reste à placer des caractères comme ()/çùœ*=@+%æ<>[]&… (dans l'ordre de fréquence même si c'est peu pertinent),
 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
 │    │    │ «  │ »  │    │    │    │ –  │ —  │    │    │    │    ║         ║
 │ 0  │ 1  │ 2( │ 3) │ 4  │ 5  │ 6  │ 7  │ 8  │ 9  │ -  │    │    ║         ║

Couche AltGr

À FAIRE J'essaye déjà de garder la couche AltGr pensée pour bépo et d'expoiler. Voilà la couche neo2 (voir la carte AltGr pour bépo) :

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│    │    │    │    │    │    ║    │    │    │    │    │    │    ║         ║
│ °  │ ¹  │ ²  │ ³  │ ›  │ ‹  ║ ¢  │ ¥  │ ‚  │ ‘  │     │ ≠  │ ‰  ║         ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║       ║    │    │    │    │    ║    │    │    │    │    │    │    ║      ║
║       ║ |  │ ´  │ &  │ œ`  ║ <--│ ˇð/ijə˘  ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
║        ║    │    │    │    │    ║    │    │    │    │    │    │    ║     ║
║        ║ æù¨  │ €  │ ’  ║ ©  │ þß  │ ®  │ ˜¯¸  ║     ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║      ║    │    │    │    │    │    ║    │    │    │    │    ║            ║
║      ║   │ \  │ {  │ }  │ …  │ <-'║ ¿  │ °µ  │ †  │ ˛  ║            ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║       ║      ║     ║                           ║     ║      ║     ║      ║
║       ║      ║AltGr║  _                        ║AltGr║      ║     ║      ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝

Couche AltGr + Maj

À FAIRE

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│    │    │    │    │    │    ║    │    │    │    │    │    │    ║         ║
│ °  │ ¹  │ ²  │ ³  │ ›  │ ‹  ║ ¢  │ ¥  │ ‚  │ ‘  │   │ ≠  │ ‰  ║         ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║       ║    │    │    │    │    ║    │    │    │    │    │    │    ║      ║
║       ║ |  │ ´  │ &  │ œ`  ║ <--│ ˇð/ijə˘  ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
║        ║    │    │    │    │    ║    │    │    │    │    │    │    ║     ║
║ Maj.   ║ æù¨  │ €  │ ’  ║ ©  │ þß  │ ®  │ ˜¯¸  ║ Maj.║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║      ║    │    │    │    │    │    ║    │    │    │    │    ║            ║
║      ║ /  │ \  │ {  │ }  │ …  │ <-'║ ¿  │ °µ  │ †  │ ˛  ║            ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║       ║      ║     ║                           ║     ║      ║     ║      ║
║       ║      ║AltGr║                     0     ║AltGr║      ║     ║      ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝

Couche New

TODO À FAIRE…

On peut y mettre un pavé numérique sous la main que l'on désire.

Pour le moment il n'est pas possible de placer les touches de direction, page vers le haut/vers le bas, supprimer, insertion, accueil et fin sur la disposition du pilote windows mais c'est possible avec un script ahk (qu'il faudra dev en //).

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│    │    │    │    │    │    ║    │    │    │    │    │    │    ║         ║
│    │    │    │    │    │    ║    │    │    │ /  │ *  │    │    ║         ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║       ║    │    │    │    │    ║    │    │    │    │    │    │    ║      ║
║       ║    │    │    │    │    ║ <--│ 7  │ 8  │ 9  │ -  │    │    ║      ║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
║        ║    │    │    │    │    ║    │    │    │    │    │    │    ║     ║
║        ║    │    │    │    │    ║    │ 4  │ 5  │ 6  │ +  │    │    ║     ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║      ║    │    │    │    │    │    ║    │    │    │    │    ║            ║
║ NEW  ║    │    │    │    │    │ <-'║ 1  │ 2  │ 3  │ .  │    ║   NEW      ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║       ║      ║     ║                           ║     ║      ║     ║      ║
║       ║      ║     ║                      0    ║ .?  ║      ║     ║      ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝

Scancode et vk

brouillon dev

┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────╔═════════╗
│OEM1│ 1  │ 2  │ 3  │ 4  │ 5  │ 6  │ 7  │ 8  │ 9  │ 0  │OEM+│OEM3║  LWIN   ║
│ 29 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │ 08 │ 09 │ 0A │ 0B │ 0C │ 0D ║   0E    ║
╔════╧══╗─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─┴──┬─╚══╦══════╣
║  TAB  ║ B  │OEM4│ P  │ O  │OEM5│BACK│ V  │ D  │ L  │ J  │ Z  │ W  ║      ║
║  0F   ║ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 1A │ 1B ║RSHIFT║
╠═══════╩╗───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───┴┬───╚╗     ║
║ LSHIFT ║ A  │ U  │ I  │ E  │OEMC| C  │ T  │ S  │ R  │ N  │ M  │ K  ║     ║
║  3A    ║ 1E │ 1F │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 2B ║ 1C  ║
╠══════╦═╝──┬─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴─══─┴──┬─┴──┬─┴──┬─┴──╔═╧════╩═════╣
║ OEM 2║OEMX│OEM6│ Y  │ X  │OEMP│RTRN│OEM7│ Q  │ G  │ H  │ F  ║   OEM_2    ║
║  2A  ║ 56 │ 2C │ 2D │ 2E │ 2F │ 30 │ 31 │ 32 │ 33 │ 34 │ 35 ║     36     ║
╠══════╩╦═══╧══╦═╧═══╦╧════╧════╧════╧════╧════╧═╦══╧══╦═╧════╬═════╦══════╣
║       ║LMENU ║OEM_8║                           ║OEM_8║ RWIN ║ APPS║      ║
║  1D   ║ X5B  ║ 38  ║          39               ║ X38 ║  X5C ║ X5D ║      ║
╚═══════╩══════╩═════╩═══════════════════════════╩═════╩══════╩═════╩══════╝
  • OEM+ = OEM_PLUS
  • OEMX = OEM_102
  • OEMC = OEM_COMMA
  • OEMP = OEM_PERIOD
  • RTRN = RETURN


Cas particuliers : '\\' et '\''

 { VK_TAB,		0, {'\t'} },
 { VK_ESCAPE,		0, {'\x1b'} },
 { VK_RETURN,		0, {'\r', '\n'} },
 { VK_BACK,		0, {'\b'} },

Ce pilote slovaque utilise VK_EMPTY + « ROSDATA » à la place de « static ALLOC_SECTION_LDATA » ?

Dans kbd.h, maximum number of layout tables in a DLL : KBDTABLE_MULTI_MAX (8)

Pour ceux qui voudraient « taper à l'envers », si l'on place toutes les lettres sur un VK_LEFT (flèche directionnelle gauche) le curseur est placé à droite à chaque fois ce qui donne « |A » à la place de « A| » (« | » désigne le curseur).

Idée à la con ! Mettre le pavé numérique sur le clavier pour avoir les touches directionnelles : ça ne fonctionne pas, numlock n'est effectif que sur les touches du pavé numérique :[

Pavé numérique

Le neo2 modifie aussi le pavé numérique en fonction des modificateurs, pour le moment ça ne m'intéresse pas, bepo n'a jamais touché à ça non plus.

Notes

<references>

  1. Ne sachant pas trop quel mot utiliser pour décrire l'ensemble des touches d’un modificateur spécifique, j’utilise le mot « couche », au sens de niveau (stratigraphique) comme si la disposition était une superposition d’états (shift state en anglais dans kbd.h) ou de plans (neo2 utilise le mot Ebene, plan, calque).
  2. Il y a des pb. avec compose en maj+tab sur le pilote win Neo2.