Вопрос или проблема
Немного предыстории: у меня есть клавиатура 8bitdo, которая оснащена двумя дополнительными клавишами. У меня также есть два монитора, и я хочу использовать их для переключения между “левым”, “правым” и “об обоих”. Я использую KDE.
Одна из клавиш имитирует Ctrl+Meta+Alt+Z, что связано с переключением на левый экран в KDE, другая — Ctrl+Meta+Shift+Z, связанная с правым. Теперь переключение на “оба” — это сложная часть. В X я написал себе быстрое консольное приложение на Qt, которое запрашивало модификаторы клавиатуры, оно искало Ctrl+Meta, затем либо Alt (переключение на левый), либо Shift (переключение на правый), или если оба модификатора присутствовали в течение 0,3 секунды, оно переключалось на оба экрана.
К сожалению, это, похоже, не работает под Wayland, где QGuiApplication::queryKeyboardModifiers()
всегда возвращает отсутствие модификаторов. Я думаю, это связано с тем, как работает Wayland.
Знаете ли вы, есть ли какая-либо функциональность в KDE или что-то, что я мог бы сделать в Wayland, чтобы получить желаемую функциональность? Думаю, libinput тоже сработает, у меня в настройках запущен https://github.com/oblitum/Interception.
Ответ или решение
Использование Wayland и KDE для переключения между двумя мониторами с пользовательскими сочетаниями клавиш
Современные операционные системы и графические среды, такие как KDE, обеспечивают множество возможностей для работы с несколькими мониторами. Однако, при переходе на Wayland, вам может понадобиться адаптировать свои настройки под новый протокол. В данном материале мы рассмотрим способы решения вашей задачи по переключению между "левым", "правым" и "оба" мониторами, используя вашу клавиатуру 8bitdo с дополнительными клавишами.
Фоновая информация
У вас есть клавиатура 8bitdo с двумя дополнительными кнопками, которые эмулируют сочетания клавиш. Вы уже привязали одно сочетание (Ctrl+Meta+Alt+Z) к переключению на левый монитор и другое (Ctrl+Meta+Shift+Z) для правого. Переключение на два экрана требует более сложного подхода.
Производя диагностику, вы заметили, что функция QGuiApplication::queryKeyboardModifiers()
в Qt не работает как ожидалось на Wayland, возвращая несуществующие модификаторы. Это связано с особенностями реализации Wayland в сравнении с X, и поэтому потребуется иной подход.
Решение проблемы
Вот несколько подходов, которые вы можете использовать для настройки вашей системы:
1. Использование встроенных настроек KDE
KDE Plasma предоставляет возможность настройки горячих клавиш для различных задач, включая переключение между мониторами. Для доступа к настройкам горячих клавиш выполните следующие действия:
- Откройте «Системные настройки».
- Перейдите в раздел «Сочетания клавиш».
- Выберите «Глобальные сочетания» и добавьте новые сочетания для управления дисплеями.
Однако для задачи переключения между экранами с использованием комбинаций клавиш может потребоваться более детальная настройка с использованием скриптов.
2. Скрипт на базе xrandr
Хотя xrandr
не используется в Wayland, вы можете добиться аналогичного результата с помощью команды wlr-randr
в Wayland. Создайте скрипт на shell, который будет переключать дисплеи:
#!/bin/bash
if [ "$1" = "left" ]; then
wlr-randr --output <левый_монитор> --auto --primary
wlr-randr --output <правый_монитор> --off
elif [ "$1" = "right" ]; then
wlr-randr --output <правый_монитор> --auto
wlr-randr --output <левый_монитор> --off
elif [ "$1" = "both" ]; then
wlr-randr --output <левый_монитор> --auto --left-of <правый_монитор>
wlr-randr --output <правый_монитор> --auto
fi
Замените <левый_монитор>
и <правый_монитор>
на соответствующие идентификаторы ваших мониторов. Этот скрипт можно вызывать системой по заданным сочетаниям клавиш для управления выставленными конфигурациями.
3. Адаптация с использованием libinput
Если вы хотите интегрировать вашу клавиатуру 8bitdo на более глубоком уровне, рассмотрите возможность использования libinput
. Хотя это требует углубленных знаний о работе системы ввода и настройки устройств, ваша база Interception может помочь.
Создайте конфиг, который будет отслеживать нажатия клавиш и полученные модификаторы. Далее, строя логику на основе времени нажатия, вы сможете четко разделить поведение на «левый», «правый» и «оба» экрана.
Заключение
Кратко подытоживая, необходимость адаптировать ваше решение на Wayland обусловлена его внутренней архитектурой, отличающейся от X-систем. Используя настройку горячих клавиш в KDE, написание простых скриптов и, при необходимости, глубокую интеграцию с libinput
, вы сможете легко добиться необходимой функциональности для переключения между мониторами. Творческий подход и использование скриптов помогут вам автоматизировать многие задачи, создавая более удобную рабочую среду.
Если у вас возникнут вопросы или понадобится помощь в настройке, не стесняйтесь обращаться за поддержкой.