Вопрос или проблема
Я хочу использовать внешнюю цифровую клавиатуру в качестве ‘макро-клавиатуры’, где каждая клавиша может выполнять указанное действие. Я уже создал пользовательскую xkb_keymap
для сопоставления клавиш с символами XF86
.
$ cat ~/.xinitrc
...
# Активная макро-клавиатура
macrokb=$( xinput list | sed -n 's|.*MOSART.*2\.4G.*id=\([0-9]*\).*keyboard.*|\1|p' | head -n1 )
if [ "$macrokb" ]; then
cat ~/.xkb/macros.xkb | xkbcomp -i $macrokb - $DISPLAY
fi
$ cat ~/.xkb/macros.xkb
xkb_keymap "macros" {
xkb_keycodes {
// 0 - Chrome
<WEB> = 90;
// / - Windows
<WIN> = 106;
// * - Win attach
<ATCH> = 63;
// BS - Win detach
<DTCH> = 22;
// enter - Terminal
<TERM> = 104;
// numlock - Настройки
<SETT> = 77;
};
xkb_types {
include "basic"
include "numpad"
};
xkb_compat { include "basic" };
xkb_symbols {
key.type = "ONE_LEVEL";
key <WEB> { [ XF86WWW ] };
key <WIN> { [ XF86Launch0 ] };
key <ATCH> { [ XF86Launch1 ] };
key <DTCH> { [ XF86Launch2 ] };
key <TERM> { [ XF86Terminal ] };
key <SETT> { [ XF86Tools ] };
};
};
Пользовательская раскладка клавиатуры успешно загружается и распознается с помощью xev
.
Пример:
Событие нажатия клавиши, серийный номер 41, синтетический NO, окно 0x5800001,
корень 0x4f7, подокон 0x0, время 5314499, (1656,414), корень:(1656,443),
состояние 0x10, код клавиши 106 (keysym 0x1008ff40, XF86Launch0), тот же экран YES,
XLookupString не дает 0 байт:
XmbLookupString не дает 0 байт:
XFilterEvent возвращает: False
Теперь возникает проблемная часть: когда я создаю пользовательское сочетание клавиш в KDE, оно успешно распознает XF86 keysym
, например, WWW
или Terminal
, но скрипт, который я предоставил, не выполняется (поэтому сочетание клавиш не распознается KDE).
Однако это не касается некоторых других клавиш (встроенных в мою основную клавиатуру), например, XF86AudioPlay
.
Как я могу решить эту проблему?
Ответ или решение
Проблема с пользовательскими сочетаниями клавиш KDE и специальными ключами XF86
Использование внешней клавиатуры для выполнения макросов в KDE – это отличный способ повысить продуктивность. Однако, как вы столкнулись, это может вызвать определенные сложности, особенно при использовании специальных клавиш XF86. Рассмотрим, как можно решить эту проблему, чтобы у вас работали все функции.
Описание проблемы
Как вы описали, вы создали собственную карту клавиш с использованием XKB, и специальные клавиши, такие как XF86WWW
и XF86Terminal
, успешно определяются через xev
. Однако, несмотря на то что KDE распознает эти символы при создании пользовательских сочетаний клавиш, сами команды не выполняются, в отличие от встроенных клавиш, таких как XF86AudioPlay
.
Возможные причины
-
Кодировка символов: Проблема может заключаться в том, как обрабатываются ключи XF86 вашей систему. Убедитесь, что ваши настройки и кодировка правильно распознают и обрабатывают эти символы.
-
Конфликт с другими настройками: Иногда могут возникать конфликты между пользовательскими сочетаниями клавиш и уже существующими. Проверьте, не заняты ли ваши сочетания другими функциями или приложениями.
-
Права доступа и выполнение скриптов: Убедитесь, что скрипты, которые вы вызываете через сочетания клавиш, имеют соответствующие права на выполнение и что KDE правильно настроен на их исполнение.
Шаги для решения проблемы
-
Проверка конфигурации XKB:
Убедитесь, что ваша карта клавиш корректно загружена и функции, ассоциированные сXF86
клавишами, определены правильно. Используйтеxev
для проверки. Если функция возвращает ноль (0) приXLookupString
, это может указывать на проблему обработки клавиш. -
Тестирование на других приложениях:
Попробуйте использовать ваши клавиши XF86 в других приложениях или окружениях рабочего стола, таких как GNOME или XFCE. Это поможет выяснить, является ли проблема специфичной для KDE или широкой. -
Логи KDE:
Проверьте системные журналы (например,journalctl
или логи KDE) на наличие сообщений об ошибках, связанных с выполнением скриптов или особенностями работы клавиш. -
Настройка пользовательских сочетаний клавиш:
Убедитесь, что вы правильно настроили сочетания клавиш в системных настройках KDE:- Откройте "Системные настройки".
- Перейдите в раздел "Сочетания клавиш".
- Добавьте новое сочетание клавиш и проверьте, корректно ли оно реагирует на нажатия на клавиши XF86.
-
Обновление ПО:
Убедитесь, что ваше рабочее окружение KDE и все зависимости обновлены до последних версий. Иногда проблемы с совместимостью могут быть устранены в новых релизах.
Заключение
Проблема с использованием специальных клавиш XF86 в KDE может быть вызвана несколькими факторами, включая конфигурацию XKB и возможные конфликты с уже существующими сочетаниями клавиш. Следуя описанным рекомендациям, вы сможете диагностировать и решить возникшие трудности. Если ни один из шагов не сработает, рекомендуется обратиться к сообществу KDE или на специализированные форумы для получения дополнительной поддержки.