EDIT: en fait ça existe déjà, cf. mon message plus bas.

Bien le bonjour,


Après une réflexion de quelques journées, j'en suis venu à me poser une question: pourquoi les touches modificatrices de nos claviers actuels ne pourraient pas fonctionner de la même manière qu'une touche morte (comme sur nos smartphone (si quelqu'un a un meilleur terme pour désigner ceux-ci…)). J'y vois un grand nombre d'avantages:
– plus facile pour les handicapés: plus accessible
– raccourcis claviers et majuscules bien plus faciles à faire, sans torsions: beaucoup plus confortable
– le doigt ne devant pas rester sur la touche modificatrice peut aller plus vite chercher la prochaine lettre: plus de vitesse

Pour le côté technique:
– à partir du moment où on a frappé un autre caractère non-modificateur ça ne fonctionne plus comme une touche morte
– si on appuie à nouveau sur une touche modificatrice, cela annuler son effet, néanmoins on ne peut pas savoir si elle est activée. On peut utiliser le voyant de verrouillage majuscule pour indiquer qu'une touche est activée, mais c'est assez limité. On peut aussi faire apparaître quelque chose sur l'écran, un indicateur comme ceux que l'on a pour changer de clavier par exemple.
– pour les mêmes raisons on pourrait aussi instaurer un temps d'expiration de l'effet de la touche, qui serait réinitialiser si on appuie sur une autre touche modificatrice (comme lorsque l'on fait <Ctrl><Alt>).
– finalement il y a aussi la solution d'une touche qui annule tous les effets, je pensais à la touche Échap qui pourrait être «capturée» par Xorg.

J'imagine que ça ne doit pas être bien compliqué à implémenter, et je me doute que ce n'est pas de votre ressort, mais je sais que vous pourrez me donner des conseils et surtout vos avis sur cette idée. Notamment, je me demande où est-ce que ça s'implémente? Je suppose que la majorité de ce dont je vous ai parler devrait s'implémenter dans Xorg (ou Wayland? :p), tandis que la partie indicateur devrait s'implémenter dans l'environnement de bureau.


Merci de votre attention, et n'hésitez pas à donner votre avis sur mes idées.
Réflexion intéressante.

C'est sans doute possible au niveau logiciel, la touche Compose fonctionne ainsi, à confirmer.

C'est tout à fait envisageable de programmer ce comportement sur un microcontroleur de type Teensy2. Aussi il est possible d'ajouter une led par touche modificatrice puisque ce genre d'installation n'est limité que par le nombre d'entrées/sortie disponible sur le modèle choisi (sur des cartes de type Arduino il existe différents modules dont certains permettant d'ajouter davantage de ports).
Je ne parle pas uniquement de créer un clavier ou d'en modifier un, il est possible de simplement faire un petit boitier « nomade », intermédiaire entre le clavier et l'ordi, contenant la carte et les leds ainsi n'importe quel clavier peut avoir ce comportement sur n'importe quel ordi et ce, peu importe le système d'exploitation. Ce genre de dispositif existe déjà pour un adaptateur de claviers AT - PS/2 - XT… vers USB http://deskthority.net/workshop-f7/xt-at-ps2-terminal-to-usb-converter-with-nkro-t2510.html?sid=7d6908e11bb008aa1a95b0aa2fc86d5a et ne necessite que quelques notions de soudure et de langage C, en plus de quelques dizaines d'euros de matériel.


PS. Au lieu de "smartphone" on pourrait dire « un mobile tactile » (en reprenant le terme anglais "mobile" plus explicite que « GSM » ou « portable ») puisque la majorité des modèles ont un écran tactile à la place des touches.
Sinma :
Je suis tout à fait d'accord et je te remercie d'avoir abordé le sujet.

Le contre argument, ce serait que beaucoup de gens enfoncent ces modificatrices par erreur, pour préparer une frappe que finalement ils ne feront pas. Tu vas leur faire perdre deux fois plus de temps (la frappe sur mobile étant déjà très lente, elle peut se le permettre, je crois.) Perso j'y avais pensé, mais je n'ai pas franchi le pas. Tu me donnes envie d'essayer, pour voir pourquoi ça cloche !
C'est vrai qu'il pourrait y avoir un gain de temps, potentiellement.

Par ailleurs, dans ce cas pourquoi ne pas adopter l'autre comportement des modificatrices de mobile, à savoir que le double appui verrouille la modificatrice ? Cela me semble également très efficace.

Après, de mon côté, ma disposition actuelle a des modificatrices supplémentaires et allume effectivement la DEL de MAJ à chaque fois qu'une mod est enfoncée. Ce n'est pas franchement utile, juste rassurant quand on commence.

Je ne peux pas aider niveau technique, je ne fais que Windows.

XavierC : Mobile tactile c'est 4 syllabes, deux fois plus long que smartphone, ça donne pas envie ^^
Bonjour,
Sinma a écritj'en suis venu à me poser une question: pourquoi les touches modificatrices de nos claviers actuels ne pourraient pas fonctionner de la même manière qu'une touche morte […]. J'y vois un grand nombre d'avantages:
- plus facile pour les handicapés: plus accessible
- raccourcis claviers et majuscules bien plus faciles à faire, sans torsions: beaucoup plus confortable
En principe, on doit toujours utiliser la touche modificatrice qui est sur l’autre main que la touche qu’on tape ; ainsi, pas de torsion. Bon, pour ça, AltGr devrait être symétrique. Faute d’avoir entendu raison à ce sujet, les concepteurs du Bépo ont au moins évité de mettre des caractères très utiles en AltGr à droite.
Sinma a écrit- le doigt ne devant pas rester sur la touche modificatrice peut aller plus vite chercher la prochaine lettre: plus de vitesse
Moi, j’y vois un inconvénient : si tu veux taper plusieurs chiffres ou majuscules d’affilée, il faudra retaper sur la touche modificatrice entre chaque. Pénible.
Sinma a écritPour le côté technique:
- à partir du moment où on a frappé un autre caractère non-modificateur ça ne fonctionne plus comme une touche morte
- si on appuie sur une touche modificatrice sans faire exprès, c'est assez problématique. Il suffirait d'appuyer à nouveau sur cette touche pour annuler l'effet, néanmoins on ne peut pas savoir si elle est activée. On peut utiliser le voyant de verrouillage majuscule pour indiquer qu'une touche est activée, mais c'est assez limité. On peut aussi faire apparaître quelque chose sur l'écran, un indicateur comme ceux que l'on a pour changer de clavier par exemple.
- pour les mêmes raisons on pourrait aussi instaurer un temps d'expiration de l'effet de la touche, qui serait réinitialiser si on appuie sur une autre touche modificatrice (comme lorsque l'on fait <Ctrl><Alt>).
- finalement il y a aussi la solution d'une touche qui annule tous les effets, je pensais à la touche Échap qui pourrait être «capturée» par Xorg.

J'imagine que ça ne doit pas être bien compliqué à implémenter
Alors pour le fonctionnement de base, la touche morte du Dvorak de Francis Leboutte fonctionne comme cela. Donc il suffit de regarder comment c’est fait :
key <AE08> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", [ ISO_Level3_Latch,          8,           grave ] };
Logiquement, les autres modificateurs devraient avoir aussi une version _Latch.
Du coup, il suffit de modifier la définition du clavier.

Pour l’indicateur, il y a moyen de paramétrer dans une certaine mesure les voyants du clavier (note que l’arrêt défilement ne sert plus vraiment de nos jours).

Par contre, pour les autres fonctionnalités (délai, touche d’annulation globale…), je ne sais pas si ça peut se faire sans modifier Xorg. Et si tu en arrives là, modifier Xorg n’est que la première étape. Ensuite, il faut soit faire une modification assez propre et être assez convaincant sur son intérêt pour qu’elle soit inclue dans Xorg, soit maintenir le patch pour chaque nouvelle version qui sort.

Pour ma part, ce que j’aurais bien vu, ça aurait été que les touches modificatrices se comportent normalement si l’on appuie au moins une autre touche avant de les relâcher, mais se comportent comme Verr. Maj. sinon. Au moins pour Maj et AltGr (j’ai les chiffres en AltGr), mais pourquoi pas aussi Ctrl, pour les utilisateurs d’Emacs. 😉
En plus, ça libérerait Verr. Maj. pour autre chose, par exemple un effacement arrière plus accessible que l’actuel.
Mais pour ça, je ne vois pas non plus comment faire sans modifier Xorg.
XavierC a écritAu lieu de "smartphone" on pourrait dire « un mobile tactile » (en reprenant le terme anglais "mobile" plus explicite que « GSM » ou « portable ») puisque la majorité des modèles ont un écran tactile à la place des touches.
J’ai un « mobile tactile » qui n’est pas un smartphone. Accessoirement, son clavier virtuel fonctionne de la même manière.

Par ailleurs, il y a aussi des smartphones qui ont un clavier alphanumérique physique (escamotable pour certains).

Paradoxe supplémentaire : beaucoup de personnes utilisent un téléphone intelligent (« smart phone ») principalement pour envoyer des conneries par texto.
Laurent :
principe, on doit toujours utiliser la touche modificatrice qui est sur l’autre main que la touche qu’on tape
Je ne suis qu'à moitié d'accord : tout d'abord, c'est vrai pour ctrl, mais pas pour alt ou une modificatrice qui serait mieux placées. Moi j'ai beaucoup utilisé la touche de repos des auriculaires comme modificatrices ! Dans ces cas là ,pas de contorsion.
De plus, utiliser les deux mains brise l'alternance : c'est plus lent en soi et cela ralentit le caractère suivant.
inconvénient : si tu veux taper plusieurs chiffres ou majuscules d’affilée, il faudra retaper sur la touche modificatrice entre chaque.
Pas forcément. La comportement normal de la mod peut être maintenu en plus de celui décrit par Sinma. À l'appui de la modificatrice, la modification est activé, et la condition de désactivation est "la touche est relâchée" ET "une autre touche a été appuyée".
Oui donc mauvaise suggestion de terminologie ^^

Pour ajouter un autre point négatif à cette fonction « façon Compose » j'imagine déjà la difficulté pour utiliser pleinement des outils graphiques comme Inkscape ou Gimp avec ce genre de comportement des modificatrices (Ctrl Alt Maj) et même tout simplement pour sélectionner du texte dans une application sans raccourcis à la Vi (…à la mort… OK je sors)

EDIT : Fabien a contourné le problème cité
Sur Windows, ça y est par défaut depuis au moins XP.
Ça s’appelle les touches rémanentes (sticky keys en anglais)
C’est en général assez connu pour faire biper les pc dans les salles machines (bourinage de la touche shift)

sh = caps lock usage unique (comme deadkey/compose)
sh sh = caps lock, et sh pour le désactiver

Dans le principe, je trouve ça très intéressant et permettrait d’accélérer la vitesse de frappe et éviter certaines contorsions des doigts.
Je voulais le tester, mais ça me fait faire un double appui de la touche windows pour ouvrir le menu démarrer, c’est assez chiant (oui je sais y me faudrait un truc mieux que le menu démarrer pour mes programmes)

Sur le forum colemak, y en a qui essayent de l’activer uniquement pour la touche shift :
http://forum.colemak.com/viewtopic.php?id=1311
Bonjour

Sur un clavier "normal" je ne vois pas bien l'intérêt des touches rémanentes, sauf peut-être effectivement pour certains handicaps. Comme l'indique Laurent, sur une disposition Bepo ça se passe relativement bien à deux mains. Par contre sur des claviers un peu spéciaux on n'y coupe pas, voir http://chordite.com/.

Pour mon prototype avec les modificatrices sous les pouces (http://forum.bepo.fr/viewtopic.php?pid=5728#p5728) j'ai été amené à systématiser ce principe. De ce que j'ai compris, les touches shift, alt etc ont deux fonctions distinctes, choisir les caractères à envoyer à l'ordinateur et transmettre des commandes. De plus, le comportement des modificatrices est fonction de la deuxième touche appuyée. Ctrl-X est une commande, Shift-A un caractère, par contre Shift-up est une commande.
J'ai ainsi défini deux groupes de touches (http://forum.bepo.fr/viewtopic.php?pid=5765#p5765), les modes (normal, majuscule, caractères spéciaux, numériques, touches FN et huit pages configurables) (pour l'ergodox il me semble qu'ils appellent ça des Layout) et les fonctions (Ctrl, Alt, Shift, Altgr, GUI). Ce deuxième groupe sert essentiellement pour la compatibilité avec les raccourcis des applications. La distinctions entre ces deux groupes n'est pas forcement claire puisque l'appui sur "a" en mode majuscule donne le même résultat que Shift puis a en mode normal mais il fallait bien trouver une solution simple aux raccourcis du genre CTRL-MAJ-A.

Pour les modes, le fonctionnement est le suivant :
- le mode par défaut est le mode normal (qui a aussi sa touche).
- Un premier clic sur un mode l'active pour un caractère puis repasse au mode précédent ;
- un double clic verrouille le mode.

On peut donc être en mode numérique pour saisir des opérations dans excel et activer pour un caractère le mode normal pour commencer une cellule par une apostrophe (que j'ai oublié dans ce mode...)

Pour les fonctions, le fonctionnement est un peu semblable sauf qu'il faut pouvoir les cumuler. Ben oui, tout est sous le pouce gauche, plusieurs touches à un doigt c'est pas facile. N'ayant pas réussi à me décider je peux choisir entre deux comportements, soit les touches restent actives tant que l'on ne réapprit pas dessus (mode toggle), soit elles sont désactivées dès que l'on presse une touche "normale". Le mode toggle est pratique si on veut faire plein de copier coller à la suite. En fait j'ai quand même ajouté des boutons C-X, C-V, C-C, et Ctrl-alt-Supp qui sont assez pratiques.

Je dois avouer que l'emploi des fonctions sur un mode différent du mode normal peut parfois être délicat. Heureusement on fait rarement des CTR-GUI-æ.

Le difficulté de ce fonctionnement est effectivement de savoir où on est. Plutôt que d'utiliser des diodes, j'ai opté pour un petit écran, plus souple en phase d'expérimentation. Il présente le mode en cours, au besoin celui dans lequel le clavier va revenir après la prochaine touche, et l'ensemble des fonctions en indiquant celles qui sont actives.

L'idée du temps d'expiration est pas mal, ça peut se tester.

Autre idée empruntée aux téléphones c'est la touche accent. Je tape "e" puis la touche accent jusqu'à trouver la bonne lettre. J'ai conservé les plus courantes en accès direct (é à è). C'est loin d'être optimal mais c'est assez ludique.

Pour ceux qui ont le courage de voir du code pas propre, je viens de trouver le temps de mettre mon programme teensy sur GitHub (github.com/Bigot/cladeon).

Jeff
Oulà trop de réponses!!!


Je rappelle l'idée de base, c'est de faire la même chose que le Bépo, tout se gérant au niveau logiciel et éventuellement des claviers/dispositifs par la suite (non je n'ai pas l'âme d'un bricoleur…) Comme ça tout le monde pourrait en profiter simplement.

Pour le fonctionnement, l'idée c'est bien de garder le comportement classique si on appuie longtemps (= appuyer sur une autre touche sans relâcher le modificateur). L'idée de l'appui double pour verrouiller la touche est intéressante, mais on a déjà le verrouillage majuscule et je ne pense pas que ce soit courant de taper plusieurs caractères en <Alt Gr> ou en <Ctrl> pour que ça en vaille la peine (à ce moment là on utilise le comportement classique)
Du coup appuyer à nouveau sur une de ses touches annulerait alors son effet, ce serait donc beaucoup plus simple et compréhensible pour tout le monde.

Pour les petites digressions, un ami m'avait parlé de Webphone, mais réduire Internet au Web c'est un peu gros quoi. Et je ne peux pas piffer ce terme de «smart» phone, car mon téléphone est un con… Et le terme «ordiphone» n'est pas mieux non plus!
Et enfin les touches rémanentes, mais qu'est-ce que ça me faisait chier à l'époque quand je jouais à des jeux qui utilisait beaucoup la touche Maj (pour ceux qui ne savent pas: au bout de 3 ou 4 utilisations rapprochées on avait le droit à bip très moche, sortie du plein écran et message abscons me parlant des touches rémanentes, au moins quand j'avais 5 ans…) Alors il suffisait de laisser la fenêtre et de retourner dans le jeu pour jouer tranquillement.


Librement,
Robipo a écritÇa s’appelle les touches rémanentes (sticky keys en anglais)
En le codant nous même, évidemment on peut éviter ce pb en donnant indépendamment à chaque mod le comportement requis, différent pour maj, win, ctrl et – dans mon cas – mes modificatrices ponctuation, couche numérique, etc.
Bon en fait je viens juste de me rendre compte que ça existe déjà! Et dans Xorg en plus… Ça se trouve dans les options d'accessibilité (accès universel sous GNOME). En même temps je vais tellement rarement dans les options d’accessibilité que bon c'est un peu normal que je ne l'ai pas vu…

Cela s'appelle «touches rémanentes» (GNOME), «touches collantes» (Xfce) et «touches automaintenues» pour (KDE), dispo donc sous Windows et très probablement sur Mac OS. C'est vraiment idiot que je ne m'en suis pas rendu compte avant… Ça apporte quand même pas mal de confort, pour les raccourcis claviers on peut s'épargner nombre de torsions, pour une frappe classique la différence est quand même moindre.

EDIT: en fait c'est assez chiant quand on utilise <Ctrl> ou <Maj> dans un gestionnaire de fichier… Faut voir si on peut pas remplacer ça par la touche compose, ça serait à mon avis beaucoup plus pratique.

Cela me fait penser à une conférence donnée à la dernière Ubuntu Party de Paris sur les technologies d'assistance (que vous conseille très fortement de regarder). Notamment une phrase qui résonne désormais différemment dans ma tête: «Nécessaires à certains, […] mais utiles à tous». Car la télécommande, l’ascenseur, et la souris ont été inventés pour des personnes souffrant d'un handicap. On dit merci qui?

Bon bah moi je vais faire joujou avec mes touches collantes hein! 😃
un mois plus tard
Hello,

je viens de prendre un peu de temps pour me coder le comportement donc nous avons parlé, pour mon windows. Je le mets ici au cas ou des utilisateurs AHK (et donc PKL) en auraient besoin.
; Activation de la couche MAJ
#if (couche="") ; si aucune couche n'est activée
*sc038:: ; à l'appui de l'ancienne touche alt
couche:="maj" ; activation de la couche
setcapslockstate, on ; allumage de la diode sur le clavier
Toucheprec:= A_thishotkey ; stockage de cette touche pour usages ultérieurs
return

; Désactivation de la couche MAJ. Prévu pour fonctionner comme une touche morte ET comme une modificatrice
#if (couche="maj") ; si la couche Majuscule est activée
*sc038 up:: ; à la relache de la touche 38 (ancienne ALT)
If (A_PriorHotkey = toucheprec) ; Si aucune touche n'a été appuyée depuis l'appui de la mod, donc c'est un usage en touche morte.
{
Input, touche, L1 M ; attendre qu'une touche soit appuyée et la stocker dans la variable "touche"
Send %touche% ; envoyer cette frappe
}
couche:="" ; désactiver la couche (ceci gére aussi bien la touche morte que la touche modificatrice classique)
SetCapsLockState, off ; éteindre le voyant
return