﻿
# HID Keys

## JSON Schema

[https://schemas.acrobits.net/core/data/hid/keypress.json](https://schemas.acrobits.net/core/data/hid/keypress.json)

## About

These values are used by [`keyPress` triggers](triggers.md#key-press) to match keyboard, media, and gamepad input. Key names are case-insensitive in the app, but examples and configuration should use the canonical names below.

Keyboard events can also be matched by a numeric platform key code using the `code` field instead of `key`. Use named keys where possible; numeric codes are intended for device-specific input that is not covered by this list.

## Examples

Match Enter pressed with either Control key:

```json
{
    "@": "keyboard",
    "key": "ENTER",
    "modifiers": [
        "CTRL"
    ]
}
```

Match a headset hook button:

```json
{
    "@": "media",
    "key": "HEADSETHOOK"
}
```

Match a gamepad button:

```json
{
    "@": "gamepad",
    "key": "BUTTON_A"
}
```

## Android

On Android, HID input is based on [`android.view.KeyEvent`](https://developer.android.com/reference/android/view/KeyEvent). Most key names below map directly to Android [`KEYCODE_*` constants](https://developer.android.com/reference/android/view/KeyEvent#KEYCODE_A), with the `KEYCODE_` prefix removed.

For example, Android `KEYCODE_ENTER` is configured as `ENTER`, `KEYCODE_HEADSETHOOK` as `HEADSETHOOK`, and `KEYCODE_BUTTON_A` as `BUTTON_A`.

## Keyboard Keys

```text
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, STAR, POUND, UP, DOWN, LEFT, RIGHT, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, COMMA, PERIOD, TAB, SPACE, ENTER, DEL, GRAVE, MINUS, EQUALS, LEFT_BRACKET, RIGHT_BRACKET, BACKSLASH, SEMICOLON, APOSTROPHE, SLASH, AT, PLUS, PAGE_UP, PAGE_DOWN, ESCAPE, BACKSPACE, INSERT, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, NUMPAD_0, NUMPAD_1, NUMPAD_2, NUMPAD_3, NUMPAD_4, NUMPAD_5, NUMPAD_6, NUMPAD_7, NUMPAD_8, NUMPAD_9, NUMPAD_DIVIDE, NUMPAD_MULTIPLY, NUMPAD_SUBTRACT, NUMPAD_ADD, NUMPAD_DOT, NUMPAD_COMMA, NUMPAD_ENTER, NUMPAD_EQUALS, NUMPAD_LEFT_PAREN, NUMPAD_RIGHT_PAREN
```

## Keyboard Modifiers

Generic modifier names match either physical side of that modifier. For example, `CTRL` matches either `L_CTRL`, or `R_CTRL`, while `L_CTRL` matches only the left Control key. The same rule applies to `ALT`/`L_ALT`/`R_ALT` and `SHIFT`/`L_SHIFT`/`R_SHIFT`.

- `ALT`
- `L_ALT`
- `R_ALT`
- `CTRL`
- `L_CTRL`
- `R_CTRL`
- `SHIFT`
- `L_SHIFT`
- `R_SHIFT`

## Media Keys

```text
HOME, BACK, CALL, ENDCALL, VOLUME_UP, VOLUME_DOWN, VOLUME_MUTE, POWER, CAMERA, CLEAR, EXPLORER, ENVELOPE, HEADSETHOOK, SEARCH, MEDIA_PLAY_PAUSE, MEDIA_PLAY, MEDIA_PAUSE, MEDIA_CLOSE, MEDIA_EJECT, MEDIA_RECORD, MEDIA_STOP, MEDIA_NEXT, MEDIA_PREVIOUS, MEDIA_REWIND, MEDIA_FAST_FORWARD, MUTE, INFO, CHANNEL_UP, CHANNEL_DOWN, ZOOM_IN, ZOOM_OUT, SETTINGS, TV_POWER, TV_INPUT, STB_POWER, STB_INPUT, AVR_POWER, AVR_INPUT, PROG_RED, PROG_GREEN, PROG_YELLOW, PROG_BLUE, APP_SWITCH, BUTTON_1, BUTTON_2, BUTTON_3, BUTTON_4, BUTTON_5, BUTTON_6, BUTTON_7, BUTTON_8, BUTTON_9, BUTTON_10, BUTTON_11, BUTTON_12, BUTTON_13, BUTTON_14, BUTTON_15, BUTTON_16, LANGUAGE_SWITCH, MANNER_MODE, 3D_MODE, CONTACTS, CALENDAR, MUSIC, CALCULATOR, ASSIST, BRIGHTNESS_DOWN, BRIGHTNESS_UP, MEDIA_AUDIO_TRACK, SLEEP, WAKEUP, PAIRING, LAST_CHANNEL, TV_DATA_SERVICE, VOICE_ASSIST, TV_RADIO_SERVICE, TV_TELETEXT, TV_NUMBER_ENTRY, TV_TERRESTRIAL_ANALOG, TV_TERRESTRIAL_DIGITAL, TV_SATELLITE, TV_SATELLITE_BS, TV_SATELLITE_CS, TV_SATELLITE_SERVICE, TV_NETWORK, TV_ANTENNA_CABLE, TV_INPUT_HDMI_1, TV_INPUT_HDMI_2, TV_INPUT_HDMI_3, TV_INPUT_HDMI_4, TV_INPUT_COMPOSITE_1, TV_INPUT_COMPOSITE_2, TV_INPUT_COMPONENT_1, TV_INPUT_COMPONENT_2, TV_INPUT_VGA_1, TV_AUDIO_DESCRIPTION, TV_AUDIO_DESCRIPTION_MIX_UP, TV_AUDIO_DESCRIPTION_MIX_DOWN, TV_ZOOM_MODE, TV_CONTENTS_MENU, TV_MEDIA_CONTEXT_MENU, TV_TIMER_PROGRAMMING, HELP, NAVIGATE_PREVIOUS, NAVIGATE_NEXT, NAVIGATE_IN, NAVIGATE_OUT, STEM_PRIMARY, STEM_1, STEM_2, STEM_3, MEDIA_SKIP_FORWARD, MEDIA_SKIP_BACKWARD, MEDIA_STEP_FORWARD, MEDIA_STEP_BACKWARD, SOFT_SLEEP, CUT, COPY, PASTE, SYSTEM_NAVIGATION_UP, SYSTEM_NAVIGATION_DOWN, SYSTEM_NAVIGATION_LEFT, SYSTEM_NAVIGATION_RIGHT, REFRESH, THUMBS_UP, THUMBS_DOWN, PROFILE_SWITCH, VIDEO_APP_1, VIDEO_APP_2, VIDEO_APP_3, VIDEO_APP_4, VIDEO_APP_5, VIDEO_APP_6, VIDEO_APP_7, VIDEO_APP_8, KEYBOARD_BACKLIGHT_DOWN, KEYBOARD_BACKLIGHT_UP, KEYBOARD_BACKLIGHT_TOGGLE, EMOJI_PICKER, DICTATE, NEW, CLOSE, DO_NOT_DISTURB, PRINT, LOCK, FULLSCREEN
```

## Gamepad Keys

```text
DPAD_UP, DPAD_DOWN, DPAD_LEFT, DPAD_RIGHT, DPAD_CENTER, DPAD_UP_LEFT, DPAD_DOWN_LEFT, DPAD_UP_RIGHT, DPAD_DOWN_RIGHT, BUTTON_A, BUTTON_B, BUTTON_C, BUTTON_X, BUTTON_Y, BUTTON_Z, BUTTON_L1, BUTTON_R1, BUTTON_L2, BUTTON_R2, BUTTON_THUMBL, BUTTON_THUMBR, BUTTON_START, BUTTON_SELECT, BUTTON_MODE
```

