InputEventKey
Событие клавиши: коды, сторона, Unicode и автоповтор.
Разделяйте назначение полей. Keycode описывает логическую клавишу, PhysicalKeycode — расположение для игрового управления, KeyLabel — метку, Unicode — кодовую точку символа события. Изменение одного поля не вычисляет остальные и не вводит нажатие в Input.
В привязке InputMap задавайте один селектор: Keycode, PhysicalKeycode или KeyLabel. При ненулевом Keycode сравнивается только он: несовпадение не переключает привязку на PhysicalKeycode. PhysicalKeycode используется при Keycode = 0, а KeyLabel — при нулевых первых двух. Привязка только по Unicode в текущем движке не сопоставляется с нажатием. Сопоставление привязки не является равенством всех полей событий.
Для разового действия фильтруйте Echo. Полный пример требует заранее зарегистрированного действия; передавайте ему событие из обработчика ввода. Статический helper не прикрепляется к Entity.
using System;
using Reckfell;
public static class KeyboardEventExample
{
// Register the action in InputMap before calling this from an input handler.
public static bool IsInitialPress(InputEvent inputEvent, StringName action)
{
if (!InputMap.HasAction(action))
throw new ArgumentException("The action must already exist.", nameof(action));
return inputEvent is InputEventKey key && !key.Echo && key.IsActionPressed(action);
}
}Для ввода текста не считайте каждую клавишу готовым символом: Unicode не содержит всю строку и не заменяет обработку составного ввода/IME. Данные реальной раскладки зависят от платформы.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
InputEventKeyКонструктор
public InputEventKey();Создаёт событие без отправки во ввод. Коды клавиш, Unicode и Location равны 0; Pressed и Echo выключены. Поля независимы: присваивание PhysicalKeycode не вычисляет Keycode или Unicode.
Свойства7
EchoСвойство
public bool Echo { get; set; }Маркер повторного события удерживаемой клавиши. По умолчанию IsActionPressed фильтрует такой повтор; параметр allowEcho разрешает его. Установка Echo не создаёт повторяющий таймер и не задаёт частоту автоповтора ОС.
KeyLabelСвойство
public Key KeyLabel { get; set; }Метка клавиши, предоставленная платформой, в виде Key/кода символа. Для сопоставления привязки используется только когда Keycode и PhysicalKeycode равны 0. Это не тот же смысл, что Unicode введённого символа.
KeycodeСвойство
public Key Keycode { get; set; }Логический код клавиши Key для сочетаний и привязок. При сопоставлении привязки имеет приоритет над PhysicalKeycode и KeyLabel. Для отсутствующего кода используется 0. Не хранит готовый введённый текст.
LocationСвойство
public KeyLocation Location { get; set; }Сторона клавиши: Left, Right или неопределённая. Учитывается для привязки по PhysicalKeycode, если в ней задана конкретная сторона. Не определяет положение мыши и не меняет сам PhysicalKeycode.
PhysicalKeycodeСвойство
public Key PhysicalKeycode { get; set; }Код физического расположения клавиши в системе US QWERTY, удобный для игрового управления независимо от логической буквы. В привязке используется, если Keycode = 0; Location может дополнительно ограничить сторону. Само присваивание не нажимает клавишу.
PressedСвойство
public bool Pressed { get; set; }Признак нажатия события. Не создаёт физическое нажатие и не вычисляет Echo. Для разового действия отличайте первое нажатие от повторов; для отпускания проверяйте состояние события или логического действия.
UnicodeСвойство
public long Unicode { get; set; }Кодовая точка символа события, когда она доступна; 0 означает отсутствие. Это не строка и не запасной селектор действия InputMap. Тип C# long не означает допустимость любого 64-битного числа: используйте корректные Unicode-кодовые точки. Значение вне BMP, например U+1F600, не помещается в один C# char.
Методы19
AsTextKeyLabelstring
public string AsTextKeyLabel();Форматирует KeyLabel и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.
stringЧитаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.
AsTextKeycodestring
public string AsTextKeycode();Форматирует Keycode и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.
stringЧитаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.
AsTextLocationstring
public string AsTextLocation();В текущей реализации возвращает left для Location.Left, right для Location.Right, иначе пустую строку. Это представление Location, а не имени клавиши.
stringleft, right или пустая строка.
AsTextPhysicalKeycodestring
public string AsTextPhysicalKeycode();Форматирует PhysicalKeycode и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.
stringЧитаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.
GetKeyLabelKey
public Key GetKeyLabel();Возвращает KeyLabel из события, не выполняя нового опроса клавиатуры.
KeyСохранённое значение KeyLabel с правилами свойства.
GetKeyLabelWithModifiersKey
public Key GetKeyLabelWithModifiers();Объединяет KeyLabel и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.
KeyЗначение Key с кодом KeyLabel и битами модификаторов.
GetKeycodeKey
public Key GetKeycode();Возвращает Keycode из события, не выполняя нового опроса клавиатуры.
KeyСохранённое значение Keycode с правилами свойства.
GetKeycodeWithModifiersKey
public Key GetKeycodeWithModifiers();Объединяет Keycode и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.
KeyЗначение Key с кодом Keycode и битами модификаторов.
GetLocationKeyLocation
public KeyLocation GetLocation();Возвращает Location из события, не выполняя нового опроса клавиатуры.
KeyLocationСохранённое значение Location с правилами свойства.
GetPhysicalKeycodeKey
public Key GetPhysicalKeycode();Возвращает PhysicalKeycode из события, не выполняя нового опроса клавиатуры.
KeyСохранённое значение PhysicalKeycode с правилами свойства.
GetPhysicalKeycodeWithModifiersKey
public Key GetPhysicalKeycodeWithModifiers();Объединяет PhysicalKeycode и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.
KeyЗначение Key с кодом PhysicalKeycode и битами модификаторов.
GetUnicodelong
public long GetUnicode();Возвращает Unicode из события, не выполняя нового опроса клавиатуры.
longСохранённое значение Unicode с правилами свойства.
SetEchovoid
public void SetEcho(bool echo);Устанавливает Echo по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
echo | bool | — |
echoНовое значение Echo в формате свойства.
SetKeyLabelvoid
public void SetKeyLabel(Key keyLabel);Устанавливает KeyLabel по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
keyLabel | Key | — |
keyLabelНовое значение KeyLabel в формате свойства.
SetKeycodevoid
public void SetKeycode(Key keycode);Устанавливает Keycode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
keycode | Key | — |
keycodeНовое значение Keycode в формате свойства.
SetLocationvoid
public void SetLocation(KeyLocation location);Устанавливает Location по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
location | KeyLocation | — |
locationНовое значение Location в формате свойства.
SetPhysicalKeycodevoid
public void SetPhysicalKeycode(Key physicalKeycode);Устанавливает PhysicalKeycode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
physicalKeycode | Key | — |
physicalKeycodeНовое значение PhysicalKeycode в формате свойства.
SetPressedvoid
public void SetPressed(bool pressed);Устанавливает Pressed по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
pressed | bool | — |
pressedНовое значение Pressed в формате свойства.
SetUnicodevoid
public void SetUnicode(long unicode);Устанавливает Unicode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.
| Имя | Тип | По умолчанию |
|---|---|---|
unicode | long | — |
unicodeНовое значение Unicode в формате свойства.