Тут я не понял: а кто этот скрипт запускает?
Должен же кто-то «висеть» на шине событий (не важно, evdev или XEvent или гномо-специфика) и ловить этот самый alt+shift.
Со своей стороны, могу предложить повесить на выход xswitcher запуск внешних сценариев. Мне не трудно. Но, должен предупредить: из того что я мерил, по dbus тормоза достигают 300мс на одно переключение. А до переключения нельзя перевводить текст.
Альтернативно, попробуйте совсем выключить игры с dbus. Возможно, такой метод как раз и «лочит» локаль в окне.
* За кадром остаётся вопрос, почему «layout: us,ru,us» (раскладка №2 дублирует раскладку №0).
«Алгоритм поиска неисправности» — штука довольно универсальная.
Для начала надо осмотреться и понять что вообще запущено. Я бы для этого перезагрузил систему и постарался выключить всё лишнее. Под подозрением — всё на электроне. Однако, главные подозреваемые — ibus или fcitx.
Если всё ещё не отпустило, придётся всё-таки разбираться с поназапущенным.
Примерно так:
…И дальше по каждому пункту выяснить что это такое.
Возможно также что в системе так отрабатывается настройка «сохранять (помнить) раскладку для каждого окна».
Сам на такое нарвался на своей старой OpenSUSE 15.0 (1.5 года поддержки — реально мало, мне ещё работать надо кроме того что софт по кругу переставлять): там и xneur и loloswitcher работали и «а чего оно тут глючит?».
1. Аналогичную проблему прорешали вот в этой ветке. Вкратце, владельцем бинарника с suid должен быть root.
2. «раскладка на мгновение изменится» — чётко указывает на наличие «конкурента».
…А не ibus ли у Вас? Само окно дёргать локалью не обучено (как правило). Кто-то должен ему «помогать».
См. выше.
Извините, ляпнул про sudo не подумав. Хотя уж пора бы запомнить.
Однако, крайне странно видеть вновь «permission error». Рухнуть после выдачи прав должно было на XOpenDisplay().
Включена какая-то защита?
Показывает ли
FIX: под номером 1 я глупость ляпнул. Потому что из-под sudo не будет XOpenDisplay() работать. Как и многое другое. Ни в каком виде, так уж его написали.
Предварительно проверять (1) можно так (должен быть рабочий рут-аккаунт):
su
### enter root password
/home/ewgenk/xswitcher/xswitcher
«Системы массового обслуживания» в моём случае представляют собой аппаратно-программные комплексы. «Вот на тех железках крутится (ок, linux, но случается и xen или ещё что). А теперь сделаем из этого…» CAD'ы т.о. остались для меня в прошлом, если Вы об этом. Программирования достаточно много, но оно никогда не самоцель.
Посмотрите вот в этом районе.
Полагаю, что-нибудь из предложенного вполне реально доработать под свои нужды и повесить на хоткей.
Для терминалов это всё не годится, поэтому — мимо меня.
Давайте попробуем отдебажить. «Не работать» должно ровно в одном случае: wayland без слоя совместимости с X11.
Запускаете софтину в терминале.
Если рушится, там написано почему. Например, «keypanic: permission error» указывает на недостаток привилегий. В сложном случае придётся разбираться с (неотключаемым толком в ubuntu) apparmor.
После старта в stdout выводятся по строкам подключаемые устройства. Логично ожидать хотя бы одну строчку с «keyboard:» и одну с «mouse:». Если пусто, то есть ли "/dev/input/event*" (захардкоженный в переменную «DEV_INPUT»)?
«В лоб» попадались скрипты с использованием xinput-tools и башатины. Посмотрите посвящённые xneur темы: когда автор заявил что «всё» — появились и попытки сделать новый инструмент.
Технически — ничего сложного. Всё можно подглядеть в коде xinput.
Я пока сделал инструмент для того что больше всего «доставляло».
Дальше можно накинуть кучу биндингов на X11, но есть нюанс: на замену иксам навязывают сборки с wayland (в которых «из коробки» не заметно нужных интерфейсов) и не понятно чем всё закончится.
Таблицы под винду были отлично реализованы в FAR manager. Под linux он тоже работает. Я так и не отказался от его редактора: слишком привык к той эргономике. Плагины, хоткеи — и вот оно.
Должен же кто-то «висеть» на шине событий (не важно, evdev или XEvent или гномо-специфика) и ловить этот самый alt+shift.
Со своей стороны, могу предложить повесить на выход xswitcher запуск внешних сценариев. Мне не трудно. Но, должен предупредить: из того что я мерил, по dbus тормоза достигают 300мс на одно переключение. А до переключения нельзя перевводить текст.
Альтернативно, попробуйте совсем выключить игры с dbus. Возможно, такой метод как раз и «лочит» локаль в окне.
* За кадром остаётся вопрос, почему «layout: us,ru,us» (раскладка №2 дублирует раскладку №0).
Как я понимаю, у Вас гном. Попробуйте пошерстить в этом районе.
* Там же подсказывают про «gnome-tweak-tool». Может и поможет…
Если на те же кнопки, то они таки пересекаются.
Для начала надо осмотреться и понять что вообще запущено. Я бы для этого перезагрузил систему и постарался выключить всё лишнее. Под подозрением — всё на электроне. Однако, главные подозреваемые — ibus или fcitx.
Если всё ещё не отпустило, придётся всё-таки разбираться с поназапущенным.
Примерно так:
…И дальше по каждому пункту выяснить что это такое.
2. «раскладка на мгновение изменится» — чётко указывает на наличие «конкурента».
…А не ibus ли у Вас? Само окно дёргать локалью не обучено (как правило). Кто-то должен ему «помогать».
Предварительный набросок HowTo:
Должен быть root:root
Без этого suid даёт права ewgenk (которые и без того есть).
Извините, ляпнул про sudo не подумав. Хотя уж пора бы запомнить.
Однако, крайне странно видеть вновь «permission error». Рухнуть после выдачи прав должно было на XOpenDisplay().
Включена какая-то защита?
Показывает ли
наличие устройства на месте?
Предварительно проверять (1) можно так (должен быть рабочий рут-аккаунт):
Про suid, однако, всё верно.
1. Проверяем что работает:
2. Если таки да, то:
Я просто некоторые вещи стал считать очевидными, а это не так. Добавлю по итогам howto в статью.
Если что-то не так, см. коммент выше.
Убедившись что работает, можно и в автозапуск. Как это сделать для ubuntu, лучше посмотреть на профильных ресурсах.
Ровно та же техника что и в loloswitcher.
Наверное, для чего-то редкого можно и так (а можно и мышкой: я так pinyin в fcitx включаю и не жалуюсь).
Полагаю, что-нибудь из предложенного вполне реально доработать под свои нужды и повесить на хоткей.
Для терминалов это всё не годится, поэтому — мимо меня.
Запускаете софтину в терминале.
Технически — ничего сложного. Всё можно подглядеть в коде xinput.
Я пока сделал инструмент для того что больше всего «доставляло».
Дальше можно накинуть кучу биндингов на X11, но есть нюанс: на замену иксам навязывают сборки с wayland (в которых «из коробки» не заметно нужных интерфейсов) и не понятно чем всё закончится.