Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Easy Switcher - переключатель раскладки клавиатуры  (Прочитано 1160192 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн try_out

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #105 : 06 Октября 2024, 21:48:31 »
нет, у меня она конвертируют всю строку
Странно. Это как-то настраивается?

Оффлайн KOT040188

  • Активист
  • *
  • Сообщений: 334
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #106 : 13 Октября 2024, 21:55:24 »
Странно. Это как-то настраивается?
Тут где-то писалось.
Хто ты гэткі?

Оффлайн try_out

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #107 : 13 Октября 2024, 22:48:36 »
Странно. Это как-то настраивается?
Сорри, разобрался. Посмотрел файл default.conf, там всё написано.
То есть, по горячей клавише исправляет одно слово. С нажатием Shift исправляет строку. Это поведение можно изменить на обратное, разрешив reverse-mode. То есть, вместо false написав true.
В общем, всё отлично работает. Автору респект.
« Последнее редактирование: 13 Октября 2024, 23:16:36 от try_out »

Оффлайн boskor

  • Активист
  • *
  • Сообщений: 342
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #108 : 16 Октября 2024, 15:08:06 »
Доброго времени. freemind, Благодарю за работу!!!
Поставил программу на Kubuntu 24.10, скрипты, которыми я ранее пользовался под иксами стали работать не стабильно.
сейчас пытаюсь понять, как и что делать. Переключение поставил на правый Shift так как у меня ноут, клавиш мало.
хотел спросить, если у меня сразу 2 клавиши переключают раскладку, это комбинация Shift+Alt и CapsLock, это нужно указывать в файле настроек?

пока заметил, что если после слова два пробела, конвертация не происходит. Думаю это не существенно

также если вдруг какое-то слово захочешь сконвертировать из середины предложения, просто поставить после него курсор и нажать клавишу конвертации не поможет/ язык переключается, но слово не  конвертируется.
Думаю, что с приходом вяленого эта программа станет прорывом в юзабилити ubuntu на двуязычных системах
еще раз большое спасибо!
 

Оффлайн freemind

  • Автор темы
  • Участник
  • *
  • Сообщений: 200
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #109 : 17 Октября 2024, 20:29:32 »
Easy Switcher взаимодействует напрямую с ядром Linux для конвертации (точнее с устройствами ввода и вывода), и не взаимодействует с графическим окружением, иксами и т.д.
Если вы ткнули в середину предложения, конвертация не сработает, т.к. программа не знает где именно сейчас курсор, и что нужно выводить.
Алгоритм программы по сути прост: сидим на вводе, копим буфер, при нажатии клавиши конвертации стираем введеное ранее, меняем раскладку и пишем заново.

Нажатие мыши очищает буфер, т.к. в общем случае это означает, что сменилось окно ввода и старый текст надо забыть.
То же происходит при нажатии клавиш которые могут менять окно ввода или положение курсора (типа Ctrl, Alt, стрелки, PgUp/PgDown и тд)

Почему такой подход?
Опыт xneur/gxneur работавшем через иксы показывает, что с выходом обновлений, (например gnome), постоянно что-то отваливается, и автор вынужден что-то переделывать. Кроме того, ему приходилось писать отдельно под gnome, отдельно под kde.
Поэтому я решил полностью отказаться от взаимодействия с рабочим окружением.

Примуществом работы на низком уровне является отсутствие ошибок, связанных с различиями между платформами.
Easy Switcher поддерживает широкий спектр дистрибутивов использующих ядро Linux, и, вероятно, останется стабильным в будущих версиях ОС. (Ядро вряд ли будет меняться в части работы со стандартной клавиатурой)

Недостатком этого подхода является то, что мы не можем делать некоторые вещи, такие как преобразование выделений, работу с буфером обмена и корректировку текста в неправильном регистре.
Автозамены тоже не будет) Т.к. непонятно как надежно определить текущую раскладку, не обращаясь к окружению.

если у меня сразу 2 клавиши
Можно указать любую, без разницы. Работают как комбинации клавиш, так и отдельные.
Запустите с ключом -с, и настройте автоматически

два пробела
конвертируется последнее слово, а слова обычно отделяются пробелами)
Если будет 2 пробела, конвертация будет до 2го
Опять же, мы работаем на ядре, смотрим ввод и пытаемся корректно разобрать что вы понаписали.
Экзотические случаи типа двойных пробелов я не учитывал)
Shift+Break кстати будет конвертировать последнюю введенную строку целиком, двойной пробел будет корректно обработан.

