2

Это то, о чем я мечтаю уже много лет. Я время от времени искал решение для Google, но так и не нашел ничего. Однажды кто-то из IRC сказал мне, что это возможно, но никогда не видел, как это можно сделать.

Вот чего я хочу.

Я использую раскладки клавиатуры en и ru как два основных языка ввода, с которыми я работаю ежедневно. Я использую Shift+Caps_Lock для переключения этих макетов. Иногда мне нужно ввести ua и pl, и я хочу, чтобы они были в отдельной группе раскладок, которые можно переключать, нажимая скажем L_Win+Caps_Lock.

Таким образом, всякий раз, когда я нажимаю L_Win+Caps_Lock, я начинаю циклически переключаться между ua и pl, а когда мне нужно вернуться к моей стандартной группе en и ru, я нажимаю Shift+Caps_Lock.

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

Ну, дорогие супер пользователи, это можно сделать в Linux? Если да, то как?

2 ответа2

2

Я сделал небольшое улучшение для этого сценария. Теперь это не сломает переключатель клавиатуры WM. Это работает немного по-другому, как хочет TS, но я думаю, что это более удобно, по крайней мере, для меня

Вы должны изменить модель клавиатуры и опции, если хотите

#!/bin/sh
current=`setxkbmap -query | grep layout|cut  -d ',' -f 2`
if [ "$current" == 'pl' ]
then 
    notify-send -t 1500 -i keyboard "Keyboard layouts: EN / RU"
    setxkbmap -model logitech_base -layout en,ru -variant , -option grp:caps_toggle,compose:rwin
else 
    notify-send -t 1500 -i keyboard "Keyboard layouts: UA / PL"
    setxkbmap -model logitech_base -layout ua,pl -variant , -option grp:caps_toggle,compose:rwin
fi
1

Возможно, самый простой способ - использовать переключатель раскладки клавиатуры вашего оконного менеджера для основных раскладок (en и ru), а затем использовать следующий скрипт, сопоставленный с L_Win+Caps_Lock:

#!/bin/bash 

current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
if [ "$current" == 'ua' ]
then
    setxkbmap -layout pl
else
    setxkbmap -layout ua
fi

Если вы сохраните скрипт как toggle_layout.sh , сделаете его исполняемым и сопоставите его с нужным сочетанием клавиш, используя инструменты вашего оконного менеджера, он должен делать то, что вам нужно. Скрипт просто проверяет, используете ли вы в настоящее время макет ua и, если нет, переключается на pl .


ОБНОВИТЬ:

Я получил это работать следующим образом:

  1. Сопоставьте сценарий выше с Ctrl+8 (это клавиатура 8).
  2. Сделайте еще один скрипт для переключения между основными макетами:

    #!/bin/bash 
    
    current=`setxkbmap -query | grep layout | fold -s2 | tail -n 1`
    if [ "$current" == 'en' ]
    then
        setxkbmap -layout ru
    else
        setxkbmap -layout en
    fi
    
  3. Отобразите сценарий с шага 2 на Ctrl+2 (это клавиатура 2).

Убедитесь, что вы используете клавиши, которые не меняются при изменении макета (именно поэтому я использовал клавиатуру в этом примере). Я не знаю, сможете ли вы сделать это, не нарушая встроенный в WM способ изменения макетов, но по крайней мере это должно сработать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .