Pull to refresh

Comments 87

Вот бы еще кто Punto Switch допилил, чтобы при использовании Caps Lock в качестве
кнопки-переключалки он в случайный момент времени не вспоминал о исходном ее назначении, и не отказывался переключать раскладку. Регистр меняет, раскладку нет.
Приходится выгружать :(
Или я что-то не так делаю?
У меня такая ситуация наблюдается с рабочим ноутбуком, где стоят дефолтные настройки винды и где работают всякие McAfee. А вот на личном компьютере где стоит Windows 10 ltsc с «правильными настройками» никаких проблем с Punto Switcher не наблюдал ни разу.
Может тут конечно и виноват Punto Switcher, но это проблема видимо проявляется только с определенными настройками системы.
У меня и W7 и Win10 (был, пока не достал окончательно). Возможно, что и с параметрами настройки систем что-то, но уж очень они «по умолчанию» в моем случае :)

PS. А вот в OpenSuse (любимый дистр!:) никаких проблем «из коробки» с переключалками не наблюдалось уже лет 15. Но мне и автозамена без надобности, ради которой аффтар все и затеял.

Попробуйте отключить в настройках «Исправлять две заглавные буквы в начале слова» и «Исправлять случайное нажатие Caps Lock», а в винде настроить отключение режима Caps Lock клавишей Shift. Это в комбинации решило похожую проблему у меня: при полностью отключенной клавише Caps Lock, сам Caps Lock иногда включается, а выключить нельзя (клавиша же отключена).

Ооо, спасибо большое, попробую!

У меня с дефолтными настройками Shift + Caps Lock позволяет использовать обычную функцию капс лока.

Ещё в Пунто при назначении Капса на переключение языка перестает работать индикатор на клаве. Я писал в ТП Яндекса, они ответили, что если Капс переназначен, то и индикатор не работает. Было давненько, может и исправили.
Выявил, что у меня такое наблюдается только с программой keepassxc, если встать на поле ввода пароля для разблокировки БД и переключить раскладку caps`ом. punto на рабочем АРМе держу только из-за того переключения, на домашней машинке под linux привык к такому переключению.
Посчитал, что «враждуют» между собой hook`и keepassxc`а punto`а.
Нет, не оно. Я keepass не юзаю.
Я тоже сначала думал, что это Remote Desktop Manager виновен, но потом эффект появился на той машине, где его сроду не было. Так что это что-то «тама унутре» неучтено.
Коллега сверху по треду предложил некое сильное шаманство, вот, тестирую :)
Такие баги часто происходят при использовании RDP

У меня года 3 стоит переключение на Caps Lock, такого нет. Windows 10 последний, почти все настройки по умолчанию.

xneur я сколько в своей жизни ни ставил — сносил всегда или сразу, или через день-два

возможно виноваты мои кривые руки, но заставить его работать без багов я не смог

В целом я просто выработал привычку смотреть на индикатор Caps Lock боковым зрением перед вводом, чтобы определить раскладку. Горит — значит русская. Переключение тоже по Caps. Плюс каждое окно запоминает раскладку (kbdd)

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

Надеюсь, что на Хабре найдутся менее ленивые параноики

Может быть, заглядывая в будущее, кто-то возьмется аналог Punto Switcher ваять в виде расширения для Wayland, хотя, поговаривают, там это как-то архитектурно непросто.
UFO just landed and posted this here
Когда смотришь на экран при наборе, надобность в перекодировке никогда не возникает.

Печатаю вслепую последние лет, наверное, 12. Потребность в перекодировке возникает по 100 раз на дню. На клавиатуру не смотрю. Просто я успеваю набрать слово\два\три прежде, чем до меня доходит, что раскладка была не та. Я довольно быстро печатаю. И пока я печатаю я не сказать чтобы анализирую что там за буквы на экране появляются. Голова в мыслях.


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

UFO just landed and posted this here
Иногда приходится смотреть не в монитор, даже когда печатаешь вслепую, например при перепечатывании рукописного текста. Буквально вчера этим занимался.

Я печатаю вслепую, но переключением раскладки пользуюсь постоянно.


Быстрее нажать Caps Lock для исправления последнего слова (одна кнопка), чем стирать, менять раскладку и писать заново (много кнопок).


