автозаполнение на уровне рабочего стола

11

Я часто печатаю одни и те же слова в нескольких приложениях:

  • Редактор (emacs, vi)
  • Веб-браузер
  • ракушки

Было бы здорово иметь автозаполнение слов, которые я набрал за последнюю неделю, во всех вышеперечисленных приложениях.

У каждого из них есть способ улучшить скорость набора текста. Но что-то на уровне рабочего стола будет лучшим.

Пример: «Непрерывная интеграция». Я хочу быстрый способ набрать это слово без изменения программы, которая получает ввод.

Уже есть что-то подобное?

guettli
источник
Soetihng, как Synapse ( lifehacker.com/5704221/… )?
Салем
Я думаю, что они имеют в виду что-то вроде автозаполнения LibreOffice. Это сохраняет введенные вами слова (которые соответствуют настраиваемому требованию длины). Когда вы набираете первые несколько букв слова, которое оно сохранило, вам будет предложено ввести остальное, и вы можете нажать на вкладку, чтобы набрать его, или продолжайте вводить, чтобы отрицать это.
Энди Кастил

Ответы:

7

Решением для вашего запроса является метод ввода.

То, что вы описали, знакомо большинству пользователей языка CJK. Давайте рассмотрим, как работает метод ввода в современных системах Linux.

Система ввода

Вот простая архитектура для системы с общим методом ввода:

ПРИМЕЧАНИЕ. Я делаю снимок этого изображения из протокола X Input Method Protocol . Некоторые стрелки не имеют отношения к последующему обсуждению.

Исторически XIM (протокол X Input Method) был единственным протоколом. Это слишком сложно и не хватает некоторых желаемых функций. Так что в основном он заброшен, хотя совместимость по-прежнему обеспечивается популярными инструментами, такими как GTK, Qt.

Современная система методов ввода состоит из нескольких частей:

  1. Поддержка клиентской библиотеки

    • обычно реализуется как модуль, загружаемый инструментарием (например, для GTK, см. /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules/)
  2. Метод ввода сервера
  3. X сервер

Как эти части соответствуют друг другу?

Пользователь вводит ключ. X-сервер получает аппаратное событие от интерфейса evdev, создает XEvent и отправляет приложение под фокус клавиатуры. Модуль метода ввода инструментария приложения (GTK, Qt) перехватывает событие и передает информацию на сервер метода ввода. Сервер метода ввода вычисляет, что может пожелать пользователь, и передает некоторый текст обратно в модуль IM.

Теперь поговорим об архитектуре IM-сервера.
IM-сервер обычно состоит из двух частей:

  1. Среда обмена мгновенными сообщениями, которая обрабатывает специфические для платформы сложности и обеспечивает приятный интерфейс для модулей обмена мгновенными сообщениями и инструментария. Он предоставляет механизмы IPC, используемые модулем IM, сервером и механизмом.
  2. Различные механизмы обмена мгновенными сообщениями выполняют реальную работу по преобразованию пользовательских клавиш в нужный текст. Механизмы IM могут быть общими библиотеками, загруженными сервером IM или независимыми процессами, связывающимися с сервером IM.
  3. Программы настройки вспомогательного метода ввода обеспечивают дружественный пользовательский интерфейс для настройки IM-сервера и поведения механизма.

В общем, что IM делает, чтобы преобразовать то, что вы печатаете, во что-то другое и, необязательно, обеспечивает прогнозы.

Пример

Мы используем ibus-pinyinздесь, чтобы напечатать некоторые китайские иероглифы.

Романизация 汉语拼音 есть han yu pin yin. Сначала вам нужно набрать все эти буквы, чтобы получить четыре китайских иероглифа. Но через несколько раз вам просто нужно ввести четыре начальных символа, h y p yчтобы получить китайский символ.

В ibus-pinyinслучае, han yu pin yinсокращается до h y p y.
Более продвинутые механизмы обмена мгновенными сообщениями используют статистические методы обучения, чтобы обеспечить лучший прогноз. Ничто не может помешать вам написать движок метода ввода на английском языке, чтобы повысить скорость набора текста.

В качестве бонуса, все наборы инструментов имеют поддержку метода ввода, кроме некоторых старых X-программ. Так что это довольно универсальное решение.


Благодарю Андерса ФУ Кира. Особенности / Печатание-Booster | Проект Fedora Wiki должен быть ответом

sgx1
источник
1
наиболее часто используемая среда обмена мгновенными сообщениями - ibus . если у меня будет время, я буду писать движок для этого. любой может попробовать и оставить ссылку, если у вас есть проверочный код.
sgx1
Твой ответ самый лучший. Я даю вам награду :-)
Геттли
3

Посмотрите на мой скрипт TextSuggest .

В бою:

Imgur

Установка:

Установите следующие пакеты:

  • xdotool
  • xclip
  • suckless-tools(для dmenu)

Затем назначьте 2 сочетания клавиш:

  • один в `python3 /path/to/TextSuggest.py --noselect
  • другой, чтобы python3 /path/to/TextSuggest.py

Первый просто предоставит доступный для поиска список всех слов. Используйте второй, когда у вас есть выделенный текст, и вы хотите получить предложения / дополнения к нему.

Принятые предложения сохраняются в виде истории (а затем сначала предлагаются) в файле ~/.textsuggest_history.txt.

Вы можете определить пользовательские слова и расширения / псевдонимы в ~/.Custom_Words.txt.

UniversallyUniqueID
источник
0

Посмотрите на Autokey . Это может соответствовать вашим потребностям. C / P с их сайта:

AutoKey - это утилита автоматизации рабочего стола для Linux и X11. Это позволяет вам управлять коллекцией сценариев и фраз, а также назначать им сокращения и горячие клавиши. Это позволяет вам выполнять скрипт или вставлять текст по требованию в любую программу, которую вы используете.

Detnuomnu
источник