A solução para sua solicitação é o método de entrada.
O que você descreveu é algo familiar para a maioria dos usuários da linguagem CJK. Vamos revisar como o método de entrada funciona nos sistemas Linux atuais.
O sistema de método de entrada
Aqui está uma arquitetura simples para um sistema de método de entrada comum:
NOTA: Tirei uma foto dessa imagem do protocolo X Input Method . Algumas das setas são irrelevantes para a discussão seguinte.
Historicamente, o XIM (o protocolo X Input Method) era o único protocolo. É excessivamente complexo e carece de alguns recursos desejados. Portanto, a maioria é abandonada, embora a compatibilidade ainda seja fornecida por kits de ferramentas populares como GTK, Qt.
Um sistema moderno de métodos de entrada contém várias partes:
Suporte de biblioteca do lado do cliente
- normalmente implementado como um módulo carregado por kits de ferramentas (por exemplo, para GTK, consulte
/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/
)
- Servidor de método de entrada
- Servidor X
Como essas peças se encaixam?
Um usuário digita uma chave. O servidor X recebe o evento de hardware da interface evdev, compõe um XEvent e envia para o aplicativo sob o foco do teclado. O módulo do método de entrada do kit de ferramentas do aplicativo (GTK, Qt) intercepta o evento e passa as informações para o servidor do método de entrada. O servidor do método de entrada calcula o que o usuário pode desejar e passa algum texto de volta ao módulo de IM.
Agora, vamos falar sobre a arquitetura do servidor de MI.
Um servidor de IM geralmente consiste em duas partes:
- Uma estrutura de mensagens instantâneas que lida com os meandros específicos da plataforma e fornece uma interface agradável para os módulos de mensagens instantâneas do mecanismo e do kit de ferramentas de mensagens instantâneas. Ele fornece os mecanismos IPC usados pelo módulo de IM, servidor e mecanismo.
- Vários mecanismos de MI fazem o trabalho real de transformar chaves digitadas pelo usuário no texto desejado. Os mecanismos de IM podem ser bibliotecas compartilhadas carregadas pelo servidor de IM ou processos independentes que se comunicam com o servidor de IM.
- Os programas de configuração do método de entrada auxiliar fornecem uma interface de usuário amigável para personalizar os comportamentos do servidor e do mecanismo de MI.
Em suma, o que um IM faz é transformar o que você digita em algo diferente e, opcionalmente, fornecer previsões.
Um exemplo
Usamos ibus-pinyin
aqui para digitar alguns caracteres chineses.
A romanização de 汉语拼音 é han yu pin yin
. Em, primeiro você precisa digitar todas essas letras para obter os quatro caracteres chineses. Mas, depois de algumas vezes, você só precisa digitar os quatro caracteres iniciais h y p y
para obter o caractere chinês.
No ibus-pinyin
caso, han yu pin yin
é reduzido para h y p y
.
Mecanismos de MI mais avançados utilizam técnicas de aprendizado estatístico para fornecer uma melhor previsão. Nada pode impedir você de escrever um mecanismo de método de entrada em inglês para fornecer um impulso de digitação.
Como bônus, todos os kits de ferramentas têm suporte ao método de entrada, exceto alguns programas X simples e antigos. Portanto, esta é uma solução bastante universal.
Agradecimentos a Anders FU Kiær. Recursos / Booster de digitação | O Wiki do Projeto Fedora deve ser a resposta