reckfellENGINE

InputEventKey

Событие клавиши: коды, сторона, Unicode и автоповтор.

На этой странице
class InputEventKeyReckfellSharpНаследует InputEventWithModifiers

Разделяйте назначение полей. Keycode описывает логическую клавишу, PhysicalKeycode — расположение для игрового управления, KeyLabel — метку, Unicode — кодовую точку символа события. Изменение одного поля не вычисляет остальные и не вводит нажатие в Input.

В привязке InputMap задавайте один селектор: Keycode, PhysicalKeycode или KeyLabel. При ненулевом Keycode сравнивается только он: несовпадение не переключает привязку на PhysicalKeycode. PhysicalKeycode используется при Keycode = 0, а KeyLabel — при нулевых первых двух. Привязка только по Unicode в текущем движке не сопоставляется с нажатием. Сопоставление привязки не является равенством всех полей событий.

Для разового действия фильтруйте Echo. Полный пример требует заранее зарегистрированного действия; передавайте ему событие из обработчика ввода. Статический helper не прикрепляется к Entity.

C#
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Конструктор
# InputEventKey
C#
public InputEventKey();

Создаёт событие без отправки во ввод. Коды клавиш, Unicode и Location равны 0; Pressed и Echo выключены. Поля независимы: присваивание PhysicalKeycode не вычисляет Keycode или Unicode.

Свойства7

EchoСвойство
# Echo
C#
public bool Echo { get; set; }

Маркер повторного события удерживаемой клавиши. По умолчанию IsActionPressed фильтрует такой повтор; параметр allowEcho разрешает его. Установка Echo не создаёт повторяющий таймер и не задаёт частоту автоповтора ОС.

KeyLabelСвойство
# KeyLabel
C#
public Key KeyLabel { get; set; }

Метка клавиши, предоставленная платформой, в виде Key/кода символа. Для сопоставления привязки используется только когда Keycode и PhysicalKeycode равны 0. Это не тот же смысл, что Unicode введённого символа.

KeycodeСвойство
# Keycode
C#
public Key Keycode { get; set; }

Логический код клавиши Key для сочетаний и привязок. При сопоставлении привязки имеет приоритет над PhysicalKeycode и KeyLabel. Для отсутствующего кода используется 0. Не хранит готовый введённый текст.

LocationСвойство
# Location
C#
public KeyLocation Location { get; set; }

Сторона клавиши: Left, Right или неопределённая. Учитывается для привязки по PhysicalKeycode, если в ней задана конкретная сторона. Не определяет положение мыши и не меняет сам PhysicalKeycode.

PhysicalKeycodeСвойство
# PhysicalKeycode
C#
public Key PhysicalKeycode { get; set; }

Код физического расположения клавиши в системе US QWERTY, удобный для игрового управления независимо от логической буквы. В привязке используется, если Keycode = 0; Location может дополнительно ограничить сторону. Само присваивание не нажимает клавишу.

PressedСвойство
# Pressed
C#
public bool Pressed { get; set; }

Признак нажатия события. Не создаёт физическое нажатие и не вычисляет Echo. Для разового действия отличайте первое нажатие от повторов; для отпускания проверяйте состояние события или логического действия.

UnicodeСвойство
# Unicode
C#
public long Unicode { get; set; }

Кодовая точка символа события, когда она доступна; 0 означает отсутствие. Это не строка и не запасной селектор действия InputMap. Тип C# long не означает допустимость любого 64-битного числа: используйте корректные Unicode-кодовые точки. Значение вне BMP, например U+1F600, не помещается в один C# char.

Методы19

AsTextKeyLabelstring
# AsTextKeyLabel
C#
public string AsTextKeyLabel();

Форматирует KeyLabel и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.

Возвращает string

Читаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.

AsTextKeycodestring
# AsTextKeycode
C#
public string AsTextKeycode();

Форматирует Keycode и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.

Возвращает string

Читаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.

AsTextLocationstring
# AsTextLocation
C#
public string AsTextLocation();

В текущей реализации возвращает left для Location.Left, right для Location.Right, иначе пустую строку. Это представление Location, а не имени клавиши.

Возвращает string

left, right или пустая строка.

