Unicode Codepoints для специальных символов в MS Keyboard Layout Creator

Моя цель:

Я пытаюсь заставить MS Keyboard Layout Creator позволить мне выполнять возврат каретки / ввод, когда я нажимаю [R-Arrow] ключ в сочетании с [Control] ключ, но все еще есть [R-Arrow] Клавиша работает как обычно (то есть перемещается на один символ вправо), когда нажимается один Я делаю это, потому что моя клавиатура ноутбука [Enter] ключ обанкротился, и я хочу использовать этот хак в течение короткого времени, прежде чем я получу другую клавиатуру. Да, я знаю, что может быть проще получить новый.:)

Насколько я могу сказать, я почти все понял. Единственные фрагменты информации, которые мне все еще нужны, это точные шестнадцатеричные кодовые точки как для 1) навигации по стрелке вправо, так и для 2) ввода / возврата каретки. Я надеюсь, что кто-то может направить меня к этой информации. Я нашел ссылку на Unicode, но не могу определить, какие коды я мог бы использовать для возврата каретки и навигации по стрелке вправоне по символу ascii для стрелки вправо). Меня это не волнует)

Пример кода в моем существующем файле KLC:

KBD Layout01    "Layout01 Description"
COPYRIGHT   "(c) 2017 Company"
COMPANY "Company"
LOCALENAME  "en-US"
LOCALEID    "00000409"
VERSION 1.0
SHIFTSTATE
0   //Column 4
1   //Column 5 : Shft
2   //Column 6 :       Ctrl
LAYOUT      ;an extra '@' at the end is a dead key

//SC    VK_     Cap 0   1   2
//--    ----        ----    ----    ----    ----
39  SPACE       0   0020    0020    -1      // SPACE, SPACE, <none>
53  DECIMAL 0   002e    002e    -1      // FULL STOP, FULL STOP,

Мое понимание кода (пример пробела)

Глядя на предыдущие примеры в файле, (space и decimal) Я понял следующее:

Примечание: примеры в скобках ниже относятся только к space бар.

  1. Первое число - это клавиша клавиатуры (например, 39 выше)
  2. Слово, которое следует за этим номером, является обозначением, обозначающим этот ключ (например, SPACE выше)
  3. следующие три числа являются шестнадцатеричными кодовыми точками / символами, которые обозначают "SHIFTSTATES"
    1. Первый - это код для того, что будет выводить клавиша, если нажать CAPSLOCK нажата.
    2. Вторым является кодовая точка для того, что будет выводить клавиша, если нажать одновременно с SHIFT ключ.
    3. Третий - это кодовая точка для того, что будет выводить клавиша, если нажать одновременно с CONTROL ключ.

Цель: выяснить коды для навигации по стрелке вправо и ввести

Я выяснил это для моей строки кода, которую я хочу добавить, чтобы нажатие только правой клавиши продолжало перемещаться вправо, но при этом комбинация "control-right" вместо этого вызовет возврат каретки / ввод

4d RIGHT 0 ??I don't know?? ??I don't know?? -1