с приходом вяленого
Из-под wayland шустрее работает, можно delay=2 поставить, нормально отрабатывало когда тестил. Опять же, от компа зависит скорость.
xneur, разумеется, - это только иксы

С нажатием Shift исправляет строку.
все так

что первое приконектится
Вероятно у вас еще какой-то софт стоит для обработки клавиатуры. Если клавиатура улетела на event17, то что-то насоздавало виртуальных устройств ввода. Обычно клавиатура висит на event2. О конфликте с ремапперами клавиатуры писал ранее, если после перезагрузки меняется имя устройства ввода, то работать толком не будет, т.к. придется конфигурировать каждый раз перед запуском.
« Последнее редактирование: 17 Октября 2024, 23:20:33 от freemind »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #110 : 17 Октября 2024, 20:54:35 »
Обычно клавиатура висит на event2.
Вряд-ли. На витруалке да, event2. На десктопе у меня event4 (usb-клавитатура), на ноутбуке - event6(родная клавиатура).

придется конфигурировать каждый раз перед запуском.
Можно же через udev симлинкать. И работать через симлинк.
Ну, например:

/etc/udev/rules.d/98-easy-sw.rules
SUBSYSTEM=="input", ENV{ID_INPUT_KEYBOARD}=="1", SYMLINK+="input/easy-sw"
$:  sudo udevadm control --reload-rules && sudo udevadm trigger

$: ls -l /dev/input/easy-sw
lrwxrwxrwx 1 root root       6 окт 17 21:18 easy-sw -> event6
« Последнее редактирование: 17 Октября 2024, 21:45:04 от ALiEN »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн freemind

  • Автор темы
  • Участник
  • *
  • Сообщений: 200
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #111 : 17 Октября 2024, 22:58:43 »
Вряд-ли.
ну ок :)
спорить не буду, не знаю, у меня пока писал-тестировал всегда event2 был, что на буке что на рс, я подумал всегда так по умолчанию
« Последнее редактирование: 17 Октября 2024, 23:24:17 от freemind »

Оффлайн ilay_em

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #112 : 31 Октября 2024, 06:23:34 »
Всем привет.
Поставил на домашние компы Easy Switcher.
Автору - РЕСПЕКТИЩЕ! ПОЧЕТ И УВАЖУХА !!!
Единственный косяк с которым столкнулся: 
на одном из компов, после загрузки ос -  Easy Switcher какое-то время работает нормально, потом непонятно по какой причине перестает.
Активируется только через перезагрузку или sudo systemctl start easy-switcher

Operating System: Ubuntu 24.04.1 LTS             
Kernel: Linux 6.8.0-48-generic
Architecture: x86-64
xinput --list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ Logitech Wireless Keyboard PID:4023       id=10   [slave  pointer  (2)]
⎜   ↳ Logitech Wireless Mouse                   id=11   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Dell Privacy Driver                       id=12   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=13   [slave  keyboard (3)]
    ↳ Easy Switcher virtual input device        id=14   [slave  keyboard (3)]
    ↳ Logitech Wireless Keyboard PID:4023       id=15   [slave  keyboard (3)]
    ↳ Logitech Wireless Mouse                   id=16   [slave  keyboard (3)]

Подскажите, пожалуйста, куда смотреть и что подкрутить !?
Спасибо.
« Последнее редактирование: 06 Февраля 2025, 07:28:43 от ilay_em »

Оффлайн ivan-iv

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #113 : 31 Октября 2024, 14:21:09 »
Автору большое спасибо за программу, она действительно очень нужна и здорово выручает, причём так к ней привык что вернувшись на винду с автоматическим carambaswitcher он стал подбешивать ложными срабатываниями, ручное управление теперь нравится больше.

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

Easy Switcher какое-то время работает нормально, потом непонятно по какой причине перестает.
Активируется только через перезагрузку или sudo systemctl start easy-switcher
У меня такое было на аналогичной системе только Kubuntu 24.04.1 LTS. Вылечить не смог.

Из-под wayland шустрее работает, можно delay=2 поставить
Попробовал и правда хорошо работает

