DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:keyboard

keyboard Plugin

Compatible with DokuWiki

  • 2020-07-29 "Hogfather" yes
  • 2018-04-22 "Greebo" yes
  • 2017-02-19 "Frusterick Manners" yes
  • 2016-06-26 "Elenor Of Tsort" unknown

plugin Marks text as keyboard keys

Last updated on
2020-09-27
Provides
Syntax
Repository
Source

Tagged with keyboard, odt, pdf

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:


Example screenshot


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

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.

plugin/keyboard.txt · Last modified: 2021-03-20 18:58 by lpaulsen93