caption: keyboard
created: 20140302192136805
modified: 20161003114634019
tags: Widgets
title: KeyboardWidget
type: text/vnd.tiddlywiki

! Introduction

The keyboard widget allows ActionWidgets to be triggered by specific key combinations. There is also a shorthand for generating [[Messages]] via the `message` and `param` attributes.

! Content and Attributes

The content of the `<$keyboard>` widget is rendered normally. The keyboard shortcuts only take effect when the focus is within the contained content.

|!Attribute |!Description |
|actions |A string containing ActionWidgets to be triggered when the key combination is detected |
|message |The title of the [[WidgetMessage|Messages]] to generate |
|param |The parameter to be passed with the [[WidgetMessage|Messages]] |
|key |Key string identifying the key(s) to be trapped (see below) |
|class |A CSS class to be assigned to the generated HTML DIV element |
|tag|<<.from-version "5.1.14">> The html element the widget creates to capture the keyboard event, defaults to:<br>» `span` when parsed in inline-mode<br>» `div` when parsed in block-mode|

! Key Strings

Key strings are made up of one or more key specifiers separated by spaces. Each key specifier is zero or more of the modifiers <kbd>alt</kbd>, <kbd>shift</kbd>, <kbd>ctrl</kbd> or <kbd>meta</kbd> followed by the name of a key, all joined with "+" plus or "-" minus symbols. Key names are either the letter or digit printed on the key (eg "a" or "1"), or one of the special keys <kbd>backspace</kbd>, <kbd>tab</kbd>, <kbd>enter</kbd> or <kbd>escape</kbd>.

<$railroad text="""
[: {
   ("alt" | "shift" | "ctrl" |: "meta" ) +("+" | "-") 
	 }
	 "+" 
]
( "<a-z,0-9>" | "backspace" |: "tab" | "enter" | "escape" )
"""/>

For example:

```
A
shift+A
shift+escape
ctrl+enter
ctrl+shift+alt+A
```