AsTextPhysicalKeycodestring
# AsTextPhysicalKeycode
C#
public string AsTextPhysicalKeycode();

Форматирует PhysicalKeycode и модификаторы для показа пользователю. Для незаданного кода используется текстовый маркер. Не преобразует событие в введённую строку и не подходит как стабильный ключ хранения привязки.

Возвращает string

Читаемое представление выбранного поля с модификаторами; текст может зависеть от локализации.

GetKeyLabelKey
# GetKeyLabel
C#
public Key GetKeyLabel();

Возвращает KeyLabel из события, не выполняя нового опроса клавиатуры.

Возвращает Key

Сохранённое значение KeyLabel с правилами свойства.

GetKeyLabelWithModifiersKey
# GetKeyLabelWithModifiers
C#
public Key GetKeyLabelWithModifiers();

Объединяет KeyLabel и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.

Возвращает Key

Значение Key с кодом KeyLabel и битами модификаторов.

GetKeycodeKey
# GetKeycode
C#
public Key GetKeycode();

Возвращает Keycode из события, не выполняя нового опроса клавиатуры.

Возвращает Key

Сохранённое значение Keycode с правилами свойства.

GetKeycodeWithModifiersKey
# GetKeycodeWithModifiers
C#
public Key GetKeycodeWithModifiers();

Объединяет Keycode и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.

Возвращает Key

Значение Key с кодом Keycode и битами модификаторов.

GetLocationKeyLocation
# GetLocation
C#
public KeyLocation GetLocation();

Возвращает Location из события, не выполняя нового опроса клавиатуры.

Возвращает KeyLocation

Сохранённое значение Location с правилами свойства.

GetPhysicalKeycodeKey
# GetPhysicalKeycode
C#
public Key GetPhysicalKeycode();

Возвращает PhysicalKeycode из события, не выполняя нового опроса клавиатуры.

Возвращает Key

Сохранённое значение PhysicalKeycode с правилами свойства.

GetPhysicalKeycodeWithModifiersKey
# GetPhysicalKeycodeWithModifiers
C#
public Key GetPhysicalKeycodeWithModifiers();

Объединяет PhysicalKeycode и текущую GetModifiersMask битовой операцией OR. Не выбирает запасной код из других полей и не возвращает текст.

Возвращает Key

Значение Key с кодом PhysicalKeycode и битами модификаторов.

GetUnicodelong
# GetUnicode
C#
public long GetUnicode();

Возвращает Unicode из события, не выполняя нового опроса клавиатуры.

Возвращает long

Сохранённое значение Unicode с правилами свойства.

SetEchovoid
# SetEcho
C#
public void SetEcho(bool echo);

Устанавливает Echo по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
echobool—
echo

Новое значение Echo в формате свойства.

SetKeyLabelvoid
# SetKeyLabel
C#
public void SetKeyLabel(Key keyLabel);

Устанавливает KeyLabel по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
keyLabelKey—
keyLabel

Новое значение KeyLabel в формате свойства.

SetKeycodevoid
# SetKeycode
C#
public void SetKeycode(Key keycode);

Устанавливает Keycode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
keycodeKey—
keycode

Новое значение Keycode в формате свойства.

SetLocationvoid
# SetLocation
C#
public void SetLocation(KeyLocation location);

Устанавливает Location по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
locationKeyLocation—
location

Новое значение Location в формате свойства.

SetPhysicalKeycodevoid
# SetPhysicalKeycode
C#
public void SetPhysicalKeycode(Key physicalKeycode);

Устанавливает PhysicalKeycode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
physicalKeycodeKey—
physicalKeycode

Новое значение PhysicalKeycode в формате свойства.

SetPressedvoid
# SetPressed
C#
public void SetPressed(bool pressed);

Устанавливает Pressed по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
pressedbool—
pressed

Новое значение Pressed в формате свойства.

SetUnicodevoid
# SetUnicode
C#
public void SetUnicode(long unicode);

Устанавливает Unicode по правилам свойства. Не отправляет событие и не вычисляет остальные поля клавиши.

Параметры
ИмяТипПо умолчанию
unicodelong—
unicode

Новое значение Unicode в формате свойства.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.