Hold chaves para modificador

21

Me apaixonei por poder segurar uma tecla no Android por cerca de 100 ms para obter uma chave de pontuação "abaixo" dela (que também é encontrada no menu), e adoraria ter essa mesma capacidade para o Ubuntu. Eu não preciso repetir personagens, então eu não sentiria falta de nada. Isso é possível, e se sim, como? Obrigado :)

    
por Patrick 15.07.2016 / 15:16

3 respostas

2

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

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

Por aí, eu mesmo, XKB parece estar associado ao controle das teclas lentas. Você pode usar o XKB para configurar e melhorar as ligações do teclado do Ubuntu, e até onde eu 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 é de longa duração.

Quando as coisas ficam complicadas é atribuir vários caracteres especiais a um pressionamento de tecla (por exemplo: mantenha pressionada "a" e obtenha opções para ä, à, á,, etc.). Como você percorre as opções? Você tem os personagens pop-up em uma janela de diálogo, em seguida, use o mouse, tab ou setas para selecionar um? Parece demorado.

Ou você pode atribuir diferentes comprimentos de espera a diferentes caracteres. 100ms segure por à, 200ms segure por á, 300ms por ... Mas lembrando quantos segundos são para quais personagens poderiam ficar complicados, sem mencionar atribuir todos eles individualmente seria uma dor de cabeça. Além disso, quando você entrar em longas listas de personagens, você pode estar sentado lá segurando uma chave por uns bons 3-4 segundos. Parece ainda mais demorado.

Em vez de slowkeys, você pode tentar a opção repeatkeys em vez de ter vários toques de uma chave para fornecer um caractere especial: 3 toques de "a" para à, por exemplo. Mas então você corre o risco de ter caracteres especiais indesejados surgindo quando você digita algo como "bom", "estranho" ou "aaaaaaahhh!"

Você pode ter sugerido algum outro método de implementação mais eficiente que eu não esteja pensando, e nesse caso vá em frente e modifique! Mas eu ainda recomendo compor combinações de teclas nesse meio tempo. ☺

    
por Boxbot 27.10.2016 / 21:07
0

Tenho certeza 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 servirá então aquela interrupção executando o teclado ISR.

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

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

Algumas definições podem ser úteis aqui:

Repetir atraso : o tempo decorrido entre pressionar a tecla e quando ela começa a se repetir.

Taxa de Repetição : Após pressionar uma tecla, o teclado repetirá essa tecla. A velocidade a que se repete é a taxa de repetição. Às vezes chamado de taxa de digitação.

A rotina ISR do teclado teria que ser modificada para substituir a função Repetir Atraso 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 passar o caractere normal do caractere alternativo (a chave "abaixo" dele)

Essencialmente, você estaria modificando ou reescrevendo o driver de dispositivo para o teclado.

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

    
por dbkeys 21.10.2016 / 09:10
0

Como o touchpad funciona de maneira semelhante à tela sensível ao toque do Android, ele fornece 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, poderia ser implementado.

O touchpad já pode sentir palmas de um dedo, dois dedos e até mesmo se movendo acidentalmente contra o touchpad e, portanto, ignorados. Velocidades de aceleração e desaceleração são reconhecidas. Já está controlando o ponteiro do mouse para o texto que você deseja destacar com um toque longo.

Deve ser fácil para os programadores adicionar um pouco mais de código para medir o comprimento da prensa de toque e exibir um menu contextual para select , copy , paste , etc. como os smartphones fazem hoje .

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

A Apple, o Google, a Microsoft e a Linus podem ficar entusiasmados com a sua ideia. Certamente despertou meu interesse!

    
por WinEunuuchs2Unix 25.10.2016 / 03:55