freemind, Обновился на Kubuntu 24.10 с wayland И поимел довольно серьёзный баг. Если оставить компьютер в покое то через какое-то время начинает грузиться проц на 100% и писать в system log
easy-switcher: message repeated 11050744 times: [ [Error] Abnormal data read from /dev/input/event17 I/O error]На event17 висит клавиатура, подозреваю что она уходит в какой нибудь спящий режим и свитчеру это не нравится, возможно он делает рекурсивный опрос устройства и получает неудобоваримый ответ. К сожалению такое поведение просто опасно, бесконечно генерирует ошибку и пишет логи, разоревает ноутбук, а отключать улавиатуру при каждой отлучке ну прям муторно. В итоге уже 2 бага с bluetooth клавиатурой. Может есть соображения как этого избежать? К примеру клавиатуру можно детектить автоматически, evtest показывает её имя "Keyboard K380 Keyboard" по нему наверняка можно как-то определить. С логами тоже можно как-то обрабатывать неугодный ответ от клавиатуры или хотябы добавть бо́льшие таймауты на такие случаи.
« Последнее редактирование: 31 Октября 2024, 14:23:32 от ivan-iv »

Оффлайн ivan-iv

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Ну вот опять, час назад звлочил экран Meta+L, сейчас разлочил, свитчер не работает, а проц разгоняется на взлёт.

Оффлайн freemind

  • Автор темы
  • Участник
  • *
  • Сообщений: 200
    • Просмотр профиля
видимо что-то "летит" с клавиатуры со страшной силой после выхода из блокировки экрана
собрал для вас вариант, который игнорирует незнакомые данные и не пишет лог, если прилетело что-то, что не является key_up или key_down
https://disk.yandex.ru/d/RrUKa5sY4_YmbA

подмените исполняемый файл и перезапустите демон

Пользователь добавил сообщение 01 Ноября 2024, 20:44:14:
Хотя наверное этот подход не особо поможет.
Поразмышлял, ES активно сам ничего не запрашивает, он висит в памяти и слушает, что с клавиатуры идет.
После блокировки экрана у вас с клавиатуры начинают поступать данные, которые не являются нажатиями (abnormal data)
Честно сказать не силен в администрировании, но наверно нужно с клавиатурой разбираться, может быть с драйвером или еще с чем.
Может опытные админы что-то подскажут.

Что касается прикрепленной сборки, если перегруз проца вызван частыми записями в лог, то это уйдет, но неверные данные с клавиатуры-то все равно будут литься, ES просто никак их не будет обрабатывать.
« Последнее редактирование: 01 Ноября 2024, 20:44:14 от freemind »

Оффлайн ivan-iv

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Большое спасибо за помощь, вернусь к работе среди недели и тогда протестирую. Еще попробую проверить ваше предположение на счёт потока с клавиатуры, посмотрю в evtest когда баг повториться и попробую перезагрузить клавиатуру, гляну как это отразится. Каких-то драйверов я не ставил если что, клавиатура работает из коробки со всеми устройствами.

Оффлайн freemind

  • Автор темы
  • Участник
  • *
  • Сообщений: 200
    • Просмотр профиля
evtest
Прикольная утилита, можно запустить в двух терминалах, в первом подключить к клавиатуре, во втором к Easy Switcher virtual input device
В первом будет видно, что идет с физической клавиатуры, а во втором - как отрабатывает Easy Switcher при нажатии на клавишу конвертации

Пользователь добавил сообщение 03 Ноября 2024, 16:29:33:
потом непонятно по какой причине перестает
что-то глушит его, в syslog должна быть инфа
« Последнее редактирование: 03 Ноября 2024, 16:29:33 от freemind »

Оффлайн ivan-iv

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Докладываю:

Попробовал посмотреть через evtest когда опять пошла ошибка
- События с клавиатуры приходили штатно при нажатии на клавиши
- Попытка просмотра событий с виртуальной не удалась, зависла на этапе "Testing"

Дальше подменил исполняемый фаил и
- Логи действительно перестали писаться
- Свитчер опять завис и загрузил процессор, но разогрел его прилично меньше чем с логами (уже хорошо)

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


Ссылка на скриншот системных логов https://disk.yandex.ru/i/V7BK5UP0jF0eGQ

Оффлайн freemind

  • Автор темы
  • Участник
  • *
  • Сообщений: 200
    • Просмотр профиля
Re: Easy Switcher - переключатель раскладки клавиатуры
« Ответ #119 : 20 Декабря 2024, 22:44:01 »
При случае, поставил для тестов Kubuntu 24.10, поработал 3 часа, пробовал блокировать экран, ждущий режим, просто активно печатать, но проблемы не наблюдал.
Можете подробно описать в каких случаях начинает появляться проблема?
Пока не удастся повторить, не смогу разобраться, что там валится с устройства

 

Страница сгенерирована за 0.029 секунд. Запросов: 21.