Key = ("<" [(LongModifier {"+" LongModifier} | ShortModifier {ShortModifier})] "-" (("<" SpecialKey ">") | Value) ">")
| ("<" SpecialKey ">")
| Value;
LongModifier = "Alt" | "Ctrl" | "Meta" | "Shift";
ShortModifier = "A" | "C" | "M" | "S";
Value = CHARACTER;
SpecialKey =
"BACKSPACE"
| "ENTER"
| "LEFT"
| "RIGHT"
| "UP"
| "DOWN"
| "HOME"
| "END"
| "PAGEUP"
| "PAGEDOWN"
| "TAB"
| "BACKTAB"
| "DELETE"
| "INSERT"
| "ESC"
| "CAPSLOCK"
| "SCROLLlOCK"
| "NUMLOCK"
| "PRINTSCREEN"
| "PAUSE"
| "MENU"
| "KEYPADBEGIN"
| ("F" DIGIT {DIGIT})
# (* Aliases to make using them easier, as they are also used in the notation *)
| "DASH"
| "ANGULAR_BRACKET_OPEN"
| "ABO"
| "ANGULAR_BRACKET_CLOSE"
| "ABC";
# (*
# vim: ft=ebnf
# *)