web-dev-qa-db-fra.com

Maintenez les touches pour le modificateur

Je suis tombé en amour avec le fait de pouvoir appuyer sur une touche sur Android pendant environ 100 ms pour obtenir une touche de ponctuation "en dessous" (sinon présente dans le menu), et j'aimerais beaucoup avoir cette même capacité pour Ubuntu. Je n'ai pas besoin de répéter les caractères pour ne rien manquer. Est-ce possible, et si oui comment? Merci :)

22
Patrick

Il n'y a actuellement aucun moyen rapide et facile d'activer ce type de fonctionnalité sur la version de bureau d'Ubuntu.

Personnellement, je suis un grand fan de la raccourcis clavier par défaut ; Je les trouve plus rapides et beaucoup plus intuitifs que la sélection par pression longue de type mobile (♥). Cela dit, si vous avez le temps et la détermination nécessaires, vous pourrez peut-être superposer l’option slowkeys de l’application de base Universal Access par défaut pour créer quelque chose de similaire à l'option mobile.

En fouillant moi-même, XKB semble être associé au contrôle slowkeys. Vous pouvez utiliser XKB pour configurer et améliorer les liaisons de clavier d'Ubuntu. Autant que je sache, cette section répond à vos besoins. Il ne devrait donc pas être (relativement) difficile d’avoir une impression de caractère alternative lorsque la touche est enfoncée depuis longtemps.

Lorsque les choses se compliquent, attribuez plusieurs caractères spéciaux à une frappe (exemple: maintenez enfoncé "a" et obtenez les options pour ä, à, á, â, etc.). Comment parcourez-vous les options? Avez-vous les caractères pop-up dans une fenêtre de dialogue, puis utilisez la souris, les touches de tabulation ou les touches fléchées pour en sélectionner un? Cela prend du temps.

Ou vous pouvez attribuer différentes durées de maintien à différents caractères. 100 ms pendant à, 200 ms pendant á, 300 ms pour â ... Mais se rappeler combien de secondes sont des moments difficiles pour les personnages, sans parler de les attribuer à chacun individuellement, ce serait un casse-tête. De plus, lorsque vous entrez dans une longue liste de personnages, vous pouvez rester assis pendant 3 à 4 secondes avec une touche. Semble encore plus de temps.

Plutôt que des touches lentes, vous pouvez essayer l’option repeatkeys au lieu d’avoir plusieurs taps sur une touche qui fournissent un caractère spécial: 3 taps de "a" pour à, par exemple. Mais vous risquez alors que des caractères spéciaux non désirés apparaissent lorsque vous tapez quelque chose comme "bon", "étrange" ou "aaaaaaahhh!"

Vous avez peut-être mis au point une autre méthode d'implémentation plus efficace à laquelle je ne pense pas, auquel cas allez-y et modifiez-la! Mais je recommanderai quand même de composer des combinaisons de touches dans l’intervalle. ☺

2
Boxbot

Je suis certain que cela est possible en modifiant la routine de service d'interruption du clavier (ISR). Chaque fois qu'une touche est enfoncée, un signal d'interruption est envoyé à la CPU. La CPU traitera ensuite cette interruption en exécutant l'ISR du clavier.

Les ISR sont des programmes de bas niveau, généralement codés en langage Assembly, car ils traitent directement avec le matériel et doivent être rapides. Ici est plus d'infos sur les interruptions matérielles sur les processeurs Intel et comment les utiliser.

Les claviers disposent de leurs propres processeurs depuis l’origine du PC IBM et peuvent générer des caractères très rapidement si une touche est maintenue enfoncée.

Quelques définitions pourraient être utiles ici:

Repeat Delay : le temps écoulé entre le moment où vous appuyez sur la touche et le moment où il commence à se répéter.

Taux de répétition : après avoir appuyé sur une touche, le clavier répète cette touche. La vitesse à laquelle il se répète est le taux de répétition. Parfois appelé le tarif typématique.

La routine ISR du clavier devrait être modifiée pour substituer la fonction Répéter le délai à une fonction "Caractère alternatif". Le timing de la pression sur une touche et de la libération en est l’essence. En mesurant la durée de l'appui sur la touche, l'ISR (ou le gestionnaire d'interruptions) saurait transmettre le caractère normal du caractère de remplacement (la touche "située sous" celle-ci)

Essentiellement, vous devez modifier ou réécrire le pilote de périphérique pour le clavier.

Ceci est juste une vue d'ensemble de l'approche que je pense serait nécessaire pour réaliser ce que vous voulez.

0
dbkeys

Étant donné que le pavé tactile fonctionne comme l’écran tactile sous Android, il offrirait une meilleure interface que le clavier. En effet, un nouvel ensemble de routines pourrait être mis en œuvre pour zoomer en déplaçant pouce et index ensemble et effectuer un zoom arrière en inversant la direction.

Le pavé tactile peut déjà détecter un doigt, deux doigts, même les paumes bougeant accidentellement contre le pavé tactile et donc ignoré. Les vitesses d'accélération et de décélération sont reconnues. Il contrôle déjà le pointeur de la souris pour le texte que vous souhaitez surligner en appuyant longuement.

Les programmeurs devraient pouvoir ajouter un peu de code supplémentaire pour mesurer la longueur de la presse tactile et créer un menu contextuel pour select, copy, paste, etc. comme le les smartphones font aujourd'hui.

Je pense que votre question est une excellente idée qui peut faire évoluer les logiciels et les claviers avec pavés tactiles intégrés vers un tout autre niveau. Je tiens à souligner que certains pavés tactiles intégrés aux claviers ont un écran couleur LCD qui pourrait vous aider à aller encore plus loin. c'est-à-dire que le texte à l'écran en surbrillance peut être reflété sur le pavé tactile LCD et zoomé pour des mouvements fins.

Apple, Google, Microsoft et Linus pourraient tous être enthousiasmés par votre idée. Cela a certainement piqué mon intérêt!

0
WinEunuuchs2Unix