Table of Contents
keyboard Plugin
Compatible with DokuWiki
- 2024-02-06 "Kaos" unknown
- 2023-04-04 "Jack Jackrum" yes
- 2022-07-31 "Igor" yes
- 2020-07-29 "Hogfather" yes
Should work as-is, no longer actively maintained by original author.
Works well with the dw2pdf plugin and the odt plugin.
Usage
Use the tag <key>
to mark some text as keyboad keys. E.g.:
This displays the keys <key>ALT</key> + <key>H</key>.
This will create the following output:
Alternatively the tag <kbd>
can be used in accordance to the HTML element:
This displays the keys <kbd>ALT</kbd> + <kbd>H</kbd>.
Short form
The shorter form to write the key combination ALT+H
is:
This displays the keys <kbd>ALT+H</kbd>.
Separator signs for the short form can be +
or -
. In both cases the rendered sign between the keys will be a +
. So in general it does not make a difference if +
or -
is used. But it does make a difference if you want to include a +
or -
as a key and not as a separator. If you would like to render the key combination ALT++
then you should write:
<kbd>ALT-+</kbd>
If you would like to render the key combination ALT+-
then you should write:
<kbd>ALT+-</kbd>
Escape mechanism
Since release 2018-08-09 it is possible to surround keys with '…'. All keys enclosed in '…' will be displayed as-is without interpreting +
or -
as separators. Here is an example:
<kbd>'ALT+H'</kbd>
This example would display “ALT+H” as a single key instead of two keys: “ALT” + “H”.
Specify CSS class
If you like to vary the look with each given key sequence you can also specify a CSS class like this:
<key class="myclass">ALT+H</key>
Short cuts
Some keys like the letter C are short cuts which will be expanded to a translated key name. For example <key>ALT+C</key> will show the same result as if you entered <key>ALT+Ctrl</key>. If you want to suppress this behaviour then include the letter between two '. E.g. if you really want to show the letter C instead of Ctrl then write <key>ALT+'C'</key>.
Configuration
The following configuration options exist:
disable_translation — if this option is activated then all translations and short cuts are deactivated. The given keys will be displayed “as-is”.
css_class — the CSS class to use if no class is given in the syntax tag. There are two built-in classes:
For the standard look enter:
__keyboard
For a look similar to the MediaWiki keypress template enter:
__keyboard_keypress
You can also enter user defined CSS classes which e.g. could be defined in conf/userstyle.css, see customizing_templates.
Some DokuWiki templates like the Bootstrap3 template define an own style for kbd
elements. In this case the css_class setting needs to be empty to use the style of the template.
Development
Changes:
- Update plugin.info.txt (2023-02-23 14:05)
- Merge pull request #25 from ternite/master (2023-02-23 14:03)
- Removed warnings thrown within PHP 8.1 (2023-02-23 11:51)
- Version upped (2020-11-09 11:39)
- Merge pull request #21 from dokufreaks/cleanup (2020-09-27 15:25)
- Removed useless/deprecated code (2020-09-27 14:38)
- Merge pull request #20 from phallobst/master (2020-09-04 20:56)
- Add arrow keys to "de" (2020-08-15 19:16)
Add LaTeX support
You can enhance this plugin to be used with different LaTeX export plugins. Otherwise the LaTeX export will (most likely) simply skip/ignore the keys.
dokutexit support
If you want to use this package with dokutexit, you can easily add latex-support: add the following after line 105 in “syntax.php”:
- add-this-for-dokutexit-support.php
if ($mode == 'latex') { list($state, $match) = $data; switch ($state) { case DOKU_LEXER_ENTER : $renderer->doc .= '\framebox{'; break; case DOKU_LEXER_UNMATCHED : foreach ($match as $key) { if (substr($key, 0, 1) == "'" and substr($key, -1, 1) == "'" and strlen($key) > 1) { $out[] = $renderer->_xmlEntities(substr($key,1,-1)); } else { if (isset($lang[$key])) { $out[] = $lang[$key]; } else { $out[] = $renderer->_xmlEntities(ucfirst($key)); } } } $renderer->doc .= implode('} + \framebox{', $out); break; case DOKU_LEXER_EXIT : $renderer->doc .= '}'; break; } return true; }
latexit support
If you want to use this package with latexit, add the following after line 105 in “syntax.php”:
- add-this-for-latexit-support.php
if ($mode == 'latex') { list($state, $match) = $data; switch ($state) { case DOKU_LEXER_ENTER : $renderer->doc .= '\framebox{'; break; case DOKU_LEXER_UNMATCHED : foreach ($match as $key) { if (substr($key, 0, 1) == "'" and substr($key, -1, 1) == "'" and strlen($key) > 1) { $out[] = $renderer->_latexSpecialChars(substr($key,1,-1)); } else { if (isset($lang[$key])) { $out[] = $lang[$key]; } else { $out[] = $renderer->_latexSpecialChars(ucfirst($key)); } } } $renderer->doc .= implode('} + \framebox{', $out); break; case DOKU_LEXER_EXIT : $renderer->doc .= '}'; break; } return true; }
Translations
The plugin is available in the languages German, English, French, Korean and Chinese.
Issues/Requests
Please report any issues or requests on the GitHub issue tracker.