на дистрибутивах на основе dpkg -,
Список пакетов со статусом по дате,
grep install /var/log/dpkg.log
Используя sway версии 1.5.1, я могу обеспечить от next
до xkb_switch_layout
. Таким образом, вам больше не нужно получать текущий индекс и общее количество элементов.
swaymsg input "1:1:AT_Translated_Set_2_keyboard" xkb_switch_layout next
К сожалению, я не могу использовать type:keyboard
вместо идентификатора. Вы можете найти свой идентификатор с помощью swaymsg -t get_inputs
. Если вы хотите увидеть все доступные макеты и индекс текущего макета, вам нужно добавить --raw
.
Вы можете получить текущий индекс раскладки клавиатуры для ввода, запустив swaymsg -t get_inputs
, что даст вам JSON, содержащий массив вводов и связанных с ними настроек.
Ключи, которые вы ищете, это xkb_active_layout_index
и xkb_layout_names
.
Вот пример вывода команды в моей системе (, обрезанный для отображения соответствующей части):
(...)
{
"identifier": "16700:8467:Dell_KB216_Wired_Keyboard",
"name": "Dell KB216 Wired Keyboard",
"vendor": 16700,
"product": 8467,
"type": "keyboard",
"xkb_layout_names": [
"English (US)",
"Romanian (standard)"
],
"xkb_active_layout_index": 0,
"xkb_active_layout_name": "English (US)",
"libinput": {
"send_events": "enabled"
}
},
(...)
Чтобы имитировать поведение переключателя качания, вы можете использовать следующий код:
inputid="YOUR_KEYBOARD_INPUT_IDENTIFIER"
inputdata=$(swaymsg -t get_inputs | jq ".[] | select(.identifier==\"$inputid\")")
index=$(echo "$inputdata" | jq ".xkb_active_layout_index")
layoutcount=$(echo "$inputdata" | jq ".xkb_layout_names | length")
swaymsg input "$inputid" xkb_switch_layout $((($index + 1) % $layoutcount))
Использование sway версии 1.4
У вас уже есть правильная конфигурация. Super+Space должен изменить раскладку клавиатуры (, что означает win_space_toggle
). Существуют и другие конфигурации клавиш для переключения раскладок клавиатуры, вы можете найти их на справочных страницах :man 7 xkeyboard-config
.