autouzupełnianie na poziomie komputera

11

Często wpisuję te same słowa w kilku aplikacjach:

  • Redaktor (emacs, vi)
  • Przeglądarka internetowa
  • Muszle

Byłoby wspaniale mieć autouzupełnianie słów, które wpisałem w ciągu ostatniego tygodnia, dostępne we wszystkich powyższych aplikacjach.

Każdy z nich ma sposób na poprawę szybkości pisania. Ale coś na poziomie komputera byłoby najlepsze.

Przykład: „Ciągła integracja”. Chcę szybkiego sposobu na wpisanie tego słowa bez zmiany programu, który odbiera dane wejściowe.

Czy jest już coś takiego?

guettli
źródło
Soetihng jak Synapse ( lifehacker.com/5704221/… )?
Salem,
Myślę, że mają na myśli coś takiego jak autouzupełnianie LibreOffice. Zapisuje słowa, które wpisujesz (które spełniają wymaganą długość). Gdy wpiszesz kilka pierwszych liter zapisanego słowa, zaproponuje ono wpisanie reszty, a następnie możesz nacisnąć klawisz Tab, aby je wpisać, lub pisać dalej, aby je odrzucić.
Andy Castille

Odpowiedzi:

7

Rozwiązaniem Twojego żądania jest metoda wprowadzania.

To, co opisałeś, jest znane większości użytkowników języka CJK. Zobaczmy, jak działa metoda wprowadzania danych w obecnych systemach Linux.

System wprowadzania danych

Oto prosta architektura wspólnego systemu wprowadzania danych:

UWAGA: Zrzutowałem ten obraz z protokołu X Input Method Protocol . Niektóre strzałki nie mają znaczenia dla dalszej dyskusji.

Historycznie XIM (protokół X Input Method) był jedynym protokołem. Jest zbyt skomplikowany i brakuje mu niektórych pożądanych funkcji. Dlatego jest w większości porzucony, chociaż kompatybilność jest nadal zapewniana przez popularne zestawy narzędzi, takie jak GTK, Qt.

Nowoczesny system wprowadzania danych składa się z kilku części:

  1. Obsługa bibliotek po stronie klienta

    • zwykle implementowany jako moduł ładowany przez zestawy narzędzi (np. dla GTK, patrz /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/)
  2. Serwer metod wprowadzania
  3. Serwer X.

Jak te części pasują do siebie?

Użytkownik wpisuje klucz. Serwer X odbiera zdarzenie sprzętowe z interfejsu evdev, tworzy XEvent i wysyła do aplikacji pod naciskiem klawiatury. Moduł metody wprowadzania aplikacji (GTK, Qt) przechwytuje zdarzenie i przekazuje informacje do serwera metody wprowadzania. Serwer metod wprowadzania określa, czego może chcieć użytkownik, i przekazuje trochę tekstu z powrotem do modułu IM.

Porozmawiajmy teraz o architekturze serwera czatu.
Serwer czatu zazwyczaj składa się z dwóch części:

  1. Struktura IM, która obsługuje specyficzne dla platformy zawiłości i zapewnia przyjemny interfejs dla silnika IM i modułów IM zestawu narzędzi. Zapewnia mechanizmy IPC wykorzystywane przez moduł IM, serwer i silnik.
  2. Różne silniki wiadomości błyskawicznych przekształcają klawisze wpisywane przez użytkownika w pożądany tekst. Silniki IM mogą być bibliotekami współdzielonymi ładowanymi przez serwer IM lub niezależnymi procesami komunikującymi się z serwerem IM.
  3. Programy konfiguracyjne metody wprowadzania pomocniczego zapewniają przyjazny interfejs użytkownika do dostosowywania zachowań serwera IM i silnika.

Podsumowując, komunikator internetowy przekształca wpisywane słowa w coś innego i opcjonalnie zapewnia prognozy.

Przykład

Używamy ibus-pinyintutaj do wpisywania niektórych chińskich znaków.

Romanizacja 汉语拼音 jest han yu pin yin. Najpierw musisz wpisać wszystkie te litery, aby uzyskać cztery chińskie znaki. Ale po kilku przypadkach wystarczy wpisać cztery początkowe znaki, h y p yaby uzyskać chiński znak.

W tym ibus-pinyinprzypadku han yu pin yinjest skrócony do h y p y.
Bardziej zaawansowane silniki IM wykorzystują techniki uczenia statystycznego, aby zapewnić lepsze przewidywanie. Nic nie powstrzyma Cię przed napisaniem silnika do wprowadzania tekstu w języku angielskim, który zapewni Ci lepsze pisanie.

Jako bonus, wszystkie zestawy narzędzi obsługują metodę wprowadzania danych, z wyjątkiem niektórych zwykłych starych programów X. Jest to więc dość uniwersalne rozwiązanie.


Dzięki Anders FU Kiær. Funkcje / Typing-Booster | Wiki Projektu Fedora powinno być odpowiedzią

sgx1
źródło
1
najczęściej stosowanym frameworkiem IM jest ibus . jeśli będę miał czas, będę pracować nad napisaniem silnika IM, aby to zrobić. każdy może spróbować i zostawić link, jeśli masz kod sprawdzający koncepcję.
sgx1
Twoja odpowiedź jest najlepsza. Daję ci nagrodę :-)
guettli
3

Spójrz na mój skrypt, TextSuggest .

W akcji:

Imgur

Instalacja:

Zainstaluj następujące pakiety:

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

Następnie przypisz 2 skróty klawiaturowe:

  • jeden do `python3 /path/to/TextSuggest.py --noselect
  • drugi do python3 /path/to/TextSuggest.py

Pierwszy zapewni po prostu listę wszystkich słów do przeszukiwania. Użyj drugiego, gdy masz zaznaczony tekst i chcesz uzyskać sugestie / uzupełnienia.

Akceptowane sugestie są zapisywane jako historia (a następnie sugerowane jako pierwsze) w pliku ~/.textsuggest_history.txt.

Możesz zdefiniować niestandardowe słowa i rozszerzenia / aliasy w ~/.Custom_Words.txt.

UniversallyUniqueID
źródło
0

Spójrz na Autokey . Może pasować do twoich potrzeb. C / P z ich strony:

AutoKey to narzędzie do automatyzacji pulpitu dla systemów Linux i X11. Pozwala zarządzać kolekcją skryptów i zwrotów oraz przypisywać do nich skróty i skróty. Pozwala to na wykonanie skryptu lub wstawienie tekstu na żądanie w dowolnym używanym programie.

Detnuomnu
źródło