Вопрос или проблема
Мне удалось успешно создать конфигурацию xkb для пользовательской раскладки клавиатуры. Однако одно, чего я не могу добиться, – это настроить другую клавишу с поведением “Home”. Я хотел бы, чтобы эта другая клавиша работала как оригинальная клавиша “HOME”, включая ситуацию, когда Shift удерживается вместе с Home (выделять все между текущим положением и началом).
Вот отрывок из одной из моих попыток.
default partial alphanumeric_keys modifier_keys
xkb_symbols "myconfig" {
name[Group1]= "namegroup";
include "latin"
key <AB09> { [ Home, Home, NoSymbol, NoSymbol ] };
};
Нажатие клавиши самостоятельно заставляет ее работать как клавиша Home, как и задумано, но нажатие вместе с Shift заставляет ее вести себя так, как будто я просто нажимаю клавишу Home без Shift (то есть она ничего не выделяет).
Действительно, когда я использую xkbcli interactive-wayland
, я вижу, как эта новая клавиша, которую я настраиваю, отличается от оригинальной клавиши HOME. Нажатие Shift вместе с оригинальной клавишей HOME дает seat0: keysyms [ Home ] unicode [ ] layout [ namegroup (0) ] level [ 0 ] mods [ Shift ] leds [ ]
, в то время как нажатие Shift вместе с новой клавишей (“AB09”) дает seat0: keysyms [ Home ] unicode [ ] layout [ namegroup (0) ] level [ 1 ] mods [ -Shift ] leds [ ]
. Это, я полагаю, показывает, что модификатор Shift убирается до того, как сообщение поступает в приложение, которое, таким образом, не имеет возможности реагировать на удерживание Shift. В отличие от этого, следует отметить, что нажатие Shift вместе с буквой (в стандартной раскладке xkb, такой как “fr”) действительно убирает модификатор Shift, как и ожидалось, так что, по всей видимости, по умолчанию для клавиш, таких как HOME, в xkb предусмотрено особое отношение. Я не знаю, где и как это указано.
Я видел некоторые посты о ключевом слове “preserve” или о перенаправляющих действиях, но это, похоже, относится к ранним версиям до Wayland.
Кто-нибудь знает, как заставить AB09
вести себя как (поведение по умолчанию) клавиша HOME
?
Или, возможно, кто-нибудь знает, где конфигурируется поведение оригинальной клавиши HOME? Я не могу найти ни одного места в обычной директории файлов конфигурации xkb (/usr/share/X11/xkb/
), которое указывает на особое обращение с этой клавишей (или клавишами со стрелками, которые ведут себя аналогично), по сравнению с любой другой клавишей, такой как буквенные клавиши. Копирование такой специальной конфигурации, вероятно, решит мою проблему.
Ответ или решение
Чтобы условно удалить модификатор Shift для клавиши, которую вы хотите настроить на аналогичное поведение клавиши "Home" в вашей пользовательской раскладке XKB, необходимо внести несколько изменений в конфигурацию XKB.
Понимание проблемы
Как вы заметили, при нажатии комбинации клавиш Shift + ваша настроенная клавиша (например, <AB09>
) не передает модификатор Shift так, как это делается для оригинальной клавиши Home. Это объясняется тем, что работа с модификаторами для специальных клавиш, таких как Home, реализована несколько иначе, чем для обычных буквенных клавиш.
Решение проблемы
Чтобы исправить это поведение, вы можете воспользоваться специальной конструкцией в вашей конфигурации XKB, включив в нее логику по передаче модификаторов.
- Обновление конфигурации XKB: Вам нужно будет изменить вашу конфигурацию так, чтобы клавиша
<AB09>
перенаправляла на правильные коды для клавиши Home, в том числе в сочетаниях с модификаторами.
Пример кода:
default partial alphanumeric_keys modifier_keys
xkb_symbols "myconfig" {
name[Group1]= "namegroup";
include "latin"
key <AB09> { [ Home, Home, NoSymbol, NoSymbol ] };
// Используем redirect для обработки модификатора
key <AB09> {
type[Group1]= "ONE_LEVEL",
symbols[Group1]= [ Home ]
};
// Здесь добавляем кнопку для сочетания с Shift
key <AB09> {
type= "ONE_LEVEL",
symbols[Group1]= [ Home, Shift + Home ]
};
};
Частный случай для клавиш Home и Arrow
Следует также учитывать, что некоторые клавиши, такие как Home или стрелочные клавиши, могут иметь свои конфигурации или управляющие значения, которые определяются в других частях системы. В частности, для Wayland вы можете использовать xkbcli
для тестирования и отладки вашей конфигурации.
Рекомендации по дальнейшим действиям
-
Тестирование настроек: После изменения конфигурации не забудьте протестировать ее, чтобы убедиться, что она соответствует вашим требованиям. Используйте инструмент xkbcli interactive-wayland для мониторинга результатов нажатий клавиш.
-
Документация: Ознакомьтесь с документацией XKB и Wayland для более глубокого понимания работы со специальными клавишами и модификаторами.
Заключение
Создание пользовательской раскладки клавиатуры с поддержкой специфического поведения клавиш требует детального изучения конфигураций XKB. С предложенными изменениями вы сможете добиться поведения, аналогичного оригинальной клавише Home. Если у вас возникнут дополнительные вопросы или вам потребуется помощь в отладке, не стесняйтесь обращаться за поддержкой в сообществе XKB или в специализированные форумы.