F13 неправильно воспринимается как Enter на цифровой клавиатуре в vcxsrv

Вопрос или проблема

Я использую SharpKeys на своем компьютере с Windows 8, чтобы переназначить клавишу Caps Lock на F13, чтобы я мог использовать ее как горячую клавишу/модификатор в других программах. Это работает хорошо в приложениях Windows — например, http://keycode.info/ правильно сообщает, что я нажал F13, когда нажимаю Caps Lock.

Однако это, похоже, не работает в vcxsrv, который обрабатывает клавишу как KP_Enter, то есть Enter на цифровой клавиатуре. Выходные данные от xev идентичны, независимо от того, нажимаю ли я Caps Lock или настоящую клавишу Enter на цифровой клавиатуре. Это поведение не зависит от Num Lock, аргумента -keyhook для vcxsrv или аргумента -xkbvariant nodeadkeys для vcxsrv, которые я смог придумать сам. Насколько я могу судить, это единственная клавиша, которая не передается корректно.

Если это важно, я использую PuTTY для подключения по SSH к виртуальной машине Fedora 28, чтобы запускать X-приложения, которые я использую (например, xev).

Я столкнулся с этой проблемой в x410 (который, вероятно, также является производным от vcxsrv). Следующее не является прямым ответом, но один из способов решения этой проблемы с помощью autohotkey:

В вашем AHK скрипте:

Используйте некоторые условия для контекстов, где вам могут понадобиться эти клавиши:

#HotIf WinActive("ahk_class X410_XAppWin") or WinActive("ahk_exe vncviewer.exe") or WinActive("ahk_exe nxplayer.bin") or ...

Внутри условия отправьте сырую клавишу так (и закройте блок):

*f13:: Send("{Blind}{vk7csc0b7}")
#HotIf

Теперь используйте xmodmap, чтобы переназначить код клавиши — поместите это в файл и передайте его как аргумент для xmodmap:

keycode 191 = F13 F13

Все это очень неаккуратно и использует коды клавиш, которые я имею из какого-то очень старого контекста, так что я даже не могу вспомнить, как я до этого дошел. Надеюсь, кто-то сможет найти какой-то лучший способ сделать все это и сделать более организованным.

Ответ или решение

Проблема, с которой вы столкнулись при использовании клавиши F13 в vcxsrv, весьма распространенная, и, к счастью, ее можно решить несколькими способами. Вот подробное руководство, которое поможет вам перенастроить клавишу F13 так, чтобы она работала корректно в X-системах.

1. Использование xmodmap

Первый способ — это использование xmodmap для переназначения клавиши. Вам нужно создать файл для конфигурации и загрузить его в X-сессии.

  1. Создайте файл ~/.Xmodmap и добавьте в него следующую строку:

    keycode 191 = F13 F13

    Здесь 191 — это код клавиши, который отвечает за F13. Вы можете узнать код вашей клавиши, воспользовавшись командой xev и нажав клавишу Caps Lock. В выводе xev найдите соответствующий keycode.

  2. После создания файла запустите xmodmap, чтобы применить изменения:

    xmodmap ~/.Xmodmap

Таким образом, xmodmap переназначит вашу клавишу Caps Lock (что вы сделали с помощью SharpKeys) на F13.

2. Использование AutoHotkey

Если xmodmap не решает вашу проблему, можно воспользоваться AutoHotkey для перенаправления клавиши в вашей системе Windows:

  1. Установите AutoHotkey, если он еще не установлен.

  2. Создайте новый скрипт AutoHotkey и добавьте в него следующий код:

    #HotIf WinActive("ahk_class X410_XAppWin") or WinActive("ahk_exe vncviewer.exe") or WinActive("ahk_exe nxplayer.bin")
    *f13:: Send("{Blind}{vk7csc0b7}")
    #HotIf

Замените ahk_class X410_XAppWin и другие значения на соответствующие вашим приложениям.

  1. Сохраните скрипт и запустите его. Теперь, когда вы активируете ваше приложение (например, vcxsrv), нажатие F13 будет отправлять нужный код.

3. Проверка параметров запуска vcxsrv

Убедитесь, что при запуске vcxsrv вы используете правильные параметры. Вот пример настройки:

vcxsrv -multiwindow -clipboard -host -xkb -nolock -keyhook

Заключение

Согласно вышеописанным методам, вы должны быть в состоянии перенастроить клавишу F13 так, чтобы она правильно работала в vcxsrv, как и ожидалось. Попробуйте сначала метод с xmodmap, а если он не сработает, используйте скрипт AutoHotkey для более специфичной настройки в Windows. Если что-то пойдет не так или у вас возникнут дополнительные вопросы, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...