Переключение языка компоновки без режима / без состояния с помощью Caps Lock, опять же (18.04 LTS Bionic Beaver)

12

Об этом спрашивали бесчисленное количество раз, поэтому я постараюсь быть кратким.

У меня есть две схемы ввода , украинская и английская, и я хочу:

  • использовать Caps Lockдля быстрого переключения;
  • не налагайте никаких задержек , я быстрый типер;
  • нет ошибок режима :
    • (любое количество) CapsLockустанавливает английский,
    • (любое количество) ShiftCapsLockнаборов украинских;
  • увидеть текущий макет в стандартном виджете.

Я уже попробовал три (!) Графических интерфейса для настройки этого, Настройки Gnome gnome-tweak-tooldconf-editor/ gsettings. Ничего не работает Tweaksвылетает случайно.

Достаточно домашней работы

Я сам спросил об этом 4 года назад за 14,04 LTS. С тех пор, что всплывающее окно UI появилось, и все сломалось. Теперь я могу легко настроить переключение с сохранением состояния CapsLock , но даже тогда это идет с такой раздражающей задержкой. В основном непригоден для использования в тех случаях, когда мне нужно переключать язык 4-5 раз за предложение.

Этот поток предлагает caps:noneвариант XKB в качестве обходного пути. Я пробовал это, как с gsettingsCLI dconf-editor, так и в комбинации с grp:shift_caps_switchопцией XKB. Нет кости. Что-то превосходит эти основные возможности XKB, как кажется.

Этот поток предлагает caps:menuопцию XKB в качестве хака, чтобы иметь возможность привязки CapsLockв Gnome Settings→ Устройства → Клавиатура. Это вроде работает, но А) дает циклическое переключение / отслеживание состояния; Б) Я должен ждать приличного таймаута на каждом переключателе.

Эта ветка спрашивает, что именно мне нужно, но она остается без ответа и даже хуже: закрыта как дубликат двух других вопросов (???), ни один из которых не совпадает, и ни один из которых не дает мне рабочего решения. Что с вами, ребята?

Есть еще одно точное совпадение - увы, также без ответа!


Требуются: чистый раствор

ulidtko
источник
1
А как насчет репутации вместо $ для награды, скажем, +50 очков репутации?
Карел
@karel Я не вижу в этом ничего плохого, однако «свежие» вопросы не имеют права на вознаграждение представителей на stackexchange. Награда может быть начата по вопросу через два дня после того, как вопрос был задан ; Пожалуйста, отмените голосование.
ulidtko
Я не понизил. Все, что я сделал, было прокомментировано.
Карел
ОК. Тем не менее, я предлагал и зарабатывал награды за репутацию именно на AskUbuntu. Этот вопрос тоже будет задан, когда придет время.
ulidtko
1
@ulidtko Я постараюсь взять пик gnome-tweaks-tool. Не буду обещать, смогу ли я что-нибудь выкопать, и мне понадобится немало времени, так как в последнее время я занят, но я выложу ответ, если выкопаю что-нибудь, связанное с gnome-tweak-tool. Не стесняйтесь оставлять мне комментарии здесь или связываться со мной другими способами
Сергей Колодяжный

Ответы:

5

В Ubuntu 18.04 по умолчанию есть опция выбора Caps_Lockи Shift+ Caps_Lockдля достижения искомого поведения gnome-tweaks. Но это не работает и не может получить причину почему.

введите описание изображения здесь

Мне удалось добиться этого поведения с помощью нижеприведенного решения.

Смотрите эту ссылку для 20Sec Video. https://imgur.com/QNdrVqa

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

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()"

и

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

хорошо, они работают.

введите описание изображения здесь

нам нужно привязать эти команды к нажатию клавиш Caps_Lockи Shift+Caps_Lock

это можно сделать, xbindkeysесли xbindkeys еще не установлен, установить егоsudo apt install xbindkeys

  1. создать файл .xbindkeysrcв папке $ HOME
    touch ~/.xbindkeysrc
  2. чтобы узнать код / ​​идентификатор ключа, как бы он ни назывался,
    запустите, как xbindkeys --keyтолько появится белое поле, нажмите Caps_Lockкнопку, сделайте это также для Shiftкнопки и скопируйте коды / идентификаторы ключей, как показано ниже

