Recherche:Agencement de clavier axé sur une proximité des homologies fonctionnelles à destination d’un logiciel d’édition modal


Agencement de clavier axé sur une proximité des homologies fonctionnelles à destination d’un logiciel d’édition modal

Toute réaction ou commentaire par rapport à ce travail de recherche sont les bienvenus sur cette page de discussion.

Cette page fait partie de l’espace recherche de Wikiversité et dépend de la faculté linguistique. Pour plus d'informations, consultez le portail de l'espace recherche ou rendez-vous sur l'index des travaux de recherche par faculté.


L’objectif de ce projet est d’aboutir à :

  • une spécification d’agencement de clavier conforme au titre du projet, dont une explication plus en détail sera également fourni ;
  • fournir des fichiers de configuration et autres outils permettant d’utiliser l’agencement proposé.

Note: certains glyphes sur cette page nécessitent une installation de font non-présente de base sur tous les systèmes, par exemple les symboles de signe de Sutton pour lesquels il est possible d’installer des fonts spécifiques.

Contexte modifier

Ce projet part du constat que, dans Vim, en dehors des déplacements monocaractères de base[notes 1], l’agencement du clavier n’est pas optimisé pour offrir une congruence entre positionnement spatiale et proximité fonctionnelle des touches. C’est le plus souvent des considérations de moyen mnémotechnique reposant sur les initiales de mots anglais qui a conduit aux choix opérés. Bien que ce choix puisse se justifier sur un plan pragmatique historique, il ne résulte clairement pas d’une analyse systémique visant une congruence spatiale du positionnement des commandes. Une telle approche peut souvent apporter un gain tant en termes de facilité d'apprentissage, en tirant partie de la mémoire spatiale des individus, que de l'efficacité des saisies, comme l’atteste les études sur les agencements de clavier optimisés pour la saisie tel le Dvorak ou le Bépo.

Vers une typologie des actions d’un éditeur modal modifier

En excluant les touches de fonction et autres touches spécifiques comme le pavé numérique, un clavier qwerty classique dispose de 47 touches de caractère utilisés par vim. Avec la touche majuscule, cela porte à 94 le nombre d’actions accessibles dans le mode normal. En ajoutant la touche contrôle, cela pourrait potentiellement représenter 141 actions directement accessibles, bien que dans les fait de multiples touches sont déjà souvent déjà occupé du fait d’autres considérations[2]. De même les combinaisons <contôle-majuscule-caractère> sont souvent inopérantes, sans quoi cela porterait à 188 le total d’action directement atteignable depuis un seul mode.

Une première typologie de l’utilisation faite par Vim de chaque touche permet de les classer₀ ainsi :

  • 42 actions de déplacement
  • 30 commandes
    • dont N₀ modifiant le mode courant, parmi lesquels
      • N₁ restant en mode normal
      • 11 bascules en mode insertion
      • N₂ bascules en mode ex
      • 1 bascule en mode remplacement
  • 10 opérateurs, pouvant être éventuellement modulés par des opérandes
  • 4 actions spéciales qui requièrent une séquence complémentaire.

Symbolisation des catégories utiles à l'informatique modifier

En vue d'associer les différents types de catégorie qui sont pertinentes dans le cadre de développements informatiques où Vim est fort utilisé, cette section propose un tour d’horizon des symboles d’Unicode potentiellement pertinent pour symboliser des thèmes courant dans les métiers de l’informatique.

Catégorie Sous-catégorie Symboles Description Suggestions d’usages possibles
recherche 🔬 microscope recherche d'un élément atomique, tel un bit, ou qui requiert une attention minutieuse
🔍 🔎 loupe recherche d'élément d'un élément dont la détection demande une attention soutenue
👓 Eyeglasses


lunettes recherche d'élément d'un élément dont la détection demande une attention accentué
⏿👁👀 œil recherche sur un élément « visible à l’œil nu », comme un caractère
Ⱅ ⱅ Ⰴ 🜽 divers symbolisation d’une paire de jumelles
longue vue
🔭 téléscope
📡 antenne satellite
🛰 satellite
🔮 boule de crystal
enregistrement élément de stockage 🎞 péllicule
📼 cassette vidéo
💾🖫🖬🖪 disquette magnétique
🖭 cartouche de bande magnétique
🖴 disque dur
capture 🎥 caméra de cinéma
📹 caméra d'appoint
📷 📸 appareil photo
magnétophone
🎙 micro de studio
restitution 📽 projecteur cinématographique
📺 télévision
lecteur de bande
📻 radio
📾 radio portable, lecteure phonographe
duplex 📞✆🖀☎☏🕿🕻🕽📱📲🖁🖀℡ téléphone
marqueur désignatif 📍
📌
🧷
🏷
📑
🔖
nominatif 📛
destruction ustensile 🔨
🗡
🔫
🧨
💣
destination 🗑 corbeille
🚽 Toilettes flush
🕳 trou mettre au trou, supprimer et possiblement resortir plus tard, ou à l'inverse, tel un trou noir, disparition irrémédiale détruisant l'information correspondante à tout jamais
réplication copie 🧽 éponge copier, au sens absorber un contenu pour le restituer ultérieurement
📷 📸 appareil photo au sens prendre un instantané, symbolisation analogique déjà courante dans le cas de la capture d’écran
découpage ✂✄✁✀✃ ciseaux couper avec fine précision
🔪 couteau de cuisine couper de gros morceaux
collage 📎 trombone
🖇 trombones liés
📋 presse-paier
🐾 tampon/empreinte
💋 marque
🖶⎙🖨 imprimante
stockage 🏺 Amphora -> stocker un flux
🧺 Basket
⚰️ Coffin
Funeral Urn
🥡 Takeout Box
🥤 Cup With Straw
🥛 glass of milk
🥫 canned food
🧂 Salt Shaker
💾 Floppy Disk
💿 Optical Disk
📀 DVD
🗃 Card File Box
🗄 File Cabinet
💼 Briefcase
👛 Purse
👜 Handbag
👝 Clutch Bag
🎒 Backpack
🎁 Wrapped Gift
🧳 Luggage
🛍 Shopping Bags
🧧 Red Envelope
📦 Package
Envelope
📧 E-Mail
📩 Envelope With Arrow
📤 Outbox Tray
📥 Inbox Tray
📦 Package
📫 Closed Mailbox With Raised Flag
📪 Closed Mailbox With Lowered Flag
📬 Open Mailbox With Raised Flag
📭 Open Mailbox With Lowered Flag
📮 Postbox
🗳 Ballot Box With Ballot
🛄 Baggage Claim
🛅 Left Luggage
🧳 luggage
navigation
🧭 Compass -> navigation ou point de repère dans la navigation
position indicator
position of interest
🎯 target
📍 pin point
Anchor
Airplane
🛩 Small Airplane
🛫 Airplane Departure
🛬 Airplane Arrival
🚀 Rocket
🛸 Flying Saucer
sélection 🥢 baguettes (couverts asiatiques) Par son caractère évocateur de la saisie d’une portion
carré aux côté dessinés en pointillés Par analogie avec le sélection par dessin d’un rectangle autour des éléments visé dans de nombreuses interfaces graphiques
motif braille 246 Par analogie avec le fait de ne retenir que certains points parmi un ensemble donné pour aboutir à l’ensemble visé.
filtrage Ɏ🝖Ⰹ🢗⃒

