Mantenha pressionadas as teclas do modificador


23

Eu me apaixonei por poder manter pressionada uma tecla no Android por cerca de 100ms para obter uma tecla de pontuação 'embaixo' dela (caso contrário, encontrada no menu), e eu adoraria ter a mesma habilidade no Ubuntu. Não preciso repetir caracteres, para não perder nada. Isso é possível e, em caso afirmativo, como? Obrigado :)


É tarde, mas você pode elaborar mais sobre a funcionalidade que você gostaria de implementar para o Ubuntu.?
Harshit 9/10/16

1
@ Harshit, claro: usando o teclado do Google, no Android, é possível selecionar a capacidade de manter pressionadas as teclas no teclado -oft para digitar pontuação, sem ter que ir para um menu separado. Idealmente, isso seria implementado como uma opção no Ubuntu, pressionando, digamos, a tecla '2' por 100ms, digite '@', pressionando '-' types '_' e assim por diante.
Patrick

Respostas:


3

Atualmente, não existe uma maneira rápida e fácil de habilitar esse tipo de funcionalidade na versão desktop do Ubuntu.

Pessoalmente, sou um grande fã dos atalhos de teclas de composição padrão ; Acho-os mais rápidos e muito mais intuitivos do que a seleção de imprensa longa no estilo móvel (♥). Dito isso, se você tiver tempo e determinação, poderá pegar a opção slowkeys no aplicativo principal do Universal Access padrão para criar algo semelhante à opção móvel.

Observando isso pessoalmente, o XKB parece estar associado ao controle das teclas lentas. Você pode usar o XKB para configurar e aprimorar as ligações do teclado do Ubuntu e, até onde sei, esta seção tem o que você precisa. Portanto, não deve ser (relativamente) difícil ter um caractere alternativo impresso quando uma tecla é mantida por muito tempo.

Onde as coisas ficam complicadas é atribuir vários caracteres especiais a um pressionamento de tecla (exemplo: mantenha pressionado "a" e obtenha opções para ä, à, á, â, etc.). Como você percorre as opções? Você exibe os caracteres em uma janela de diálogo e, em seguida, use as teclas do mouse, tab ou seta para selecionar uma? Parece demorado.

Ou você pode atribuir diferentes comprimentos de espera a caracteres diferentes. 100ms valem para, 200ms valem para, 300ms para ... Mas lembrar quantos segundos são necessários para que os personagens se tornem complicados, sem mencionar a atribuição de todos eles individualmente, seria uma dor de cabeça. Além disso, quando você entra em listas mais longas de caracteres, pode ficar sentado segurando uma tecla por bons 3-4 segundos. Parece ainda mais demorado.

Em vez de teclas lentas, você pode tentar a opção repeatkeys para que vários toques de uma tecla forneçam um caractere especial: 3 toques de "a" para à, por exemplo. Mas você corre o risco de aparecer caracteres especiais indesejados quando digita algo como "bom", "estranho" ou "aaaaaaahhh!"

Você pode ter encontrado outro método de implementação mais eficiente que eu não estou pensando; nesse caso, vá em frente e modifique-o! Mas ainda assim recomendo compor combinações de teclas. ☺


1
Examinando seu link, pode ser possível definir cada tecla como uma tecla modificadora como uma pontuação, com um atraso, que é exatamente o que estou procurando! Vou ter que tentar mexer nisso mais tarde.
Patrick

0

Estou certo de que isso é possível, modificando a rotina de serviço de interrupção do teclado (ISR). Sempre que uma tecla é pressionada, um sinal de interrupção é enviado para a CPU. A CPU atenderá essa interrupção executando o ISR do teclado.

Os ISRs são programas de baixo nível, normalmente codificados em linguagem assembly, porque lidam diretamente com o hardware e devem ser rápidos. Aqui estão mais informações sobre interrupções de hardware nos processadores Intel e como usá-los.

Os teclados possuem seus próprios processadores desde os dias do IBM-PC original e podem gerar caracteres muito rapidamente se qualquer tecla for pressionada.

Algumas definições podem ser úteis aqui:

Atraso na repetição : o tempo decorrido entre o pressionamento da tecla e quando começa a repetir.

Taxa de repetição : depois que uma tecla é pressionada, o teclado repetirá essa tecla. A velocidade com que se repete é a taxa de repetição. Às vezes chamado de taxa tipática.

A rotina ISR do teclado precisaria ser modificada para substituir a função Atraso da repetição por uma função 'Caractere alternativo'. O momento da pressão e liberação da tecla é a essência dela. Ao medir a duração do pressionamento de tecla, o ISR (ou manipulador de interrupção) saberia transmitir o caractere normal do caractere alternativo (a tecla "abaixo")

Essencialmente, você modificaria ou reescreveria o driver de dispositivo do teclado.

Essa é apenas uma visão de alto nível da abordagem que eu acho que seria necessária para alcançar o que você deseja.


0

Como o touchpad funciona de maneira semelhante à tela sensível ao toque no Android, ele forneceria uma interface melhor que o teclado. De fato, todo um novo conjunto de rotinas poderia ser implementado para aumentar o zoom, movendo o polegar e o indicador juntos e diminuir o zoom invertendo a direção.

O touchpad já pode sentir um dedo, dois dedos e até as palmas das mãos se moverem acidentalmente contra o touchpad e, portanto, ser ignorado. As velocidades de aceleração e desaceleração são reconhecidas. Ele já está controlando o ponteiro do mouse para o texto que você deseja destacar com um toque longo.

Ele deve ser um pedaço de bolo para os programadores para adicionar um pouco mais de código para medida toque comprimento imprensa e abrir um menu sensível ao contexto para select, copy, paste, etc, como os smartphones fazem hoje.

Acho que sua pergunta é uma ótima idéia que pode evoluir software e teclados com touchpads integrados para um nível totalmente novo. Devo salientar que alguns touchpads incorporados em teclados têm uma tela LCD colorida que pode levar sua ideia ainda mais longe. ou seja, o texto da tela destacado pode ser espelhado no LCD do touchpad e ampliado para movimentos finos.

Apple, Google, Microsoft e Linus podem estar animados com a sua ideia. Isso certamente despertou meu interesse!


Sinto sarcasmo ou isso é genuíno?
Amit Gold

Eu penso que é uma grande ideia. Trazendo algumas das vantagens do smartphone de volta para casa na área de trabalho.
WinEunuuchs2Unix 25/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.