Иногда печатаю вслепую, но смотрю не на текст, а в другое место.

А изменение раскладки в выделенном фрагменте планируется — по типу того, как сделано в Caramba Switcher (новый проект Сергея Москалёва)?
Под ВЫН есть програмка SNOOP, которая по заданной кнопке выполняет трансляцию выделенного фрагмента по заданной таблице. Таблиц там в комплекте идёт сразу пачка типа рус/лат, КАПС/строчные и т.д. Ну и свои можно лепить любые.
Когда на Лин перешел — очень её не хватало. Да и сейчас не хватает, если честно. Но как эту задачу тут решить я вообще не представляю.
«В лоб» попадались скрипты с использованием xinput-tools и башатины. Посмотрите посвящённые xneur темы: когда автор заявил что «всё» — появились и попытки сделать новый инструмент.
Технически — ничего сложного. Всё можно подглядеть в коде xinput.
Я пока сделал инструмент для того что больше всего «доставляло».
Дальше можно накинуть кучу биндингов на X11, но есть нюанс: на замену иксам навязывают сборки с wayland (в которых «из коробки» не заметно нужных интерфейсов) и не понятно чем всё закончится.
  • Таблицы под винду были отлично реализованы в FAR manager. Под linux он тоже работает. Я так и не отказался от его редактора: слишком привык к той эргономике. Плагины, хоткеи — и вот оно.
А где автор xneur заявил что «всё»? Или имеются в виду предыдущие авторы?
Железобетонного пруфа не дам, но где-то в недрах этого форума. AFAIR.
Высказывание в том духе что «свободное время закончилось». А если формально «не первый автор а последний соавтор» — мне от этого не легче.

Лично меня добила невозможность завести xneur в моих последних системах (до этого как-то получалось, хотя коллеги с debian «приплыли» годом ранее).
Пунто очень актуальна в планшетах с внешней клавиатурой. Там нет индикатора раскладки и никогда не знаешь на каком языке работаешь. Есть какое-нибудь решение?
Пытался использовать Punto ещё под окошками, но забросил — слишком люблю пароли из длинных русских фраз набирать при включенной английской раскладке. А свитчер, естественно, их пытается перекодировать, после чего уже без бутылки не разберешься — где пароль запомнен так, как задумывалось, а где с перекодировкой на русский.

P.S. Ну и, да, неприятно как-то, что в системе, как минимум, на один кейлоггер больше стало. :)

Я для себя проблему раскладок давно решил, сделав раскладку фиксированной. Caps — английская, Shift-Caps русская.


Теперь я всегда выставляю раскладку перед началом ввода. Повторное нажатие кнопки раскладки ничего не меняет, т.е. нажимать кнопку можно всегда. Идеально для ввода паролей и общей sanity. Нажал кнопку — точно знаешь, что русский (английский). Можно даже не присматриваться к вводимому.

Давно уже топлю за такой способ переключения. Ctrl+Shift+1 — Английская, Ctrl+Shift+2 — Русская.

Окружающие называют меня извращенцем. Смеюсь с них в правильной раскладке.
Весьма неторопливый способ переключения.
Наверное, для чего-то редкого можно и так (а можно и мышкой: я так pinyin в fcitx включаю и не жалуюсь).
Тоже был раздражен от xneur, приходилось как-то выкручиваться. Позже понадобился третий язык и стало вообще кисло.

Оказалось, что можно жить и без подобных помогалок:

  1. Назначить однокнопочное переключение между языками,
  2. Ограничить число раскладок, входящих в кольцо переключения,
  3. Назначить отдельные клавиши на включение определённой раскладки.

После некоторого периода экспериментов оказалось удобно переключать языки по правой клавише «Alt». Экспериментировал с CapsLock, но туда идёт слабый духом мизинец, он часто жмёт ненужную «Tab», тогда как «Alt Gr» прямо под уверенным большим пальцем, легко нащупывается даже вслепую с помощью края длинной «Space».

Клавиши отдельных языков (после ряда экспериментов):
> русская = ScrollLock,
> английская = Pause/Break.

