preenchimento automático no nível da área de trabalho

11

Costumo digitar as mesmas palavras em várias aplicações:

  • Editor (emacs, vi)
  • Navegador da Web
  • Cartuchos

Seria ótimo ter um preenchimento automático 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 da digitação. Mas algo no nível da área de trabalho seria o melhor.

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

Já existe algo assim?

guettli
fonte
Você gosta de Synapse ( lifehacker.com/5704221/… )?
Salem
Eu acho que eles significam algo como o preenchimento automático do LibreOffice. Ele salva as palavras que você digita (que atendem a um requisito de tamanho personalizável). Quando você digita as primeiras letras de uma palavra que ela salvou, ela oferece o tipo de resto e você pode pressionar a tecla tab para digitá-la ou continuar digitando para negá-la.
Andy Castille

Respostas:

7

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:

  1. 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/)
  2. Servidor de método de entrada
  3. 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:

  1. 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.
  2. 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.
  3. 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-pinyinaqui 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 ypara obter o caractere chinês.

No ibus-pinyincaso, 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

sgx1
fonte
1
a estrutura de IM mais usada é o ibus . se tiver tempo, trabalharei na criação de um mecanismo de mensagens instantâneas para fazer isso. qualquer um pode tentar e deixar um link se você tiver um código de prova de conceito.
precisa saber é
Sua resposta é a melhor. Eu dar-lhe a recompensa :-)
guettli
3

Dê uma olhada no meu script, TextSuggest .

Em ação:

Imgur

Instalação:

Instale os seguintes pacotes:

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

Em seguida, atribua 2 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 desejar obter sugestões / conclusões.

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.

UniversallyUniqueID
fonte
0

Dê uma olhada no Autokey . Pode atender às suas necessidades. C / P em seu site:

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

Detnuomnu
fonte