Basic key press/consumer press behavior docs.
title: Key Presses
---
-TODO: Docs on key press behavior
+## Summary
+
+The most basic of behaiors, is the ability to send certain keycode presses and releases in response to activating
+a certain key.
+
+For reference on keycode values, see the [USB HID Usage Tables](https://www.usb.org/document-library/hid-usage-tables-12).
+
+## Keycode Defines
+
+To make it easier to encode the HID keycode numeric values, most keymaps include
+the [`dt-bindings/zmk/keys.h`](https://github.com/zmkfirmware/zmk/blob/main/app/include/dt-bindings/zmk/keys.h) header
+provided by ZMK near the top:
+
+```
+#include <dt-bindings/zmk/keys.h>
+```
+
+Doing so makes a set of defines such as `A`, `NUM_1`, etc. available for use with these behaviors
+
+:::note
+There is an [open issue](https://github.com/zmkfirmware/zmk/issues/21) to provide a more comprehensive, and
+complete set of defines for the full keypad and consumer usage pages in the future for ZMK.
+:::
+
+## Keypad Key Press
+
+The "keypad key press" behavior sends standard keypad keycodes on press/release.
+
+### Behavior Binding
+
+- Reference: `&kp`
+- Parameter: The keycode usage ID from the keypad usage page, e.g. `4` or `A`
+
+Example:
+
+```
+&kp A
+```
+
+## Consumer Key Press
+
+The "consumer key press" behavior allows you to send "consumer" usage page keycodes on press/release.
+These are mostly used for media and power related keycodes, such as sending "Pause", "Scan Track Next",
+"Scan Track Previous", etc.
+
+There are a subset of the full consumer usage IDs found in the `keys.h` include, prefixed with `M_`, e.g. `M_PREV`.
+
+### Behavior Binding
+
+- Reference: `&cp`
+- Parameter: The keycode usage ID from the consumer usage page, e.g. `M_PREV` or `M_EJCT`
+
+Example:
+
+```
+&cp M_PREV
+```