Помогает и неочевидный факт: румынский алфавит основан на латинице, поэтому даже в терминале для вписывания англоязычных слов достаточно переключаться только между русской и румынской раскладками. Недостаток: в румынской клавиатуре нет ординарной кавычки и седильи (~), поэтому если таки нужны английские штуки вроде «doesn't» — бацаю средним пальцем правой руки по «Pause/Break».

Сейчас настройки клавиатуры вот такие.

В случае английского, русского и украинского "неочевидный" факт скорее мешает, когда увидел в терминале киррилицу, переключаешь в кольце и уже не смотришь, что там латиница или вторая киррлица

На маке для себя решил проблему некорректной раскладки альтернативным способом:
левый Cmd переключает раскладку на латиницу, правый Cmd на кириллицу.

Теперь вообще не нужно задумываться о раскладке – жамкнул перед набором текста нужную клавишу рядом с пробелом и чётко уверен в том, какую раскладку получишь.

На Windows было тоже самое только с клавишами Ctrl.
С помощью какой программы можно добиться такого поведения на маке?

Karabiner-Elements. Там Complex Modifications и дальше поиск по "Change input source".
Заодно посмотрите Ukelele. Это про кастомные раскладки клавиатуры. Тоже полезная штука.

имхо — xneur и т.п. не зря вымерло, оно просто не нужно, простой скрипт .sh (коих в гуголе множество) легко меняет раскладку выделенного используя обычные утилиты типа xdotool, при этом не требует root, автозапуска, памяти… т.к. активируется только на время надобности через хоткей.

Подскажите, пожалуйста, ссылку на один из .sh скриптов. Как их искать, по какому запросу?

К примеру «linux скрипт изменения раскладки»
Вторая ссылка
О, как раз вовремя! Очень привык к переключению раскладки на основе Shift. Однократное нажатие на левый Shift — русская раскладка, однократное нажатие на правый Shift — английская. Очень удобно когда владеешь слепым набором на двух раскладках — нажал на правый Shift и сходу набираешь на английском, нажал на левый — на русском. На Win проблем нет — задачу решает AutoHotkey. На Ubuntu 16.04 проблем тоже не было — два простеньких скрипта и бинд на Shift-ы и все как часы. После перехода на 18.04 и до сих пор никак не могу решить эту проблему.

UPD. Попытался проверить под Ubuntu 18.04 — не работает.

В гноме 3 не работает. Пересел недавно опять на кеды, там ок.

Давайте попробуем отдебажить. «Не работать» должно ровно в одном случае: wayland без слоя совместимости с X11.
Запускаете софтину в терминале.
  • Если рушится, там написано почему. Например, «keypanic: permission error» указывает на недостаток привилегий. В сложном случае придётся разбираться с (неотключаемым толком в ubuntu) apparmor.
  • После старта в stdout выводятся по строкам подключаемые устройства. Логично ожидать хотя бы одну строчку с «keyboard:» и одну с «mouse:». Если пусто, то есть ли "/dev/input/event*" (захардкоженный в переменную «DEV_INPUT»)?
Скачав бинарник и запустив его увидел следующее:
panic: permission error for /dev/uinput try cmd : sudo chmod +0666 /dev/uinput

Ну что же, попробуем дать необходимые права подумал я:
sudo chmod +0666 /dev/uinput

После этого попытался запустить еще раз и в stdout уже была тишина…
Если пусто, то есть ли "/dev/input/event*" (захардкоженный в переменную «DEV_INPUT»)?

Да, все есть. Выполнив:
ls -al /dev/input/by-path/

Вывод (часть вырезал):
pci-0000:00:14.0-usb-0:3:1.2-event-mouse -> ../event12
pci-0000:00:14.0-usb-0:3:1.2-mouse -> ../mouse2
pci-0000:00:14.0-usb-0:4:1.0-event-mouse -> ../event4
pci-0000:00:14.0-usb-0:4:1.0-mouse -> ../mouse0
pci-0000:00:1a.0-usb-0:1.4:1.0-event -> ../event11
platform-i8042-serio-0-event-kbd -> ../event3
platform-i8042-serio-1-event-mouse -> ../event5
platform-PNP0C14:00-event -> ../event6
platform-i8042-serio-1-mouse -> ../mouse1

