# QMK Features QMK has a staggering number of features for building your keyboard. It can take some time to understand all of them and determine which one will achieve your goal. * [Advanced Keycodes](Advanced Keycodes.md) - Change layers, type shifted keys, and more. Go beyond typing simple characters. * [Audio](Audio.md) - Connect a speaker to your keyboard for audio feedback, midi support, and music mode. * [Auto Shift](Auto Shift.md) - Tap for the normal key, hold slightly longer for its shifted state. * [Backlight](Backlight.md) - LED lighting support for your keyboard. * [Bootmagic](Bootmagic.md) - Adjust the behavior of your keyboard using hotkeys. * [Dynamic Macros](Dynamic_Macros.md) - Record and playback macros from the keyboard itself. * [Key Lock](Key_Lock.md) - Lock a key in the "down" state. * [Layouts](Layouts.md) - Use one keymap with any keyboard that supports your layout. * [Leader Key](Leader_Key.md) - Tap the leader key followed by a sequence to trigger custom behavior. * [Macros](Macros.md) - Send multiple key presses when pressing only one physical key. * [Mouse keys](Mouse_Keys.md) - Control your mouse pointer from your keyboard. * [Pointing Device](Pointing_Device.md) - Framework for connecting your custom pointing device to your keyboard. * [PS2 Mouse](PS_2_Mouse.md) - Driver for connecting a PS/2 mouse directly to your keyboard. * [RGB Light](RGB_Lighting.md) - RGB lighting for your keyboard. * [Space Cadet Shift](Space_Cadet_Shift.md) - Use your left/right shift keys to type parenthesis and brackets. * [Space Cadet Shift Enter](Space_Cadet_Shift_Enter.md) - Combined Shift/Enter keys * [Stenography](Stenography.md) - Put your keyboard into Plover mode for stenography use. * [Tap Dance](Tap_Dance.md) - Make a single key do as many things as you want. * [Terminal](Terminal.md) - CLI interface to the internals of your keyboard. * [Thermal Printer](Thermal_Printer.md) - Connect a thermal printer to your keyboard to be able to toggle on a printed log of everything you type. * [Unicode](Unicode.md) - Unicode input support. * [Userspace](Userspace.md) - Share code between different keymaps and keyboards.