▼⏷▾⯆🞃🢗▽▿

(divers) Ressemble vaguement au profile d’une passoire, abondament employé comme symbole de filtrage. À noter que les triangles isolés, sans barre prolongeant la pointe du dessous sont le plus souvent utilisé pour représenter l’ordonnancement d’une colonne de données.
🕸 toile d'araigné Au sens d’un outil servant à capturer certains éléments ciblés, en laissant passer la majorité des flux non attendus.
🥅 filet de but
⩩ ▦ ❅ divers Pour symboliser un maillage,avec la même sémantique analogique que ci-dessus.
transport véhicule 🚛 véhicule articulé, semi-remorque
matériel 🖲 trackball
opération liée à de la navigation 🧭 boussole navigation ou point de repère dans la navigation
indicateur de position
position intéressante
🎯🞋🞜🞖 cible objectif, but
📍 pin point point ou lieu précis
Anchor
Airplane
🛩 Small Airplane
🛫 Airplane Departure
🛬 Airplane Arrival
🚀 Rocket
🛸 Flying Saucer
previous page
Up Arrow
Up-Right Arrow
Right Arrow
Down-Right Arrow
Down Arrow
Down-Left Arrow
Left Arrow
Up-Left Arrow
Up-Down Arrow
Left-Right Arrow
Right Arrow Curving Left
Left Arrow Curving Right
Right Arrow Curving Up
Right Arrow Curving Down
🔃 Clockwise Vertical Arrows
🔄 Counterclockwise Arrows Button
🔙 Back Arrow
🔚 End Arrow
🔛 On! Arrow
🔜 Soon Arrow
🔝 Top Arrow
opération liée à une construction 🧱 Brick -> faire référence à un morceau d'une construction
🏗 Building Construction
🔗 Link
Chains
🧰 Toolbox
Hammer and Pick
🛠 Hammer and Wrench
🔧 Wrench
🔩 Nut and Bolt
Gear
🗜 Clamp
🧬 DNA
👷 Construction Worker
🏭 Factory
🚧 Construction
Fountain -> source code
envoie de message/notification/communication/signal signalitique Information
outil auxiliaire 🛎 Bellhop Bell -> notifier
📢 Loudspeaker
📣 Megaphone
📯 Postal Horn
🔔 Bell
💡 Light Bulb -> notfier
Phylactère 👁️‍🗨️ Eye in Speech Bubble
💬 Speech Balloon
🗯 Right Anger Bubble
💭 Thought Balloon
🕯 Candle
🔦 Flashlight
🏮 Red Paper Lantern
📻 Radio -> communication longue distance
📱 Mobile Phone
📲 Mobile Phone With Arrow
Telephone
📞 Telephone Receiver
📟 Pager
📠 Fax Machine
📡 Satellite Antenna
🎐 Wind Chime
🗣 Speaking Head
courier
🧾 Receipt
Envelope
📧 E-Mail
📨 Incoming Envelope
📩 Envelope With Arrow
📤 Outbox Tray
📥 Inbox Tray
📦 Package
📫 Closed Mailbox With Raised Flag
📪 Closed Mailbox With Lowered Flag
📬 Open Mailbox With Raised Flag
📭 Open Mailbox With Lowered Flag
📮 Postbox
🗳 Ballot Box With Ballot
🧧 Red Envelope
expression gestuel des mains
chirologique 👋 Waving Hand
🤚 Raised Back of Hand
🖐 Hand With Fingers Splayed
Raised Hand
🖖 Vulcan Salute
👌 OK Hand
Victory Hand
🤞 Crossed Fingers
🤟 Love-You Gesture
🤘 Sign of the Horns
🤙 Call Me Hand
👈 Backhand Index Pointing Left
👉 Backhand Index Pointing Right
👆 Backhand Index Pointing Up
🖕 Middle Finger
👇 Backhand Index Pointing Down
Index Pointing Up
👍 Thumbs Up
👎 Thumbs Down
Raised Fist
👊 Oncoming Fist
🤛 Left-Facing Fist
🤜 Right-Facing Fist
👏 Clapping Hands
🙌 Raising Hands
👐 Open Hands
🤲 Palms Up Together
🤝 Handshake
🙏 Folded Hands
mesure 🌡 Thermometer -> mesurer qqc
📏 Straight Ruler
📐 Triangular Ruler
Balance Scale
Hourglass Done
Hourglass Not Done
Watch
Alarm Clock
Stopwatch
Timer Clock
🕰 Mantelpiece Clock
paramétrage et contrôle 🎛 Control Knobs -> opération hautement paramétrable
🎚 Level Slider -> opération paramétrable par un unique entier
Hammer and Pick
🛠 Hammer and Wrench
🔧 Wrench
🔩 Nut and Bolt
Gear
🗜 Clamp
🛑 Stop Sign
🔈 Speaker Low Volume
🔉 Speaker Medium Volume
🔊 Speaker High Volume
🔕 Bell With Slash
🔀 Shuffle Tracks Button
🔁 Repeat Button
🔂 Repeat Single Button
Play Button
Fast-Forward Button
Reverse Button
Fast Reverse Button
🔼 Upwards Button
Fast Up Button
🔽 Downwards Button
Fast Down Button
Stop Button
Eject Button
🎦 Cinema
🔅 Dim Button
🔆 Bright Button
Recycling Symbol
édition: Pencil
Black Nib
🖋 Fountain Pen
🖊 Pen
🖌 Paintbrush
🖍 Crayon
📝 Memo
Keyboard
affichage 🖨 Printer
💻 Laptop
calcul 🖥 Desktop Compute
🧮 Abacus
bloquer/débloquer
🔒 Locked
🔓 Unlocked
🔏 Locked With Pen
🔐 Locked With Key
🔑 Key
🗝 Old Key
🚪 Door
attirance, attrait, force, énergie, puissance, valeur, dynamique, contrainte
🧲 Magnet
🔋 Battery
🔌 Electric Plug
High Voltage
test Alembic
🧪 Test Tube
🧫 Petri Dish
debuggage 💉 Syringe
💊 Pill
🧯 Fire Extinguisher
nettoyage, higiène
🚿 Shower
🧴 Lotion Bottle
🧹 Broom
🧼 Soap
🧽 Sponge
🧻 Roll of Paper
🛁 Bathtub
flux
🚰 Potable Water -> flux de données jugées intègre
🎏 Carp Streamer -> indicateur de sens du flux
🎞 Film Frames -> record
🔗 Link
Chains
🔀 croisement, interversion
ou ⭃ fusion de multiples flux
ou ⇆ swap permutation
feu 🧯 Fire Extinguisher
🚬 Cigarette
sommeille, innactivité, hibernation
💤 Zzz
🛌 Person in Bed
🛏 Bed
💫 Dizzy
structure de donnée/de processus
🖼 Framed Picture -> buffer
🧵 Thread
🧶 Yarn
🤳 Selfie -> réflexivité
💪 Flexed Biceps
🦵 Leg
🦶 Foot
👂 Ear
👃 Nose
🧠 Brain
🦷 Tooth
🦴 Bone
👀 Eyes
👁 Eye
👅 Tongue
👄 Mouth
🎲 Game Die -> hasard
🎬 Clapper Board -> start!
🏁 Chequered Flag -> go!
  • évènement
