Как настроить различение левых и правых клавиш Shift и Ctrl в KDE 6?
Я хочу настроить переключение языка ввода в KDE с использованием разных клавиш: английский язык - левой клавишей, русский язык - правой клавишей.
Однако KDE 6 не различает нажатия левых и правых служебных клавиш. При попытке настроить сочетания клавиш через раздел “Клавиатура” в стандартных “Параметрах системы” я вижу только Control и Shift - без различия между левыми и правыми клавишами. Эта проблема наблюдается как в X11 (openSUSE Tumbleweed), так и в Wayland (Fedora KDE Plasma Desktop - версии 42 и beta 43).
Утилита xev корректно идентифицирует левые и правые клавиши, поэтому проблема не в оборудовании.
Возможно ли настроить именно KDE (не предлагать GNOME и другие окружения) с Wayland (предпочтительно) или X11/Xorg на различение левых и правых служебных клавиш? Если такая возможность существует, то как именно это реализовать?
В KDE 6 настроить различение левых и правых клавиш Shift и Ctrl возможно несколькими способами. Основные решения включают использование утилиты xremap, настройку XKB-карт и использование расширенных параметров KDE.
Contents
- Основные решения для различения клавиш
- Настройка с помощью xremap
- Настройка XKB-карт в KDE
- Расширенные параметры системы KDE
- Особенности KDE Plasma 6.1
- Сравнение методов
- Заключение
Основные решения для различения клавиш
Для различения левых и правых клавиш Shift и Ctrl в KDE 6 доступно несколько подходов:
- xremap - современная утилита для переназначения клавиш, работающая как с Wayland, так и с X11
- XKB-карты - настройка системных карт клавиатуры через KDE
- Расширенные параметры системы - встроенные возможности KDE для расширенной конфигурации клавиатуры
Каждый метод имеет свои преимущества и ограничения, и выбор зависит от ваших конкретных потребностей и технических навыков.
Настройка с помощью xremap
xremap - это мощная утилита, написанная на Rust, которая позволяет переназначать клавиши и сочетания клавиш в Linux, включая различение левых и правых модификаторов.
Установка xremap
# Для Fedora/RHEL/CentOS
sudo dnf install xremap
# Для openSUSE
sudo zypper install xremap
# Или через GitHub для последней версии
curl -sSf https://git.io/Jqih7 | sh
Базовая конфигураура для переключения языков
Создайте конфигурационный файл ~/.config/xremap/config.yml:
modmap:
- remap:
Shift_L:
to: Shift_L
Shift_R:
to: Shift_R
Ctrl_L:
to: Ctrl_L
Ctrl_R:
to: Ctrl_R
keymap:
# Переключение на английский при нажатии левого Shift
- Shift_L:
release:
setxkbmap us
# Переключение на русский при нажатии правого Shift
- Shift_R:
release:
setxkbmap ru
# Пример переназначения левого Ctrl в Hyper-ключ
- Ctrl_L+Shift_L:
- to: Hyper_L
Запуск xremap
Добавьте xremap в автозагрузку KDE:
- Откройте “Параметры системы” → “Автозагрузка приложений”
- Нажмите “Добавить программу”
- Укажите путь к xremap и путь к конфигурационному файлу
Преимущество xremap в том, что он работает на уровне Wayland и может обрабатывать нажатия клавиш до того, как они достигнут приложений, обеспечивая системное переназначение.
Настройка XKB-карт в KDE
Метод 1: Создание пользовательской XKB-раскладки
- Откройте “Параметры системы” → “Устройства ввода” → “Клавиатура”
- Перейдите в раздел “Раскладки” → “Параметры раскладок”
- Создайте новую раскладку на основе существующей
Для различения левых и правых клавиш можно создать пользовательский файл XKB:
# Создайте директорию для пользовательских символов
mkdir -p ~/.xkb/symbols
# Создайте файл с символами
cat > ~/.xkb/symbols/custom << 'EOF'
partial modifier_keys
xkb_symbols "custom_shift" {
// Левый Shift для английского
key <LSGT> {
type="ONE_LEVEL",
symbols[Group1]= [ Shift_L ]
};
// Правый Shift для русского
key <RALT> {
type="ONE_LEVEL",
symbols[Group1]= [ Shift_R ]
};
};
EOF
Метод 2: Изменение системных XKB-правил
- Создайте файл с правилами:
sudo mkdir -p /usr/share/X11/xkb/rules
sudo nano /usr/share/X11/xkb/rules/custom
-
Добавьте свои правила в файл.
-
Используйте новую раскладку в KDE:
- “Параметры системы” → “Устройства ввода” → “Клавиатура” → “Добавить раскладку”
- Выберите вашу пользовательскую раскладку
Этот метод требует системных прав и может быть сложнее в настройке, но обеспечивает глубокую интеграцию с системой XKB.
Расширенные параметры системы KDE
KDE предоставляет расширенные параметры для настройки клавиатуры:
- Откройте “Параметры системы” → “Устройства ввода” → “Клавиатура”
- Перейдите в раздел “Дополнительно”
- Настройте параметры:
- “Клавиша выбора 3-го уровня”
- “Поведение клавиши Shift”
- “Дополнительные параметры клавиатуры”
Для различения левых и правых клавиш можно использовать:
- Клавиша выбора 3-го уровня: назначьте Caps Lock или другую клавишу для доступа к дополнительным символам
- Составные клавиши: настройте комбинации с Ctrl, Alt и Shift
Важно: В KDE Plasma 6 стандартные настройки могут не показывать различие между левыми и правыми клавишами, но расширенные параметры предлагают больше возможностей.
Особенности KDE Plasma 6.1
В KDE Plasma 6.1 были исправлены некоторые проблемы с переключением раскладок:
- Ctrl+Shift теперь корректно работает для переключения раскладок
- Для настройки необходимо перейти в “Параметры системы” → “Устройства ввода” → “Клавиатура”
- В разделе “Сочетания клавиш” для переключения раскладок:
- Удалите стандартное сочетание из раздела “Основное”
- Добавьте в раздел “Альтернативное”
Источник: Reddit - CTRL-Shift for changing keyboard layout now works correctly in Linux
Для вашей задачи с левой и правой клавишами Shift, KDE 6.1 предоставляет более стабильную основу для работы с раскладками.
Сравнение методов
| Метод | Плюсы | Минусы | Сложность |
|---|---|---|---|
| xremap | Работает в Wayland, гибкая конфигурация, системное переназначение | Требует установки, может конфликтовать с другими утилитами | Средняя |
| XKB-карты | Глубокая интеграция с системой, работает на уровне ядра | Требует системных прав, сложнее в настройке | Высокая |
| Расширенные настройки KDE | Не требует установки, интегрирован в KDE | Ограниченные возможности в Wayland, не всегда показывает лев/прав | Низкая |
Рекомендация: Для вашей задачи с переключением языков через левый и правый Shift лучше всего подходит xremap, так как он:
- Работает корректно в Wayland
- Позволяет точно настроить поведение каждой клавиши
- Не требует глубоких знаний системных файлов
- Легко настраивается через YAML-конфигурацию
Заключение
- xremap - наиболее эффективное решение для различения левых и правых клавиш в KDE 6, особенно в Wayland
- XKB-карты предоставляют системный уровень интеграции, но требуют более сложной настройки
- KDE Plasma 6.1 улучшил работу с переключением раскладок, но для различения левых/правых клавиш все равно дополнительные инструменты
- Для вашей конкретной задачи (английский - левый Shift, русский - правый Shift) рекомендуется использовать xremap с конфигурацией на основе
setxkbmap
Начните с настройки xremap - это обеспечит вам максимальную гибкость и надежность работы в обеих сессиях (Wayland и X11). Если возникнут сложности, можно рассмотреть создание пользовательской XKB-раскладки для глубокой интеграции с системой.
Источники
- GitHub - xremap/xremap: Key remapper for X11 and Wayland
- Reddit - CTRL-Shift for changing keyboard layout now works correctly in Linux
- KDE Discuss - How to use Super and Hyper as separate modifiers for keyboard shortcuts (Plasma 6 on Wayland)
- Unix & Linux Stack Exchange - How to customise keyboard mappings with Wayland
- Reddit - r/kde on Reddit: Can I remap keys within Plasma 6?
- Super User - How to remap CAPS LOCK on Wayland?
- KDE Discuss - Remap keys on plasma 6 wayland
- Paolo Mainardi - Mastering Key Remapping on Linux: A Practical Guide with xremap