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


11

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

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

Було б чудово, щоб автозаповнення слів, які я набрав протягом останнього тижня, доступні у всіх вищезазначених додатках.

Кожен з них має спосіб поліпшити швидкість набору тексту. Але щось на рівні робочого столу було б найкращим.

Приклад: "Безперервна інтеграція". Я хочу швидким способом набрати це слово без зміни програми, яка отримує вхід.

Чи є вже щось подібне?


Soetihng як Synapse ( lifehacker.com/5704221/… )?
Салем

Я думаю, вони означають щось на зразок автозаповнення LibreOffice. Він зберігає слова, які ви вводите (які відповідають вимозі налаштованої довжини). Коли ви введете перші кілька літер збереженого слова, він запропонує ввести решту, і ви можете натиснути на вкладку, щоб ввести її, або продовжуйте вводити текст, щоб відмовити.
Енді Кастилія

Відповіді:


7

Рішення вашого запиту - метод введення.

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

Система методу введення

Ось проста архітектура для загальної системи методу введення:

Примітка: Я знімок цього зображення від The X Input Method Protocol . Деякі стрілки не мають значення для подальшого обговорення.

Історично XIM (протокол методу X Input) був єдиним протоколом. Він надмірно складний і не має деяких бажаних особливостей. Таким чином, це в основному покинуто, хоча сумісність все ще забезпечується популярними наборами інструментів, такими як 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) перехоплює подію та передає інформацію на сервер методу введення. Сервер методу введення визначає, що може захотіти користувач, і передає деякий текст назад в модуль чату.

Тепер поговоримо про архітектуру сервера чату.
Сервер чату, як правило, складається з двох частин:

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

Загалом, те, що ІМ робить, це перетворити те, що ви вводите, на щось інше і необов'язково передбачити прогнози.

Приклад

Ми використовуємо ibus-pinyinтут для введення деяких китайських символів.

Романізація 汉语拼音 є han yu pin yin. Спочатку потрібно набрати всі ці літери, щоб отримати чотири китайські символи. Але через кілька разів вам просто потрібно набрати чотири початкові символи, h y p yщоб отримати китайський символ.

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

Як бонус, всі набори інструментів мають підтримку методу введення, крім деяких звичайних старих програм X. Тож це цілком універсальне рішення.


Завдяки Anders FU Kiær. Особливості / Typing-Booster | Fedora Project Wiki має бути відповіддю


1
найчастіше використовується фреймворк чату ibus . якщо у мене буде час, я працюю над написанням двигуна чату, щоб це зробити. будь-хто може спробувати його і залишити посилання, якщо у вас є код підтвердження концепції.
sgx1



Ваша відповідь найкраща. Я дарую вам нагороду :-)
guettli

3

Погляньте на мій сценарій, TextSuggest .

Дія:

Імгур

Установка:

Встановіть наступні пакети:

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

Потім призначте дві комбінації клавіш:

  • один до `python3 /path/to/TextSuggest.py --noselect
  • інший до python3 /path/to/TextSuggest.py

Перший просто надасть список усіх слів, у яких можна шукати. Використовуйте другий, коли ви вибрали якийсь текст, і хочете отримати пропозиції / доповнення до нього.

Прийняті пропозиції зберігаються як історія (а потім пропонується спочатку) у файлі ~/.textsuggest_history.txt.

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


0

Погляньте на Autokey . Це може відповідати вашим потребам. C / P з їх сайту:

AutoKey - це утиліта автоматизації настільних ПК для Linux та X11. Це дозволяє керувати колекцією сценаріїв і фраз, і призначати до них абревіатури та гарячі клавіші. Це дозволяє виконувати сценарій або вставляти текст на вимогу в будь-яку програму, яку ви використовуєте.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.