Сценарий для переключения setxkbmap

Они уже - пакет - просто используют pkgadd -d /path/to/cdrom/Product SUNWjaf SUNWjato SUNWjmail или независимо от того, что родительский каталог содержит те подкаталоги.

8
15.09.2012, 05:15
4 ответа

Я не знаю, какую Настольную среду Вы выполняете, как Вы собираетесь присвоиться, сочетание клавиш может варьироваться, но этот сценарий работает глобально, по крайней мере, на моем Ubuntu 12.04 box и Arch Linux:

#!/bin/bash

(setxkbmap -query | grep -q "layout:\s\+us") && setxkbmap se || setxkbmap us
3
27.01.2020, 20:11
  • 1
    К сожалению, это не работает при изменении расположения с помощью gui метода. По крайней мере, это не делает на моем xfce поле. Это только работает при использовании setxkbmap для переключения разметок. Единственным путем я нашел, что всегда, последовательно работы анализируют xmodmap как в моем ответе ниже. –  terdon♦ 01.09.2012, 20:40
  • 2
    @terdon, это работает, по крайней мере, над моим полем Ubuntu 12.04, Вы попробовали это в своей системе? –  daisy 02.09.2012, 04:22
  • 3
    Да, верьте мне, я провел долгое время, имея дело с этим типом проблемы. Я регулярно переключаюсь между 3 раскладками клавиатуры (нас, франк, es) и между двумя физическими клавиатурами, один с американским расположением и один с испанским языком. Если я использую апплет на своей tint2 панели для изменения раскладки клавиатуры, нет никакого различия вообще в выводе setxkbmap. То же идет, если я переключаю разметки, израсходовав набор ярлыка через keyboard shortcuts GUI на моем LMDE. setxkbmap только изменения, когда я переключаю использование его. –  terdon♦ 02.09.2012, 04:40
  • 4
    Действительно аккуратный с с одним решением для строки.Спасибо. –  Fredrik 02.09.2012, 17:27
  • 5
    То, что я закончил тем, что делал, сохраняло строку в .sh файл в моем домашнем dir, Затем отобразил./toggleLayout.sh на ctrl-esc –  Fredrik 02.09.2012, 17:28

Существуют различные ответы на подобные вопросы. Однако ни один из них не работает надежно на меня.

Следующий сценарий должен работать во всех случаях. Это, конечно, работает над моей debian системой при переключении разметок с setxkbmap:

#!/bin/bash
seven=`xmodmap -pke | grep "keycode  16" | awk '{print \$5}'` 
## If this is the "us" layout
if [ $seven == "ampersand" ]; then
    setxkbmap se
else
  setxkbmap us
fi

Сценарий анализирует вывод xmodmap, чтобы видеть, является ли текущий макет "нами" или "se". В "нас" расположение SHIFT+7 отображается на "амперсанде". Если Вы только переключитесь между "нами" и "se" разметками, имея "амперсанд" на 7 средствах Вы используете "нас", которые расположение и сценарий изменят на "se". Если у Вас нет "амперсанда" на 7, сценарий переключается на "нас".

4
27.01.2020, 20:11

лучший способ не состоял бы в том, чтобы использовать сценарий, но загрузить клавиатуру с двумя слоями (например: setxmodmap "us,se") и переопределите Ctrl-Esc для отправки ISO_Next_Group

Посмотрите на этот ответ на xkb для того, как переопределить некоторые ключи без потребности отредактировать основные файлы по умолчанию (таким образом, никакая потребность быть корнем). В локальном файле символов (например: ~/.xkb/symbols/mysymbols) поместите маленький раздел как:

partial modifier_keys 
xkb_symbols "ctrl_esc_toggle" {
    key <ESC> {
        type[Group1]="PC_CONTROL_LEVEL2",
        symbols[Group1]= [ Escape,     ISO_Next_Group ]
    };
};

PC_CONTROL_LEVEL2 говорит, что sencond символ для того ключа получен с Управлением (вместо Сдвига).

и в локальном файле контурной карты (например: ~/.xkb/keymap/mykbd; можно создать его с setxkbmap "us,se" ; setxkbmap -print > ~/.xkb/keymap/mykbd ) измените xkb_symbols строку для добавления "mysymbols (ctr_esc_toggle)", таким образом, у Вас будет что-то как:

xkb_symbols   { include "pc+us+se:2+inet(evdev)+terminate(ctrl_alt_bksp)+compose(rwin)+mysymbols(ctr_esc_toggle)"   };

(обратите внимание, что "se:2", эти ":2" говорит для загрузки "se" определений символов как Group2; можно сложить различные группы).

можно теперь загрузить его: xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY затем Ctrl-Esc переключится между "нами" и "se" разметками.

ОБРАТИТЕ ВНИМАНИЕ однако, что необходимо нажать Ctrl (и держать) перед Esc; другим путем это не работает (это потребовало бы определения виртуального модификатора для Escape, и я не знаю, как сделать это),

4
27.01.2020, 20:11
  • 1
    Как был бы leftwin+leftalt+space быть похожими? –  Hotschke 02.12.2015, 19:13
  • 2
    @Hotschke, спасибо { include "pc+us+ru:2+inet(evdev)+group(win_space_toggle)" }; –  contributorpw 08.07.2016, 21:32

Если вы хотите переключаться между вариантами на одном языке, например, между us lang и us lang с вариантом intl:

#!/bin/bash

setxkbmap -query | grep -q 'variant:\s\+intl') && setxkbmap -layout us || setxkbmap -layout us -variant intl
0
18.08.2020, 22:06

Теги

Похожие вопросы