🎉 Party Popper
🎊 Confetti Ball
🎫 Ticket
internet 🕸 Spider Web
🕷 Spider
saisie et manipulation de caractères #️⃣ Keycap Number Sign
0️⃣ Keycap Digit Zero
1️⃣ Keycap Digit One
2️⃣ Keycap Digit Two
3️⃣ Keycap Digit Three
4️⃣ Keycap Digit Four
5️⃣ Keycap Digit Five
6️⃣ Keycap Digit Six
7️⃣ Keycap Digit Seven
8️⃣ Keycap Digit Eight
9️⃣ Keycap Digit Nine
🔟 Keycap: 10
🔠 Input Latin Uppercase
🔡 Input Latin Lowercase
🔢 Input Numbers
🔣 Input Symbols
🔤 Input Latin Letters
gestion de projet
🎟 Admission Tickets, 🎫 Ticket -> issue
🐞 Lady Beetle -> bug
🛂 Passport Control -> access control list
🛃 Customs
No Entry
🚫 Prohibited
📅 Calendar
🗓️ Spiral Calendar
📆 Tear-Off Calendar
🏚 Derelict House -> dette technique
processus de validation et gestion de version
🆙 Up! Button
🔳 White Square Button
🔲 Black Square Button
Hollow Red Circle
Check Mark Button
Check Box With Check
Check Mark
Multiplication Sign
Cross Mark
Cross Mark Button
niveau d'urgence, priorité en termes de survie
Snowflake
🔥 Fire
💥 Collision
🌪 Tornado
🌀 Cyclone
niveau d'importance, priorité en termes de durée nécessaire
🌫 Fog -> aucune idée, on navigue dans le brouillard
Comet -> fait en moins de deux
💨 Dashing Away
🌊 Water Wave
niveau de compétence
🎓 Graduation Cap -> just graduated
👶 Baby, 🐣 Hatching Chick, 🐤 Baby Chick, 🐥 Front-Facing Baby Chick-> junior consultant
🔰 Japanese Symbol for Beginner
👔 Necktie -> regular white colar
🥼 Lab Coat -> specialist
🦅 Eagle
🕶 Sunglasses -> « la classe internationale »
👑 Crown -> king in its domain
Star -> star internationale
🦉 Owl -> wisdom, grand sage du domaine
🧙 Mage, 🧙‍♂️ Man Mage, 🧙‍♀️ Woman Mage -> wizzard of the dark art
🧞 Genie, 🧞‍♂️ Man Genie, 🧞‍♀️ Woman Genie
dangerosité, évaluation des risques, sécurité
Warning
🆘 SOS Button
👻 Ghost -> effrayant, mais la peur doit servir à agir avec prudence, il ne faut pas la laisser tétaniser le consient
Radioactive
Biohazard
💀 Skull -> mortel
Skull and Crossbones -> mortel
🌂 Closed Umbrella
Umbrella
🛡 Shield
Rescue Worker’s Helmet
🔥 Fire
💥 Collision
🌋 Volcano
é valuation de la qualité
💩 Pile of Poo -> « c'est de la merde ! »
🤡 Clown Face -> « lol, tu plaisantes ? »
👹 Ogre -> « bouffe toutes les ressources à disposition »
🧟 Zombie, 🧟‍♂️ Man Zombie, 🧟‍♀️ Woman Zombie -> « tombe régulièrement en processus zombie »
😻 Smiling Cat With Heart-Eyes -> « j'adore »
❤️ Red Heart ->
🧚 Fairy, 🧚‍♂️ Man Fairy, 🧚‍♀️ Woman Fairy -> « magique ! »
🦄 Unicorn -> killer app
cible, objectif 🏹 Bow and Arrow
🎯 Direct Hit
divers indicateurs de direction 🢔 🢕 🢖 🢗

Étude des associations de touche faites par vim modifier

Pour factoriser le nombre de symboles utilisé, cette section introduit les conventions suivantes :

  • symbolisation du type d’unité visé :
    • ◌˙ indique que l’opération s’effectue sur un élément atomique, comme un caractère. Par exemple dans mot, les trois lettres m, o et t.
    • ◌̈ indique que l’opération s’effectue sur une chaîne contiguë d’éléments atomiques ostensiblement segmentés, comme un morphème bornée par des tirets. Par exemple dans maître-mot, les deux éléments maître et mot correspondent à cette définition.
    • ◌̊ indique que l’opération s’effectue sur une chaîne contiguë d’éléments atomiques, comme une lexie bornée par des blancs. Par exemple dans le fin mot de l’histoire, chacun des cinq éléments le, fin, mot, de, et l’histoire.
    • ◌⃐ indique que l’opération s’effectue sur l’amont du maillage d’éléments atomiques, comme tout ce qui précède d’une ligne avant le curseur
    • ◌⃑ indique que l’opération s’effectue sur l’aval du maillage d’éléments atomiques, comme le reste d’une ligne après le curseur
    • ◌⃩ indique que l’opération s’effectue sur un maillage d’éléments atomiques, comme des lignes prisent sur toute leur longueur.
    • ◌⃩ indique que l’opération s’effectue sur un maillage d’éléments atomiques, comme une ligne sur toute sa longueur.
    • ◌̿ indique que l’opération s’effectue sur un ensemble de maillages d’éléments atomiques, comme un ensemble de lignes, un paragraphe ou une section.
    • ◌̃ indique que l’opération s’effectue sur un motif spécifiant sa portée.
    • ◌᪻ indique que l’opération s’effectue dans l'ensemble des élément de repliement
    • ◌͛ indique que l’opération s’effectue dans l'ensemble des élément de la liste tachyple (quickfix)
    • ◌͌ indique que l’opération s’effectue dans l'ensemble des élément de la liste des suggestions orthographiques
    • ◌̚ indique que l’opération s’effectue dans l'ensemble des élément de la scission en fenêtres
    • ◌⃰ indique que l’opération s’effectue dans l'ensemble des élément de la liste des arguments
    • ◌̽ indique que l’opération s’effectue dans l'ensemble des élément de la liste des tampons
    • ◌̉ indique que l’opération s’effectue dans l'ensemble des élément de la liste des tabs
  • symbolisation de la destination visée du point de vue de l’unité de regroupement immédiatement supérieur :
    • ◌̙ indique que l’opération s’effectue vers l’élément initial
    • ◌⃮ indique que l’opération s’effectue vers l’élément précédent
    • ◌⃯ indique que l’opération s’effectue vers l’élément suivant
    • ◌ ͍ indique que l’opération s’effectue vers l’ensemble de l’élément présent à la position courante
    • ◌̪ indique que l’opération s’effectue vers l’ensemble incluant l’élément présent à la position courante
    • ◌̻ indique que l’opération s’effectue vers l’ensemble de la sélection actuelle
    • ◌̘ indique que l’opération s’effectue vers l’élément final
  • symbolisation du type d'action
    • 🧭 navigation
    • création
    • ⌧ suppression
    • changement de mode
Traitement associé à chaque touche en mode normal dans vim
Touche Traitement effectué Symbole
Objet transverseaux
Indication de la saisie d’une chaîne indicant la portée d'une action, stipulée par des mouvements ou une subdivision du tampon, comme un caractère, une phrase un paragraphe ou une section.
Indication d'un caractère quelconque, notamment une lettre ou un chiffre
Indication d'un caractère utilisable comme indicateur de registre nommé 🏷
Indication d’un nombre paramétrant l’opérateur en cours de saisie, s’il accepte un tel paramètre #️⃣
Mode normal
Portée d'une action, indiquée par des mouvements ou une subdivision du tampon.
échape annuler la commande en cours de saisie
`⬚ aller à la marque ⬚ 📍
~ permutter la casse d'un unique caractère 🔃 ou ⛕ 🔀
1-9 et 0 indiquer la valeur d'un paramètre numérique #️⃣
!⯐ filtrer par un programme externe, sur l'ensemble des lignes stipulées par le mouvement 🌠 ou sur la ligne courante sinon 🕸
#️⃣ @🏷 jouer la macro stockée dans le registre 🏷, #️⃣ ou une fois 📽
#️⃣ # rechercher la #️⃣-ième ou première occurrence du mot identique à celui sous le curseur en son amont 🖘
$ aller en fin de ligne
% sauter vers le marqueur de début/fin du block courant ⭾ ou ⭿ ou ⇄
^ aller au premier caractère non-blanc de la ligne courante
& refaire la dernière commande substitution
* rechercher la #️⃣-ième ou première occurrence du mot identique à celui sous le curseur en son aval 🖙
#️⃣ ( aller au début première ou la #️⃣-ième phrase avant le curseur 🗨
0 aller en début de ligne
#️⃣ ) aller à la fin de la première ou la #️⃣-ième phrase après le curseur 🗩
#️⃣ - aller au premier caractère non-blanc de la #️⃣-ième ligne précédente
#️⃣ _ aller au premier caractère non-blanc de la #️⃣-moins-une-ième ligne suivante, où #️⃣ vaut 1 par défaut ⭁ ou ⮒
= ⯐ autoformatage sur l'ensemble des lignes stipulées par la portée de ⯐ 🗜
#️⃣ + aller au premier caractère non-blanc de la #️⃣-ième ligne suivante, où #️⃣ vaut 1 par défaut
q 🏷 Enregistre une macro dans le registre 🏷 📹
Q Basculer vers le mode ex. 🌩
#️⃣w aller sur le premier caractère de la #️⃣-ième prochaine lexie ⇒ ͚
#️⃣W aller sur le premier caractère de la #️⃣-ième prochaine lexie précédée d'un caractère blanc 🢥
#️⃣ e aller sur le prochain caractère terminant la #️⃣-ième lexie après la position courante 🢚
#️⃣ E aller sur le prochain caractère terminant la #️⃣-ième lexie segmentée par des blancs après la position courante
#️⃣ r ⬚ remplacer #️⃣ caractères par le caractère indiqué à la place de ⬚ ⌤ ou ⎅ ou ⎀ ou
R passer en mode remplacement
#️⃣ t ⬚ aller juste après la #️⃣-ième précédente occurrence du caractère ⬚
#️⃣ T ⬚ aller juste avant la #️⃣-ième prochaine occurrence du caractère ⬚
y ⯐ copie l'ensemble des caractères stipulées par la porté de ⯐ dans un registre 📷
#️⃣ Y copie #️⃣ lignes à partir de la courante dans un registre 📸
#️⃣ u annule #️⃣ modifications atomiques 🗙
U remet la dernière ligne modifiée dans l’état où elle était avant toute modification la concernant
#️⃣ i passer en mode insertion avant le caractère sous le curseur, répéter #️⃣ fois les saisies faites jusqu’au prochain passage en mode normal
#️⃣ I passer en mode insertion avant le premier caractère non-blanc de la ligne courante, répéter #️⃣ fois les saisies faites jusqu’au prochain passage en mode normal
#️⃣ o créer #️⃣ copies d’une nouvelle ligne après la ligne courante en commençant à insérer au niveau d'indentation pertinent en aval de la ligne courante 🔼
#️⃣ O créer #️⃣ copies d’une nouvelle ligne avant la ligne courante en commençant à insérer au niveau d'indentation pertinent en amont de la ligne courante 🔽
#️⃣ p coller #️⃣ fois après la position courante
#️⃣ P coller #️⃣ fois avant la position courante
#️⃣ { aller au #️⃣ -ième paragraphe précédent
#️⃣ } aller au #️⃣ -ième paragraphe suivant
[ ⬚ divers (20)
[ CTRL+D aller à la première occurrence d'une ligne commençant par #define, dans le fichier courant et les fichiers qu’il inclut ⤷≝
[ CTRL+I aller à la première occurrence du mot sous le curseur, dans le fichier courant et les fichiers qu’il inclut, en commençant par le fichier lui-même
#️⃣ [ # aller à la #️⃣ -ième précédente occurrence innapariée de la lexie #if, #else ou #ifdef
[ ' aller au premier caractère non blanc de la ligne du précédent marqueur bas de casse
#️⃣ [ ( aller à la #️⃣ -ième précédente occurrence du caractère parenthèse innapariée avant le curseur
#️⃣ [ * aller à la #️⃣ -ième précédente occurrence d'un commentaire C de la forme /* commentaire */
#️⃣ [ /
[ ` aller au précédent marqueur bas de casse
[ D lister l'ensemble des directives #define assignant une macro au mot sous le curseur, dans le fichier courant et les fichiers qu’il inclut, en commençant par le fichier lui-même
[ I lister l'ensemble des occurrences du mot sous le curseur, dans le fichier courant et les fichiers qu’il inclut, en commençant par le fichier lui-même
[ p colle le contenu d'un registre dans le tampon en amont du curseur en ajustant l’indentation à la ligne courante
[ P
[ <MiddleMouse>
[ s aller au précédent mot mésorthographié
#️⃣ [ [ aller au début de la #️⃣ -ième précédente section explicite
#️⃣ [ ] aller au début de la #️⃣ -ième précédente section implicite
#️⃣ [ c lors de l’affichage d’un différentiel entre deux fichiers, aller au #️⃣ -ième écart précédent
[ ⬚
[ d montrer dans la barre d’état la première occurrence d'une ligne commençant par #define appairable au mot sous le curseur, dans le fichier courant et les fichiers qu’il inclut
[ f aller au fichier dont le chemin est spécifié par le terme sous le curseur, synonyme de gf
[ i montrer dans la barre d’état la première occurrence du mot sous le curseur, dans le fichier courant et les fichiers qu’il inclut, en commençant par le fichier lui-même
#️⃣ [ m aller à la #️⃣ -ième précédente occurrence de début de fonction membre
[ z aller au début du repliement ouvert
[ { aller à la #️⃣ -ième précédente occurrence du caractère accolade innapariée avant le curseur
[ ⬚
] ⬚ divers (39)
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
] ⬚
#️⃣ a passer en mode insertion après le caractère sous le curseur, répéter #️⃣ fois les saisies faites jusqu’au prochain passage en mode normal
#️⃣ A passer en mode insertion à la fin de la ligne, répéter #️⃣ fois les saisies faites jusqu’au prochain passage en mode normal
#️⃣ s supprime #️⃣ caractères après le curseur, les copie dans le registre ", et passe en mode insertion
#️⃣ S supprime #️⃣ lignes à partir du début de la ligne courante, les copie dans le registre ", et passe en mode insertion ⎇̱
d⯐ supprime la part du tampon courant correspondant à la portée de ⯐ et le copie dans le registre ".
#️⃣ D supprime le reste de la ligne courante après le curseur et #️⃣-moins-une lignes à partir de la la ligne courante et les copie dans le registre " ⌦̳
#️⃣ f ⬚ aller juste avant la #️⃣-ième prochaine occurrence du caractère ⬚
#️⃣ F ⬚ aller juste après la #️⃣-ième précédente occurrence du caractère ⬚
g ⬚ divers (65)
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
g
gg Aller sur le premier caractère non-blanc de la première ligne ⬁̅
G Aller sur le premier caractère non-blanc de la dernière ligne ⬃̲
#️⃣ h Aller #️⃣ caractères à gauche
H Aller sur le premier caractère non-blanc de la première ligne affichée à l'écran ⃗𝄙
#️⃣ j Aller #️⃣ lignes plus bas, en restant si possible sur la même colonne
#️⃣ J joindre les #️⃣ lignes suivantes à la ligne courante
#️⃣ k Aller #️⃣ lignes plus haut, en restant si possible sur la même colonne
K Ouvrir le manuel pour la lexie sous le curseur
#️⃣ l Aller #️⃣ caractères à droite
L Aller sur le premier caractère non-blanc de la dernière ligne affichée à l'écran ⃯𝄙
; répéter la recherche de caractère dans la même direction pour trouver la prochaine occurrence sur la ligne courante ↶̥
: ouvrir un prompteur de command ex 🗲
'⬚ aller au premier caractère non blanc de la ligne avec le marqueur ⬚ 🔖
"🏷 spécifier l'utilisation du registre 🏷 pour la prochaine opération 🗃
\ divers (inutilisé par défaut)
#️⃣ | aller à la collone #️⃣ ⩩̭̌
z⬚ divers (45)
Z⬚ divers (2)
#️⃣ x supprimer #️⃣ caractères après le curseur, copier la chaîne correspondante dans le tampon "
#️⃣ X supprimer #️⃣ caractères avant le curseur, copier la chaîne correspondante dans le tampon "
c supprimer #️⃣ caractères depuis le curseur, copier la chaîne correspondante dans le tampon ", passer en mode insertion ⎇̱̰
C supprimer le reste de la ligne après le curseur, copier la chaîne correspondante dans le tampon ", passer en mode insertion ⎇̱˱
v lancer le mode visuel, sélection par caractère 👁̣
V lancer le mode visuel, sélection par ligne 👁̲
b aller sur le premier caractère de la #️⃣-ième précédente lexie
B aller sur le premier caractère de la #️⃣-ième précédente lexie segmentée par un caractère blanc 🢤
n répéter la recherche du motif dans la même direction ↷̰
N répéter la recherche du motif dans la direction opposée ↶̰
m ⬚ positionner un marqueur désiginé par ⬚ 🎯
M Aller sur le premier caractère non-blanc de la ligne affichée au milieu de l'écran →𝄚
, répéter la recherche de caractère dans la direction opposée pour trouver la prochaine occurrence sur la ligne courante ↷̥
< désindenter
. répéter la dernière commande atomique ♻ ou ⮔
> indenter
/ spécifier un motif de chaîne à recherche en aval du curseur 🔎
? spécifier un motif de chaîne à recherche en amont du curseur 🔍
Mode normal
échape passer en mode normal

Analyse typologique modifier

Le table de la liste des actions précédentes permet de dresser une typologie comme suit :

  1. annulation de commande en cours
  2. répétition
    1. de la dernière commande effectuée
    2. de la dernière recherche de caractère sur la ligne courante, en amont ou aval
    3. de la dernière recherche de motif de chaîne effecutée sur le tampon courant, en poursuivant dans le même sens ou son inverse
    4. de la dernière recherche de motif de chaîne effecutée sur un ensemble de fichiers, en sautant au résultat suivant ou précédent
  3. basculement vers un autre mode
    1. normal
    2. rédaction
      1. insertion
      2. remplacement isolé
      3. remplacement indéfiniment long
    3. exécution
    4. visuel
    5. shell (mise en sommeil du processus courant)
  4. navigation
    1. déplacement de la portion affiché à l'écran
    2. parmi les fenêtres de tampon
    3. déplacement du curseur dans le tampon courant
      1. déplacement par spécification d'un mouvement
      2. déplacement par référence à un marqueur
      3. déplacement par recherche d'un motif
    4. parmi les tampons ouverts
    5. parmi les arguments d’invocation
    6. parmi les tabulations
    7. parmi les résultats des retours d’une commande faisant référence à des positions dans d'autres fichiers
      1. tachyple (navigation rapide, quickfix list)
      2. toposcare (saut de lieu, location list)
  5. modifaction
    1. de la casse
      1. d'un nombre de caractère
      2. par spécification d'une portée
    2. d'un nombre : incrément décrément
    3. de l'indentation
    4. par spécification d'un registre à insérer
    5. par spécification d'un registre à utiliser comme macro
    6. par spécification d'une saisie
  6. paramétrage d’une opérande
    1. par indication d'un nombre
    2. par indication d’une portée
      1. spécifiant l'inclusion ou non des extrêmités
      2. spécifiant l’étendue de la cible :
        1. bit
        2. caractère
        3. lexie délimitée par des caractères de segmentation (ponctuation…)
        4. lexie délimitée par des caractères blancs
        5. phrase
        6. paragraphe
        7. section

Analyse de la répartition spatiale des fonctions de vim dans la disposition classique de vim modifier

Cette section explore à travers des mises en avant visuelles la dispostion uselle de vim sous différents angles. Pour cela, outre l’icônographie établie précédement, elle propose d'associer une couleur d'arrière plan et différents style de bordures à des catégories d'action.

Le tableau de légende ci-dessous explicite les associations retenus.

Légende

style="background-color: #e1f5fe; " | spécifier un déplacement curseur {{/move}}

style="background-color: #b3e5fc; " | spécifier une portée {{/scope}}

style="background-color: #81d4fa; " | spécifier une rechercher {{/seek}}

style="background-color: #4fc3f7; " | spécifier un déplacement du cadre {{/screen}}

style="background-color: #29b6f6; " | sélection {{/pick}}

style="background-color: #f48fb1;" | adjoindre {{/store}}

style="background-color: #9575cd; " | shell {{/shell}}

style="background-color: #b388ff; " | exécuter {{/run}}

style="background-color: #c5e1a5; " | éditer {{/edit}}

style="background-color: #8bc34a;" | adjoindre {{/add}}

style="background-color: #ff8a65; " | altérer {{/alt}}

style="background-color: #fff59d;" | supprimer et éditer {{/sub}}

style="background-color: #ff3d00; " | supprimer {{/del}}

répétition non-altérante {{/rep}}
répétition d’une action potentiellement altérante {{/redo}}

Le tableau suivant fournie une vue d'ensemble réunissant le nom de la touche, suivi du symbole représentant l'action correspondante à son appui, et à son appui simultané avec la touche contrôle. Les touches obtenues par mise en majuscule ont été spécifiées comme des entrée à part.

Représentation matricielle de la disposition de Vim mode normal sur un clavier qwerty
touche brut ctrl brut brut ctrl brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl brut brut ctrl
~

style="background-color: #ff8a65; "| ⛕

!

style="background-color: #b388ff; "| 🕸

@

style="background-color: #b388ff; "| 📽

#

style="background-color: #e1f5fe; "| 🖘

$

style="background-color: #e1f5fe; "| ⇥

%

style="background-color: #e1f5fe; "| ⭾

^

style="background-color: #e1f5fe; "| ⭰

& style="background-color: #b388ff; "|
*

style="background-color: #e1f5fe; "| 🖙

(

style="background-color: #e1f5fe; "| 🗨

)

style="background-color: #e1f5fe; "| 🗩

_

style="background-color: #e1f5fe; "| ⮒

+

style="background-color: #e1f5fe; "| ⭹

`

style="background-color: #e1f5fe; " | 📍

1 2 3 4 5 6 7 8 9 0

style="background-color: #e1f5fe; "| ⇤

-

style="background-color: #e1f5fe; "| ⭶

=

style="background-color: #ff8a65; "| 🗜

Q

style="background-color: #b388ff; "|🌩

W

style="background-color: #e1f5fe; "| 🢥

E

style="background-color: #e1f5fe; "| ➯

R

style="background-color: #ff8a65; "| ⑄

T

style="background-color: #e1f5fe; "| ⤟

style="background-color: #f48fb1;"| Y

📸 U

style="background-color: #ff8a65; "| ❎

I

style="background-color: #c5e1a5; "| ⏪

O

style="background-color: #c5e1a5; "| 🔽

P

style="background-color: #8bc34a;"| ⬲

{

style="background-color: #e1f5fe; "| ⇚

}

style="background-color: #e1f5fe; "| ⇛

q

style="background-color: #f48fb1;"|📹

w

style="background-color: #e1f5fe; "| ⇒

e

style="background-color: #e1f5fe; "| 🢚

r

style="background-color: #ff8a65; "| ⎅

t

style="background-color: #e1f5fe; "| ⤠

y

style="background-color: #f48fb1;"| 📷

u

style="background-color: #ff8a65; "| 🗙

i

style="background-color: #c5e1a5; "| ◀

o

style="background-color: #c5e1a5; "| 🔼

p

style="background-color: #8bc34a;"| ⟴

[ ]
A

style="background-color: #c5e1a5; "| ⏩

S

style="background-color: #fff59d;"| ⎇̱

D

style="background-color: #ff3d00; "| ⌦̳

F

style="background-color: #81d4fa; "| ⤝

G

style="background-color: #e1f5fe; "| ⬃̲

H

style="background-color: #4fc3f7; " |⃗𝄙

J

style="background-color: #ff8a65; "| ⫘

K L

style="background-color: #4fc3f7; " |⃯𝄙

:

style="background-color: #b388ff; "| 🗲

"

style="background-color: #f48fb1;"| 🗃

|

style="background-color: #e1f5fe; "| ⩩̭̌

a

style="background-color: #c5e1a5; " | ▶

s

style="background-color: #fff59d;"| ⎇

d

style="background-color: #ff3d00; "| ⌧

f

style="background-color: #81d4fa; "| ⤞

g h

style="background-color: #e1f5fe; "| ←

j

style="background-color: #e1f5fe; "| ↓

k

style="background-color: #e1f5fe; "| ↑

l

style="background-color: #e1f5fe; "| →

;

style="background-color: #e1f5fe; "| ↶̥

'

style="background-color: #f48fb1;"| 🔖

\
Z 🐚

˃⃢

X

style="background-color: #ff3d00; "| ⌫

C

style="background-color: #fff59d;" | ⎇̱˱

V

style="background-color: #29b6f6; "| 👁̲

B

style="background-color: #e1f5fe; "| 🢤

N style="background-color: #81d4fa; "|
↶̰
M

style="background-color: #4fc3f7; "|→𝄚

<

style="background-color: #ff8a65; "|⬱

>

style="background-color: #ff8a65; "|⇶

?

style="background-color: #81d4fa; "|🔍

z x

style="background-color: #ff3d00; "| ⌦

c

style="background-color: #ff8a65; "| ⌦̭

v

style="background-color: #29b6f6; "| 👁̣

style="background-color: #29b6f6; "| 👁̻

b

style="background-color: #e1f5fe; "| ⇐

n style="background-color: #81d4fa; "|
↷̰
m

style="background-color: #f48fb1;"| 🎯

, style="background-color: #81d4fa; "|
↷̥
. style="background-color: #b388ff; "|
/

style="background-color: #81d4fa; "| 🔎

Le tableau suivant reprend la disposition en ne retenant que les symboles attachés aux touches bruts.

Représentation purement symbolique de la disposition standard des touches bruts
1 2 3 4 5 6 7 8 9 10 11 12 13

style="background-color: #ff8a65; " | ⛕

style="background-color: #b388ff; " | 🕸

style="background-color: #b388ff; " | 📽

style="background-color: #e1f5fe; " | 🖘

style="background-color: #e1f5fe; " | ⇥

style="background-color: #e1f5fe; " | ⭾

style="background-color: #e1f5fe; " | ⭰

style="background-color: #b388ff; " |

style="background-color: #e1f5fe; " | 🖙

style="background-color: #e1f5fe; " | 🗨

style="background-color: #e1f5fe; " | 🗩

style="background-color: #e1f5fe; " | ⮒

style="background-color: #e1f5fe; " |

style="background-color: #e1f5fe; " | 📍

style="background-color: #e1f5fe; " | ⇤

style="background-color: #e1f5fe; " | ⭶

style="background-color: #ff8a65; " | 🗜

style="background-color: #b388ff; " |🌩

style="background-color: #e1f5fe; " | 🢥

style="background-color: #e1f5fe; " | ➯

style="background-color: #ff8a65; " | ⑄

style="background-color: #e1f5fe; " | ⤟

📸

style="background-color: #ff8a65; " | ❎

style="background-color: #c5e1a5; " | ⏪

style="background-color: #c5e1a5; " | 🔽

style="background-color: #8bc34a;" | ⬲

style="background-color: #e1f5fe; " | ⇚

style="background-color: #e1f5fe; " | ⇛

style="background-color: #f48fb1;" |📹

style="background-color: #e1f5fe; " | ⇒

style="background-color: #e1f5fe; " | 🢚

style="background-color: #ff8a65; " | ⎅

style="background-color: #e1f5fe; " | ⤠

style="background-color: #f48fb1;" | 📷

style="background-color: #ff8a65; " | 🗙

style="background-color: #c5e1a5; " | ◀

style="background-color: #c5e1a5; " | 🔼

style="background-color: #8bc34a;" | ⟴

style="background-color: #c5e1a5; " | ⏩

style="background-color: #fff59d;" | ⎇̱

style="background-color: #ff3d00; " | ⌦̳

style="background-color: #81d4fa; " | ⤝

style="background-color: #e1f5fe; " | ⬃̲

style="background-color: #4fc3f7; " |⃗𝄙

style="background-color: #ff8a65; " | ⫘

style="background-color: #4fc3f7; " |⃯𝄙

style="background-color: #b388ff; " | 🗲

style="background-color: #f48fb1;" | 🗃

style="background-color: #e1f5fe; " | ⩩̭̌

style="background-color: #c5e1a5; " | ▶

style="background-color: #fff59d;" | ⎇

style="background-color: #ff3d00; " | ⌧

style="background-color: #81d4fa; " | ⤞

style="background-color: #e1f5fe; " | ←

style="background-color: #e1f5fe; " | ↓

style="background-color: #e1f5fe; " | ↑

style="background-color: #e1f5fe; " | →

style="background-color: #e1f5fe; " | ↶̥

style="background-color: #f48fb1;" | 🔖

style="background-color: #ff3d00; " | ⌫

style="background-color: #fff59d;" | ⎇̱˱

style="background-color: #29b6f6; " | 👁̲

style="background-color: #e1f5fe; " | 🢤

style="background-color: #81d4fa; " |
↶̰

style="background-color: #4fc3f7; " |→𝄚

style="background-color: #ff8a65; " |⬱

style="background-color: #ff8a65; " |⇶

style="background-color: #81d4fa; " |🔍

style="background-color: #ff3d00; " | ⌦

style="background-color: #ff8a65; " | ⎇̱̰

style="background-color: #29b6f6; " | 👁̣

style="background-color: #e1f5fe; " | ⇐

style="background-color: #81d4fa; " |
↷̰

style="background-color: #f48fb1;" | 🎯

style="background-color: #81d4fa; " |
↷̥
style="background-color: #b388ff; " |

style="background-color: #81d4fa; " | 🔎

Cette représentation permet de repérer d'emblé le caractère globalement éparse de la disposition spatiale des fonctions de même catégories.

Proposition de disposition alternative modifier

Cette section vise à fournir une dispostion dont la répartion spatiale offre plus de cohérence :

  • groupement par catégories retenus dans la section précédente : déplacement, éditer, supprimer, répéter…
  • groupement par type d’opérande : caractère, ligne, paragraphe, section, élément de la liste quickfix, suggestion orthographique, tampon, fichier parmi les arguments, fenêtre dans une vue scindé, tabs…
  • groupement par porté : élément précédent, suivant, le premier, le dernier…
  • groupement par mode dans lequel le logiciel se retrouve une fois l'action complété
  • groupement par conséquence sur le tampon en cours d’édition : inchangé, adjonction, suppression, substitution…
  • positionnement relatifs par fréquence de combinaison

Descriptif du TypeMatrix 2030 version bépo modifier

 
Photographie du clavier pris comme cible pour le reste de cette étude.

Pour le besoin de cette section, l’étude se concentrera sur disposition adapté au clavier TypeMatrix 2030, configuré avec un agencement bépo.

L’arragement des touches de ce clavier, bien plus rectiligne que la majorité des claviers du marché, facilite la fidélité de son arragement spatial réel avec représentation une réprésentation sous forme de tableau.

Le bépo étant un agencement créé dans une démarche d’optimisation de la cohérence entre usage et répartition des touches, il paraît un choix bien plus en phase avec les objectifs du présent projet que la plupart des agencements disponibles sur le marché.

Il est possible d’accéder à plus d’information sur le combo TypeMatrix 2030 et bépo sur le wiki du projet bépo.

Aspects notables modifier

Cette section énumère les autres caractéristiques notables de cette cible qui sont pertinents pour cette étude.

Sur le TypeMatrix 2030, le caractère ê est directement saisssable par la touche "lecture/pause", lorsque le mode 102-touches est activé via fn+F2. Ce mode sera ci-après supposé activé

La présence d'une touche de composition des caractères à accent grave sur une touche quasi-centrale s’avère fort originale. Par rapport à un clavier avec agencement qwerty, elle occupe la place d’une touche y. Vim utilise cette touche pour la copie d’une sélection du tampon courant dans un registre. Par exemple yy copie la ligne courante dans son intégralité. Une correspondance naïve de la même touche sur un bépo nécessiterait pas moins de quatre appui de la même touche pour obtenir le même résultat. En effet, le premier appui enclenche la demande de composition d’un caractère accentué, signal qui n’est pas accessible à Vim, et un second appui sur cette même touche envoie le caractère accent circonflexe, visible par Vim. Aussi pour obtenir l’équivalent d’un yy faudrait-il saisir ^^^^, dans le cas d’une correspondance naïve. À l’inverse, il est possible de tirer partie de cette touche de composition en associant des actions aux compositions les plus accessibles ergonomiquement : les touches composables sur la moitié gauche du clavier, la touche ^ elle même, et celle directement en dessous. Il est possible de produire 13 caractères de la sorte : ⁽⁾ếôềâûîêầŷ^ĉ. Cela permet possiblement de grouper une famille d’actions déjà fort conséquente.

Le même type de réflexions opérent pour les différentes saisies combinatoires que fournie le bépo.

Liste des touches ouvrant une saisie combinatoire sur un agencement bépo
combinasion symbole description note applications #
^ ◌̂ stipule un accent grave au prochain caractère Pour les chiffres, indique une mise en exposant ⁽⁾⁺⁻⁼¹²³⁴⁵⁶⁷⁸⁹⁰⁼ếôề^ĵẑŵẾÔỀĴẐŴâûîêĉŝÂÛÎÊĈŜầŷĝĥẦŶĜĤ 117
alt-gr+é ◌́ stipule un accent aigu au prochain caractère ´ṕóǘĺźẃáúíéćśŕŕńḿýḱǵḉṔÓǗĹŹẂÁÚÍÉĆŚŔŃḾÝḰǴḈ 88
alt-gr+è ◌̀ stipule un accent grave au prochain caractère ò`ǜẁàùìèǹỳÒẀÀÙÌÈǸỲ 37
alt-gr+i ◌̈ stipule un tréma au prochain caractère öẅäü¨ëẗÿẍ 19
alt-gr+v ◌̌ stipule un caron au prochain caractère Pour les chiffres, indique une mise en indice ₍₎₊₋₌₁₂₃₄₅₆₇₈₉₀₌ǒˇďľǰžǎǔǐěčťšřňǩǧȟ 83
alt-gr+l ◌̵, ◌̶, ◌̸, ◌̷ stipule une barre inscrite au prochain caractère ƀᵽøł/ɉƶⱥʉɨɇȼŧɍɏǥħɃⱣØŁɈƵȺɄƗɆȻŦɌɎǤĦ 67
alt-gr+w ◌̆ stipule une brève au prochain caractère ŏ˘ăŭĭĕərənəməằğ 27
alt-gr+n ◌̃ stipule un tilde au prochain caractère õṽãũĩẽñỹÕṼÃŨĨẼÑỸ 36
alt-gr+m ◌̄ stipule un macron au prochain caractère ḗōḕāūīēȳḡḖŌḔĀŪĪĒȲḠ 40
alt-gr+q ◌̊ stipule un rond en chef au prochain caractère ẘåůẙÅŮ 13
alt-gr+g stipule une translittération grecque au prochain caractère βποδλθζωαυιετσρνμψξκχγηφµΒΠΟΔΛΘΖΩΑΥΙΕΤΣΡΝΜΨΞΚΧΓΗΦ 97
alt-gr+ç ◌̧ stipule une cédille au prochain caractère ¸ȩçţşŗņķģḩ 19
alt-gr+shift+é ◌̋ stipule un double accent aigu au prochain caractère őű 2
alt-gr+i+' ◌̈́ stipule un tréma accent aigu au précédent carcartère Tous les caractères peuvent être combiné avec ce diacritique, cependant comme il agit sur les caractères qui le précèdes, il ne présente pas d’intérêt dans la présente démarche. N/A N/A
^+alt-gr+é ầốế 3

Toutes les touches n’ouvre pas au même nombre de combinaison, elles ouvrent cependant à plus de combinaisons que celles pourtant déjà conséquente qu’emploi vim en termes de commande faisant intervenir un couplage de deux touches successive. En effet les caractères [, ], g, z et Z ouvrent respectivement à l'attente d'un caractère complémentaire respectivement parmi 18, 39, 65, 45 et 2 possibilités. Soit un total de 169 opérations, dont certaines sont néanmoins de simples synonymes. Il est clair que les seules combinaisons offertes par ^ sur bépo ouvre déjà au même ordre de grandeur d'opérations. Les autres modificateurs amènent le compte bien au-delà des 600 caractères. Cela assure que le nombre d’opérations assignables par ces caractères sera plus qu’amplement suffisant pour ne jamais exiger une saisie plus longue que celle retenu par Vim. Cependant le présent projet de recherche se laisse le libre choix d'assigner à des clés d'accès direct des opérations que Vim assigne à des combinaisons et inversement.

Le clavier TypeMatrix 2030 n'est pas totalement symétrique sur toutes les touches de combinaison. Notamment, les touches alt et alt-gr n’ont chacune qu’une occurrence, respectivement sur la partie gauche et droite du clavier. Aussi, bien que les combinaisons soient répartie sur les deux pans du clavier, cette recherche ne retiendra que celles faisant intervenir les touches sur le pan opposé du clavier à celui de la touche combinatoire, excepté les touches des position sde base (auie et tsrn).

Le tableau ci-après reprend la nomenclature utiliée par Vim pour les nom des caractères, avec des termes entre chevrons. Note : la notaiton M- désigne un caractère dit méta, par initialisme du nom donné à la touché alt sur certains systèmes, à l’instare de C- et S- pour désigné les caractère émis en combinaison des touches contrôle et shift respectivement.

Combinaisons de touches alt et alt-gr retenus comme éligible, trié dans l'orde de lecture
Brut Alt alt-gr
pan gauche
$ ignoré
"
« <
» >
( [
) ]
b |
é ◌́
p &
o œ
è ◌̀
a <M-a> æ
u <M-u> ù
i <M-i> ◌̈
e <M-e>
, ignoré
à \
y {
x }
.
k ~
@ <M-@> ignoré
+ <M->
- <M->
/ <M->
* <M->
= <M->
% <M->
^ N/A
v <M-v>
d <M-d>
l <M-l>
j <M-j>
z <M-z>
w <M-w>
c <M-c>
t <M-t> þ
s <M-s> ß
r <M-r> ®
n <M-n> ◌̃
m <M-m> ignoré
' <M-'>
q <M-q>
g <M-g>
h <M-h>
f <M-f>
ç <M-ç>
<Home> <M-Home>
<Up> <M-Up>
<End> <M-End>
<PageUp> <M-PageUp>
<Left> <M-Left>
<Down> <M-Down>
<Right> <M-Right>
<PageDown> <M-PageDown>

Le Bépo permet par ailleurs l’accès à de nombreux caratères de manière assez simple, par exemple ^ puis é donne ế. Cette étude, bien que faite en toute conscience du grand nombre de combinaisons ainsi réalisables, prend le parti de ne pas en privilégier l’utilisation.

Les touches <suppr>, <backspace> et <entrée> occupent une position centrale sur le Typematrix. Une action aussi courante comme passer du mode insertion au mode normal sera bien plus pertinament placé sur une touche comme <suppr> que sur <esc>.

Sur le bépo la combinaison de shift et de la touche espace envoie le caractère _. La touche espace est souvent associée au caractère spéciale mapleader, qui sert d’introduction à une chaîne spécifiant une commande, et ce sera également le cas dans la disposition qui sera développée ici. En effet, la touche espace est idéalement placée pour être suivi de n’importe quel autre saisie de touche. L’adjonction d’une émission de caractère par la combinaison de shift+espace offre une seconde opportunité tout aussi équilibré, puisque shift est fourni en deux touches symétriquement positionnées sur le clavier TypeMatrix 2030.

Configuration visée modifier

Le tableau suivant offre une première proposition de dispotion spatialement plus cohérente pour les groupes de fonctions associées. La matrice est cette fois calqué sur un clavier Typematrix 2030, où les colones sont intitulés sur la première ligne du clavier.

Chaque touche est représenté par son nom en intitulé, surmonté de cinq cases représentants respectivement l’opération associée au signal envoyer par la saisie de la touche seul, avec shift, avec contrôle, avec alt ou alt-gr et précédé de ^.

num
Esc F1 F2 F3 F4 F5 <BS> F6 F7 F8 F9 F10 F11 F12
📷̰ ⎇̱̰ ↶̰ 🔽 🔍 🔼 🔎 ↷̰
$ " « » ( ) @ + - / * = % 🖩
🗃 🔖 🎯 📷 ͍⎇̱ <del> ⩩̭̌ 📍 🗨 🗩 ⬃̲ ⌦̳ ⃡⮒
tab b é p o è ^ v d l j z w 🖂
🗲 🕸 🌩 🐚 ⎇̱ <enter> ⃗𝄙 →𝄚 ⃯𝄙 🢤 🖘 🢥 🖙 🢚
shift a u i e , c t s r n m shift
🗙 ↶̥ ·⤝ ⤞· ↷̥
à y x . k ' q g h f ç 🌎
📹 📽 🗜 👁̣ 👁̲ 👁̻ ctrl
ctrl ê <menu> <alt_l> entrée <desktop> <home> <up> <end>
fn <super> alt
alt gr <left> <down> <right>

Notation modifier

 ⟲
répéter


Extensions possibles à cette démarche modifier

Cette étude se focalise sur une approche monoapplicative. Cependant en pratique l’utilisation d’un logiciel comme Vim est souvent exécuté au sein d’un environnement Shell comme Bash ou Zsh, lui-même possiblement exécuté au sein d’un multiplexeur de terminal comme Screen ou Tmux, le tout souvent lancé au sein d’un émulateur de terminal comme Xterm, lui même affiché au sein d’un environnement de fenêtrage comme X11. Toutes ces imbrications logiciels sont autant d’éléments dont l’étude n’a que partiellement tenu compte en évitant d’utiliser trop abondament des touches notoirement réservés par un de ces environnement encapsulant qui en capture l’émission et la traite sans jamais la repasser à un logiciel situé en aval dans la chaîne d’encapsulation.

Il serait donc intéressant d’étendre cette étude à la résolution des éventuels conflits de préemption de traitement des signals, et à au développement d’une correspondance plus cohérente des raccourcis clavier entre ces différents niveauxx

Notes modifier

  1. Dans vi et et ses successeurs h, j, k, l correspondant respectivement au déplacement gauche, bas, haut, droit (←, ↓, ↑, →). Ce choix est d’ailleurs lui-même suboptimal par rapport à la position de base des doigts sur le clavier. Ce choix a en réalité conduit par les caractères qui était dessinées sur le terminal ADM-3A qu’utilisait Bill Joy au moment de la création de vi[1]Erreur de référence : Balise fermante </ref> manquante pour la balise <ref>.

Références modifier

  1. Here is why vim uses the hjkl keys as arrow keys - good coders code, great coders reuse
  2. Ainsi <C-s> et <C-q> sont historiquement associé au contrôle du flux du terminal, sous lequel vim opère le plus souvent. Ce type de contrainte peut-être néanmoins généralement être paramétré.

Ressource afférentes modifier