Я считаю, что я знаю следующее

  1. 4d (в 1-м столбце) - код клавиши для клавиши со стрелкой вправо
  2. рукоять RIGHT (во 2-м столбце) - дескриптор / имя для стрелки вправо
  3. 0 (в 3-м столбце означает не менять ключ, если нажата крышка

Что мне нужно ваша помощь, чтобы выяснить,

  1. Что такое кодовая точка / шестнадцатеричный / юникод символ для выполнения навигации по правой стрелке (я думаю, это то, что идет в четвертом столбце, если я хочу [Shift] - [Right-Arrow] чтобы курсор переместился на один символ вправо).
  2. Что такое кодовая точка / шестнадцатеричный / юникод символ для выполнения возврата каретки / ввода (я думаю, это то, что идет в пятом столбце, если я хочу [Control] - [Right-Arrow] вызвать ввод / возврат каретки).

Возможно, я ошибаюсь, и нужные мне символы не являются кодовыми точками Unicode; если я ошибаюсь, поправьте меня, потому что эта информация поможет мне приблизиться к цели. Любая помощь будет принята с благодарностью!

1 ответ

Решение

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


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


У меня есть сильное ощущение, что то, что вы спрашиваете, невозможно (что управляющие клавиши, такие как стрелки, не могут быть сопоставлены с разными клавишами / символами / функциями при нажатии на модификатор, такой как Ctrl).

Я не очень большой эксперт в этих вещах, но я могу дать вам несколько советов:

  1. (далее много информации, мало связанной с вашей проблемой, но она может помочь вам лучше понять)

    Когда вы нажимаете клавишу в Windows, появляется как минимум 3 набора кодов:

    1. Коды сканирования: это коды, которые фактически генерируются оборудованием и отправляются на компьютер. Я мало о них знаю, мне никогда не приходилось их использовать, и я был слишком молод, когда они были более актуальны. Теоретически они могут варьироваться от клавиатуры к клавиатуре, но они в значительной степени стандартизированы; насколько я понимаю, USB-клавиатуры действительно стандартизированы, и их коды сканирования должны соответствовать кодам, перечисленным в этих таблицах использования HID (раздел 10). В Википедии есть некоторая информация, но не полный список традиционных кодов. Скорее всего, они вам не понадобятся (но, возможно, вам это понадобится). Кстати, эти коды сканирования также передаются приложениям (я не уверен, насколько надежно), но они почти никогда не используют их.
    2. Коды виртуальных клавиш: коды сканирования в Windows преобразуются драйвером клавиатуры в общий набор кодов клавиш, определенный Microsoft: коды виртуальных клавиш. Они не зависят от клавиатуры и являются тем (что обычно) используется приложениями, когда им нужно обрабатывать нажатие одной клавиши.
    3. Символы Unicode или другие символы в кодировке : Windows распознает, когда при нажатии клавиш образуются печатные символы, и передает эти символы приложениям. В то время, когда приложение интересуется только печатными символами, оно смотрит только на эти символы, хотя, когда им нужно сделать более сложные вещи (ярлыки...), они также имеют доступ к кодам виртуальных клавиш (и, если они действительно хочу, чтобы коды сканирования). Юникод - это набор символов, а не "набор кодов клавиш", поэтому он обычно содержит только печатные символы. Для облегчения взаимодействия с ASCII и другими унаследованными кодировками он также включает управляющие символы, определенные в предыдущих стандартах, но среди этих управляющих символов нет клавиш со стрелками, поэтому для стрелок клавиатуры нет кодовых точек Юникода.
  2. Во втором столбце klc должно появиться имя константы виртуального ключа с VK_ удален. Действительно странно.

  3. На нескольких страницах документации Microsoft говорится, что WDK kbd.h файл, который вы также можете найти в inc Каталог Microsoft Keyboard Layout Creator содержит подробную информацию об этом материале. Лично я не мог сделать из этого слишком много.

  4. Если вы действительно хотите углубиться в это, в блоге покойного Майкла Каплана, возможно, есть информация, которую вы ищете где-то.

  5. Ваша удача, скорее всего, использовать какое-то другое приложение. Я наткнулся на KbdEdit, который обрабатывает клавиши со стрелками, но на самом деле кажется, что он не может назначить другую функцию клавише при использовании с модификатором (но вы можете изменить действие клавиши в целом, независимо от нажатого модификатора).

  6. Для ввода ключа вам, вероятно, потребуется использовать виртуальный ключ, который 0D (VK_RETURN).

  7. Последовательность символов, используемая для обозначения разрывов строк в Windows: CRLF, которые имеют (в Юникоде и почти во всех других существующих кодировках) кодовые точки 0D0A соответственно.
    Сообщение Windows, которое уведомляет приложения о введенных символах (пункт 1.3 выше - я имею в виду WM_CHAR сообщение, кстати) хотя сообщает только CR (0D) когда вы нажимаете Enter; так что, если эти klf-файлы используют кодовые точки Юникода в некоторой части, есть хороший шанс, что они используют это (CR), чтобы указать клавишу ввода.


В общем, ваша лучшая ставка, вероятно, состоит в том, чтобы просто назначить Enter другой клавише (например, функциональной клавише, правой клавише Ctrl или клавише выигрыша, если они у вас есть, или заглавной буквы).

Другие вопросы по тегам