# KeyboardEventBase<T>

> This is the base class for keyboard events.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.UIElements](/engine/6000.3/script-reference/unityengine/uielements.md)
* **Assembly:** UnityEngine.UIElementsModule
* **Inherits from:** [EventBase\<T>](/engine/6000.3/script-reference/unityengine/uielements/eventbase1.md)
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable), [IKeyboardEvent](/engine/6000.3/script-reference/unityengine/uielements/ikeyboardevent.md)

```csharp
public abstract class KeyboardEventBase<T> : EventBase<T>, IDisposable, IKeyboardEvent where T : KeyboardEventBase<T>, new()
```

## Remarks

The typical keyboard event loop is as follows:

* When a key is pressed, a [KeyDownEvent](/engine/6000.3/script-reference/unityengine/uielements/keydownevent.md) is sent.
* If the key is held down for a duration determined by the OS, another KeyDownEvent with the same data is sent. While the key is held down, the event is sent repeatedly at a frequency determined by the OS.
* When the key is released, a [KeyUpEvent](/engine/6000.3/script-reference/unityengine/uielements/keyupevent.md) is sent.

By default, keyboard events trickle down and bubble up. disabled elements won't receive these events.

Refer to the [Keyboard events](/engine/6000.3/manual/uitoolkits/uielements/uie-events/reference/uie-keyboard-events.md) manual page for more information and examples.

Additional Resources: [KeyDownEvent](/engine/6000.3/script-reference/unityengine/uielements/keydownevent.md), [KeyUpEvent](/engine/6000.3/script-reference/unityengine/uielements/keyupevent.md)

## Properties

| Property                                                                                              | Description                                                                                 |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| [actionKey](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/actionkey.md)   | Gets a boolean value that indicates whether the platform-specific action key is pressed.    |
| [altKey](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/altkey.md)         | Gets a boolean value that indicates whether the Alt key is pressed.                         |
| [character](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/character.md)   | Gets the character entered.                                                                 |
| [commandKey](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/commandkey.md) | Gets a boolean value that indicates whether the Windows/Cmd key is pressed.                 |
| [ctrlKey](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/ctrlkey.md)       | Gets a boolean value that indicates whether the Ctrl key is pressed.                        |
| [keyCode](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/keycode.md)       | The key code.                                                                               |
| [modifiers](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/modifiers.md)   | Gets flags that indicate whether modifier keys (Alt, Ctrl, Shift, Windows/Cmd) are pressed. |
| [shiftKey](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/shiftkey.md)     | Gets a boolean value that indicates whether the Shift key is pressed.                       |

## Methods

| Method                                                                                    | Description                                       |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------- |
| [Init](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/init.md) | Resets the event members to their initial values. |

## Static Methods

| Method                                                                                              | Description                                                                                                                                                                                                                                            |
| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [GetPooled](/engine/6000.3/script-reference/unityengine/uielements/keyboardeventbase1/getpooled.md) | Gets a keyboard event from the event pool and initializes it with the given values. Use this function instead of creating new events. Events obtained using this method need to be released back to the pool. You can use `Dispose()` to release them. |

## Inheritance

**Inherited Members:**

* [EventBase\<T>.SetCreateFunction(Func\<T>)](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/setcreatefunction.md)
* [EventBase\<T>.TypeId()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/typeid.md)
* [EventBase\<T>.GetPooled()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/getpooled.md)
* [EventBase\<T>.Dispose()](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/dispose.md)
* [EventBase\<T>.eventTypeId](/engine/6000.3/script-reference/unityengine/uielements/eventbase1/eventtypeid.md)
* [EventBase.RegisterEventType()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/registereventtype.md)
* [EventBase.PreDispatch(IPanel)](/engine/6000.3/script-reference/unityengine/uielements/eventbase/predispatch.md#predispatch\(ipanel\))
* [EventBase.PostDispatch(IPanel)](/engine/6000.3/script-reference/unityengine/uielements/eventbase/postdispatch.md#postdispatch\(ipanel\))
* [EventBase.StopPropagation()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/stoppropagation.md)
* [EventBase.StopImmediatePropagation()](/engine/6000.3/script-reference/unityengine/uielements/eventbase/stopimmediatepropagation.md)
* [EventBase.timestamp](/engine/6000.3/script-reference/unityengine/uielements/eventbase/timestamp.md)
* [EventBase.bubbles](/engine/6000.3/script-reference/unityengine/uielements/eventbase/bubbles.md)
* [EventBase.tricklesDown](/engine/6000.3/script-reference/unityengine/uielements/eventbase/tricklesdown.md)
* [EventBase.ignoreDisabledElements](/engine/6000.3/script-reference/unityengine/uielements/eventbase/ignoredisabledelements.md)
* [EventBase.target](/engine/6000.3/script-reference/unityengine/uielements/eventbase/target.md)
* [EventBase.isPropagationStopped](/engine/6000.3/script-reference/unityengine/uielements/eventbase/ispropagationstopped.md)
* [EventBase.isImmediatePropagationStopped](/engine/6000.3/script-reference/unityengine/uielements/eventbase/isimmediatepropagationstopped.md)
* [EventBase.propagationPhase](/engine/6000.3/script-reference/unityengine/uielements/eventbase/propagationphase.md)
* [EventBase.currentTarget](/engine/6000.3/script-reference/unityengine/uielements/eventbase/currenttarget.md)
* [EventBase.dispatch](/engine/6000.3/script-reference/unityengine/uielements/eventbase/dispatch.md)
* [EventBase.imguiEvent](/engine/6000.3/script-reference/unityengine/uielements/eventbase/imguievent.md)
* [EventBase.originalMousePosition](/engine/6000.3/script-reference/unityengine/uielements/eventbase/originalmouseposition.md)
* [EventBase.pooled](/engine/6000.3/script-reference/unityengine/uielements/eventbase/pooled.md)