Не надо так делать. Надо или запускать от рута (т.к. внутри кондовый кейлоггер на devfs), или дать suid-bit.
Ровно та же техника что и в loloswitcher.
  • Проверил, про «chmod +xs xswitcher» в статье — не забыл.
Попробовал, поменял права, но увы, результат прежний. К слову, loloswitcher тоже не работает. Точнее, если нажать несколько раз какой-то из shift-ов то раскладка на мгновение изменится, но только лишь на мгновение…
1. Аналогичную проблему прорешали вот в этой ветке. Вкратце, владельцем бинарника с suid должен быть root.
2. «раскладка на мгновение изменится» — чётко указывает на наличие «конкурента».
…А не ibus ли у Вас? Само окно дёргать локалью не обучено (как правило). Кто-то должен ему «помогать».
Удалось запустить бинарник и получить вывод:
keyboard: Power Button
keyboard: Laptop_Integrated_Webcam_HD: In
mouse: Logitech K400 Plus
keyboard: Power Button
keyboard: AT Translated Set 2 keyboard
mouse: HP Wireless Optical Mobile Mouse
mouse: SynPS/2 Synaptics TouchPad
keyboard: Dell WMI hotkeys


Да, действительно, есть какой-то конкурент, ибо поведение xswitcher ровно такое же как и loloswitcher. Подскажите, как вычислить конкурента и запретить ему конкурировать?
«Алгоритм поиска неисправности» — штука довольно универсальная.
Для начала надо осмотреться и понять что вообще запущено. Я бы для этого перезагрузил систему и постарался выключить всё лишнее. Под подозрением — всё на электроне. Однако, главные подозреваемые — ibus или fcitx.

Если всё ещё не отпустило, придётся всё-таки разбираться с поназапущенным.
Примерно так:
ps -el | awk '{if ($3 != 0) print $14}' | sort -u | egrep -v '^(ps|CMD|awk|bash|grep|sort|akonadi)'

…И дальше по каждому пункту выяснить что это такое.

  • Возможно также что в системе так отрабатывается настройка «сохранять (помнить) раскладку для каждого окна».
  • Сам на такое нарвался на своей старой OpenSUSE 15.0 (1.5 года поддержки — реально мало, мне ещё работать надо кроме того что софт по кругу переставлять): там и xneur и loloswitcher работали и «а чего оно тут глючит?».
Попробовал отключить настройку input-source per window — не помогло. Как разобраться с ibus пока не понял, его демоны перезапускаются почти сразу после их завершения. Я сменил метод ввода, перезапустил сессию, однако при проверке выяснил что ibus был выбран автоматически как основной метод ввода, опять все демоны его запущены. Руки тянутся сделать apt purge ibus, но не хотелось бы радикальных мер.
UPD. Отключение ibus проблему не решило.
Тупой вопрос: а как у Вас настроен переключатель в иксах?
Если на те же кнопки, то они таки пересекаются.
  • У себя в KDE я давно поотключал все варианты кроме ctrl+alt+k «на всякий случай». Но не факт что все сами догадаются. Надо будет добавить в FAQ.
Вот сейчас настроено все так: левые Alt+Shift — раскладка 1 (ru), правые Alt+Shift — раскладка 2 (us).
Насколько я в курсе, X-server так не умеет. Что об этом думает «setxkbmap -query»? У меня например вот так (раскладки есть, способ смены — не задан):
# setxkbmap -query
No protocol specified
rules:      evdev
model:      pc104
layout:     us,ru
options:    terminate:ctrl_alt_bksp,misc:typo,compose:ralt,grp_led:scroll,lv3:rwin_switch

Как я понимаю, у Вас гном. Попробуйте пошерстить в этом районе.
* Там же подсказывают про «gnome-tweak-tool». Может и поможет…
Да, gnome.
# setxkbmap -query
rules:      evdev
model:      pc105
layout:     us,ru,us
variant:    ,,
options:    grp_led:scroll

Сейчас гляну, спасибо!
К слову, для изменения раскладки по Alt-Shift я обращаюсь через D-Bus, использую такой скрипт:
!/bin/bash

gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[$1].activate()"