введите описание изображения здесь

  1. этот шаг не является обязательным. Отключите Caps Lock. Смотрите ниже GIF. Если блокировка заглавными буквами не отключена ... при многократном нажатии клавиши она будет переключаться при попытке изменить язык. Я отключил это. но это основано на ваших интересах.

введите описание изображения здесь

  1. Откройте файл .xbindkeysrc
    gedit ~/.xbindkeysrcи отредактируйте файл, как показано ниже, основываясь на результатах описанных выше шагов.

Измените значения в приведенном ниже контенте в соответствии с результатами, полученными на шаге 2 выше. Содержание:

"gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell --method org.gnome.Shell.Eval "imports.ui.status.keyboard.getInputSourceManager().inputSources[0].activate()""
m:0x10 + c:66

"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()""
Shift+Mod2 + Shift_L+m:0x10 + c:66
  1. Сохраните файл, закройте и перезагрузите компьютер.
Пратапа
источник
2
OMG это сработало! Мне даже не нужно было выходить из системы, даже без перезагрузки ( xbindkeys --poll-rc). Я также оставил grp:shift_caps_switchпараметр XKB включенным - который изменил способ печати моих кодов клавиш ( m:0x0 + c:66 ISO_First_Group& m:0x1 + c:66 Shift + ISO_First_Group); нет проблем с этим. Даже светодиод клавиатуры светится! Потрясающая работа, ты должен был получить эту награду. (Авторы гномов-твиков, кем бы они ни были, получают сварливое недовольство от меня и других.)
ulidtko
5

Существует отчет об ошибке, на который вы можете подписаться:

Отчет об ошибке гласит:

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

Действия по воспроизведению:

  1. центральная клавиатура gnome-control
  2. Прокрутите вниз до раздела «Печатание»
  3. Нажмите на Перейти к следующему источнику ввода
  4. Пресс-шапки

Ожидаемый результат: клавиша Caps Lock принимается как клавиша переключения. Фактические результаты: клавиша Caps игнорируется в окне выбора.

PS То же самое касается «Переключение на предыдущий источник ввода» и комбинации клавиш Shift-Caps.

Обходные пути ошибок

Ошибка в настоящее время находится в «Списке желаний». Эти обходные пути предлагаются:

Обходной путь 1

Найден обходной путь для этой ошибки:

  1. Установить dconf-редактор (sudo apt-get установить dconf-editor)
  2. Перейдите в / org / gnome / desktop / wm / keybindings /
  3. Выберите ключ switch-input-source, выключите «Use default value» и установите для «Custom value» значение ['Caps_Lock']
  4. (Необязательно) Вы также можете изменить значение для switch-input-source-backward на что-то вроде ['Caps_Lock'] (снова отключив «Использовать значение по умолчанию»)

Обходной путь 2

Еще один способ сделать это: 1. Установить GNOME Tweaks (gnome-tweak-tool) 2. Открыть приложение Tweaks 3. Переключиться на панель «Клавиатура и мышь» 4. Нажмите «Дополнительные параметры макета» 5. Используйте раздел «Переключение на другой макет»

Подписаться на сообщение об ошибке

Я бы рекомендовал подписаться на отчет об ошибках и добавить свой собственный опыт. Чем больше людей подписывается на отчет об ошибке, тем быстрее приходит решение (обычно).

WinEunuuchs2Unix
источник
Обходной путь 1 не соответствует моим требованиям, он дает циклическое переключение, а это не то, что я хочу. Обходной путь 2 (Gnome-Tweaks) был судим и избит до смерти; Я могу заставить его рухнуть, но не могу заставить его работать. Спасибо за (еще одну) ссылку, хотя.
ulidtko
Я поддержал ваш вопрос, чтобы, надеюсь, привлечь больше внимания. Размещение всех ваших проб и ошибок в отчете об ошибке может быть полезным.
WinEunuuchs2Unix