autocomplete no nível da área de trabalho

11

Eu geralmente escrevo as mesmas palavras em vários aplicativos:

  • Editor (emacs, vi)
  • Webbrowser
  • Shells

Seria ótimo ter um autocomplete das palavras que eu digitei durante a última semana disponível em todos os aplicativos acima.

Cada um deles tem uma maneira de melhorar a velocidade de digitação. Mas algo no nível do desktop seria o melhor.

Exemplo: "Integração Contínua". Eu quero uma maneira rápida de digitar essa palavra sem alterar o programa que recebe a entrada.

Já existe algo assim?

    
por guettli 07.01.2014 / 16:59

3 respostas

7

A solução para o seu pedido é o método de entrada.

O que você descreveu é algo familiar para a maioria dos usuários de idiomas CJK. Vamos rever como o método de entrada funciona nos sistemas Linux atuais.

O sistema do método de entrada

Aqui está uma arquitetura simples para um sistema de método de entrada comum:

OBSERVAÇÃO: faço um instantâneo desta imagem no Protocolo de método de entrada X . Algumas das setas são irrelevantes para acompanhar a discussão.

Historicamente, o XIM (o protocolo X Input Method) era o único protocolo. É excessivamente complexo e carece de alguns recursos desejados. Então, ele é praticamente abandonado, embora a compatibilidade ainda seja fornecida por kits de ferramentas populares como GTK, Qt.

Um sistema moderno de método de entrada contém várias partes:

  1. Suporte à biblioteca no lado do cliente

    • normalmente implementado como um módulo carregado por kits de ferramentas (por exemplo, para o GTK, consulte /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/ )
  2. Servidor do método de entrada
  3. servidor X

Como essas partes 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 de aplicação (GTK, Qt) intercepta o evento e passa a informação para o servidor do método de entrada. O servidor do método de entrada define o que o usuário pode desejar e passa algum texto de volta para o módulo de MI.

Agora, vamos falar sobre a arquitetura do servidor de mensagens instantâneas.
Um servidor de mensagens instantâneas normalmente consiste em duas partes:

  1. Uma estrutura de mensagens instantâneas que lida com detalhes específicos da plataforma e fornece uma interface agradável para os módulos IM do mecanismo de IM e do kit de ferramentas. Ele fornece os mecanismos de IPC usados pelo módulo de IM, servidor e mecanismo.
  2. Vários mecanismos de mensagens instantâneas realizam o trabalho real de transformar as chaves digitadas pelo usuário em texto desejado. Os mecanismos de IM podem ser bibliotecas compartilhadas carregadas pelo servidor de IM ou processos independentes se comunicando com o servidor de MI.
  3. Os programas de configuração de método de entrada auxiliar fornecem uma interface de usuário amigável para personalizar o servidor de IM e os comportamentos do mecanismo.

Em resumo, 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 . 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 caso ibus-pinyin , han yu pin yin é encurtado para h y p y .
Mecanismos de mensagens instantâneas mais avançados utilizam técnicas de aprendizado estatístico para fornecer uma previsão melhor. Nada pode impedi-lo de escrever um mecanismo de método de entrada em inglês para fornecer um aumento de digitação.

Como bônus, todos os kits de ferramentas têm suporte ao método de entrada, exceto alguns programas X antigos simples. Portanto, esta é uma solução bastante universal.

Obrigado a Anders F. U. Kiær. Recursos / Booster de digitação | O Wiki do Projeto Fedora deve ser a resposta

    
por sgx1 13.01.2014 / 10:12
1

Dê uma olhada no meu script, TextSuggest .

Em ação:

Instalação:

Instale os seguintes pacotes:

  • xdotool
  • xclip
  • suckless-tools (para dmenu )

Em seguida, atribua dois atalhos de teclado:

  • um para 'python3 /path/to/TextSuggest.py --noselect
  • o outro para python3 /path/to/TextSuggest.py

O primeiro simplesmente fornecerá uma lista pesquisável de todas as palavras. Use o segundo quando tiver algum texto selecionado e quiser receber sugestões / conclusões para ele.

As sugestões aceitas são armazenadas como histórico (e são sugeridas primeiro) no arquivo ~/.textsuggest_history.txt .

Você pode definir palavras personalizadas e expansões / aliases em ~/.Custom_Words.txt .

    
por UniversallyUniqueID 06.06.2016 / 13:14
0

Dê uma olhada no Autokey . Pode se adequar às suas necessidades. C / P do site:

  

O AutoKey é um utilitário de automação de desktop para Linux e X11. Ele permite que você gerencie a coleta de scripts e frases e atribua abreviações e teclas de atalho para elas. Isso permite que você execute um script ou insira texto sob demanda em qualquer programa que esteja usando.

    
por Detnuomnu 13.01.2014 / 13:40