В качестве параметра передается 0 — первая раскладка, 1 — вторая. При попытке изменить раскладку с помощью setxkbmap в дальнейшем стандартный механизм перестает работать.
Тут я не понял: а кто этот скрипт запускает?
Должен же кто-то «висеть» на шине событий (не важно, evdev или XEvent или гномо-специфика) и ловить этот самый alt+shift.
Со своей стороны, могу предложить повесить на выход xswitcher запуск внешних сценариев. Мне не трудно. Но, должен предупредить: из того что я мерил, по dbus тормоза достигают 300мс на одно переключение. А до переключения нельзя перевводить текст.

Альтернативно, попробуйте совсем выключить игры с dbus. Возможно, такой метод как раз и «лочит» локаль в окне.
* За кадром остаётся вопрос, почему «layout: us,ru,us» (раскладка №2 дублирует раскладку №0).
Да, я понимаю что должно что-то слушать и дергать скрипт по событию, но что это понять не могу. Я просто добавил custom hotkeys в системе и повесил на них вызов скрипта с разными параметрами.
image
Переключение через D-Bus очень долгое, это по сути мучение, но если появится возможно дергать внешний скрипт — в целом не будет лишним.
Отключал все хоткеи с shift-ом, результат тот же(.
Почему три раскладки отобразилось в душе не знаю, настроено ровно две. Проверил через gsettings увидел [('xkb', 'us'), ('xkb', 'ru')]. Во всех GUI тоже стоит две.
В общем, я в замешательстве, уже подумываю кеды поставить.
Могу посоветовать LoLo Switcher.
Использую Punto Switcher на Windows в основном, чтобы переключать раскладки: левый Ctrl — английская, правый Ctrl — русская. Когда переходил на Linux, перебрал несколько программ, но все было не то. Попробовал собрать LoLoSwitcher и сижу на нем уже два года. Собирается и настраивается легко, работает безупречно. Только не хватает изменения ошибочно набранного текста по клавише Break.
Но альтернативы — это хорошо! Больше софта под Linux хорошего и разного!

UPD. Если кто-то заинтересовался LoLo Switcher — вот еще полезная ссылка.
спасибо Windows Vista, окончательно пересев на Linux...

Мне тоже Виста в своё время помогла на Линукс перейти: сижу, верстаю макет, утром его сдать уже надо. После очередного зависания решил, что так не может больше продолжаться, скачал первый попавшийся дистрибутив (Mandriva), установил, доделал работу, не смотря на то, что Линукс первый раз в жизни видел. С тех пор уже 10 лет на Линуксе сижу — спасибо Майкрософт, что привели меня к нему.

Есть у меня такое ощущение (по собственному опыту), что подобные утилиты имеют смысл пока не вырабатался навык печати не глядя на клавиатуру.
Со всеми переключателями раскладки текста под Linux проблема в том, что под Wayland они просто не могут работать, при ограничениях введенных на уровне дизайна Wayland.
Иногда замечаешь что набрал, когда уже набрано целое предложение, поэтому второй распространенный режим «сменить раскладку выделенного текста». Думаю этого (и дефолтного режима смены раскладки последнего слова) будет достаточно для 99.9% случаев.
Посмотрите вот в этом районе.
Полагаю, что-нибудь из предложенного вполне реально доработать под свои нужды и повесить на хоткей.
Для терминалов это всё не годится, поэтому — мимо меня.
Что меня больше всего удивило в этой статье, это то что инженеру-конструктору удался переход на Linux. Какой софт в работе используете, если не секрет?
«Системы массового обслуживания» в моём случае представляют собой аппаратно-программные комплексы. «Вот на тех железках крутится (ок, linux, но случается и xen или ещё что). А теперь сделаем из этого…» CAD'ы т.о. остались для меня в прошлом, если Вы об этом. Программирования достаточно много, но оно никогда не самоцель.
Привет.
Компиляция по инструкции прошла успешно
файл лежит тут /home/user/xswitcher/xswitcher

Как его запустить, чтобы работало переключение?
Сижу на Ubuntu
Примерно так:
sudo chmod +xs /home/user/xswitcher/xswitcher
/home/user/xswitcher/xswitcher

Если что-то не так, см. коммент выше.

Убедившись что работает, можно и в автозапуск. Как это сделать для ubuntu, лучше посмотреть на профильных ресурсах.
Не получилось

ewgenk@ewgenk-K53SJ:~$ sudo chmod +xs /home/ewgenk/xswitcher/xswitcher
[sudo] пароль для ewgenk: 
ewgenk@ewgenk-K53SJ:~$ /home/ewgenk/xswitcher/xswitcher
panic: permission error for /dev/uinput try cmd : sudo chmod +0666 /dev/uinput

goroutine 1 [running]:
main.main()
	/home/ewgenk/xswitcher/src/main.go:636 +0xb66
ewgenk@ewgenk-K53SJ:~$ 



Потом написал
sudo chmod +0666 /dev/uinput

Папки /dev/uinput у меня нет


Потом снова запустил
/home/ewgenk/xswitcher/xswitcher


Комп завис. Перезагрузил его
Что-то мне подсказывает что владелец файла — не root.
1. Проверяем что работает:
sudo /home/ewgenk/xswitcher/xswitcher

2. Если таки да, то:
sudo chown root:root /home/ewgenk/xswitcher/xswitcher

Я просто некоторые вещи стал считать очевидными, а это не так. Добавлю по итогам howto в статью.
FIX: под номером 1 я глупость ляпнул. Потому что из-под sudo не будет XOpenDisplay() работать. Как и многое другое. Ни в каком виде, так уж его написали.
Предварительно проверять (1) можно так (должен быть рабочий рут-аккаунт):
su
### enter root password
/home/ewgenk/xswitcher/xswitcher

Про suid, однако, всё верно.
Не сработало
ewgenk@ewgenk-K53SJ:~/xswitcher$ /home/ewgenk/xswitcher/xswitcher
panic: permission error for /dev/uinput try cmd : sudo chmod +0666 /dev/uinput

goroutine 1 [running]:
main.main()
	/home/ewgenk/xswitcher/src/main.go:636 +0xb66
ewgenk@ewgenk-K53SJ:~/xswitcher$ 
Покажите что выводит
sudo ls -lah /home/ewgenk/xswitcher/xswitcher
ewgenk@ewgenk-K53SJ:~/xswitcher$ sudo ls -lah /home/ewgenk/xswitcher/xswitcher
[sudo] пароль для ewgenk: 
-rwsr-sr-x 1 ewgenk ewgenk 2,0M апр  7 10:29 /home/ewgenk/xswitcher/xswitcher
ewgenk@ewgenk-K53SJ:~/xswitcher$ 
Вот это: ewgenk ewgenk
Должен быть root:root
sudo chown root:root /home/ewgenk/xswitcher/xswitcher

Без этого suid даёт права ewgenk (которые и без того есть).
Не сработало
ewgenk@ewgenk-K53SJ:~$ sudo /home/ewgenk/xswitcher/xswitcher
[sudo] пароль для ewgenk: 
panic: permission error for /dev/uinput try cmd : sudo chmod +0666 /dev/uinput

goroutine 1 [running]:
main.main()
	/home/ewgenk/xswitcher/src/main.go:636 +0xb66
ewgenk@ewgenk-K53SJ:~$ 
См. выше.
Извините, ляпнул про sudo не подумав. Хотя уж пора бы запомнить.
Однако, крайне странно видеть вновь «permission error». Рухнуть после выдачи прав должно было на XOpenDisplay().
Включена какая-то защита?
Показывает ли
sudo ls -lah /dev/uinput

наличие устройства на месте?
ewgenk@ewgenk-K53SJ:~/xswitcher$ sudo ls -lah /dev/uinput
crw------- 1 root root 10, 223 апр  7 21:05 /dev/uinput
ewgenk@ewgenk-K53SJ:~/xswitcher$ 


Ноутбук со встроенной клавиатурой + мышка
Полагаю, вопрос решён выше.
Предварительный набросок HowTo:
  1. Из-под sudo работать не может, т.к. sudo обрезает контекст X'ов.
  2. Либо запускать из-под su (для отладки), либо навешивать suid. Обязателен владелец бинарника root. Ссылка «что такое suid».
  3. Чек-лист «если ничего не выходит читайте документацию».
У меня заработало почти всё (все переключения раскладок и половина «исправления набранного»).
Не работает только преобразование из английских букв в русские («обратный перевод производился чётко»): видно, что буквы стираются и перенабираются, но остаются те же самые.

Куда смотреть в поисках источника проблемы?
Может, дело в том, что «setxkbmap -query» выдаёт только одну раскладку?:
rules: evdev
model: pc105
layout: us

Для переключения обычно использую Alt+Shift с лампочкой для индикации, при старте системы запускается:
setxkbmap -v -option grp:switch,grp:alt_shift_toggle,grp_led:scroll us,ru
Да, иксы должны знать про обе раскладки (за номером 0 и 1). Потому что переключалка идёт к ним и требует «поставь локаль №n». А как её поставить, если нет в списке?
  • Не понятно как оно по Alt+Shift переключает. Где-то пропущен нюанс.

В похожую ситуацию я влипал когда пробовал прикрутить доморощенные скрипты.
Типа вот такого вредного совета.
  • Наверное, для подобных случаев надо прикрутить возможность запускать внешние скрипты вместо встроенного «дёрни за иксы». +Опция «дождаться завершения».

Скажите, пожалуйста, есть смысл пробовать запускать, если в системе три языка (en, ru, ua) с циклическим переключением?

Опишите подробнее, что Вы ожидаете.
Я закладывал свой кейс: «2 основных языка (0 и 1 локали) и ещё какие-то (e.g. китайский) редко».
Возможно, для Вашего случая есть вариант настроить хоткей для перекидывания порядка. Например, (en, ru, ua) vs (en, ua, ru).
Если (зачем-то) надо гонять именно по кольцу, это несложно устроить. Но предложите как это должно управляться.
Я, как закончу собирать «хотелки» — попробую сделать второй «подход к снаряду».

Я как раз хочу избавиться от кольца. Caps — en 50%, Shift+Caps — ru 40%, Ctrl+Caps — ua 10%

UFO just landed and posted this here
Статья, видимо, написана для фанатов gxneur (или скорее для фанатов автопереключения раскладки), к коим я отношу и себя. Спасибо автору, буду пробовать. Все люди и потребности у них разные. Мне вот нужно, чтобы автоматически и не надо переубеждать.
Вроде бы наоборот. Но без xneur, действительно, «котлеты подгорели».
Вкручивать автопереключение я лично не планирую, но (как обычно) есть минимум два выхода:
  • Взять имеющийся код и приделать свою функцию проверки. Или из xneur вытащить библиотеку. Но есть нюанс: xswitcher прямо сейчас включен уровнем ниже, и скен-коды от клавиатуры — совсем не то же что события из иксов. Будет желание — могу поделиться кусочком где я к иксам попробовал привернуть. «Много букв», на C.
  • Поучаствовать во второй части. И предложить приемлемый интерфейс для прикручивания «плагинов». Я совсем не против, но пока просто не знаю «как». Будет интерфейс (API) и желающие — появятся и плагины.

Выше в комментариях приводили ссылку на сборник скриптов.
Или распишите, что конкретно хочется. По Вашей ссылке — куча C++ кода под винду и отсутствие руководства по эксплуатации. Я такое не осилю.
Для Ubuntu 19.10 [pause] меняет слово как и ожидается, однако не переключает раскладку.
Ctrl, Shift также раскладку не трогают.
PuntoSwitcher под виндой работал быстрее, тут же надо секундочку-другую подождать, но в убунту все что связано со вводом с клавиатуры как-то неторопливо.
Есть две «жадные» до раскладки утилиты: ibus и fcitx. Подозреваю, что в ubuntu ibus вкрутили.
Посмотрите комментарии к «предыдущей серии» (если хотите их забороть). Тормоза в этом случае «рассосутся».
Если, наоборот, хочется «подружить» — нужно отыскать правильный интерфейс к смене раскладки (где-то в районе dbus копать).
  • Лично мне оказалось удобно выкинуть всё и оставить только индикатор раскладки. fcitx запускаю «руками», когда случается необходимость в «китайской грамоте».
Sign up to leave a comment.

Articles