How do I setup keyboard macros?

I did some googling and found a program called AutoKey (Autokey - Linux utility for text substitution hotkeys) near the top of the list.

Rather than a hotkey using Ctrl+Shift+K I chose to assign the abbreviation kz which is automatically expanded into <kbd></kbd>+.

It is simply installed using:

sudo apt install autokey-gtk

It installs in Launcher and the screen is pretty simple to use:

Autokey


What also can be done is to use xdotool withtype flag, like so:

bash -c ' sleep 0.5; xdotool getactivewindow  type "<kbd></kbd>"'

Go to System Settings-> Keyboard-> Shortcuts -> Custom and bind that command to whatever keyboard shortcut you want. I chose CtrlSuperK. What happens here is that we give user delay of 0.5 seconds to release keyboard shortcut, and then xdotool will type out the key markup tags just as if you were doing it yourself on keyboard. Very easy and simple approach. In fact I am used it just now to put in those 3 keys above.

Note that xdotool doesn't come with Ubuntu by default, so you will have to install it via sudo apt-get install xdotool


If you have a compose file you can use it as a poor-man’s text insertion utility.

You can use a few of the modifiers in X. Apparently you can use Shift as a modifier:

! Ctrl Shift <k> : "<kbd></kbd>"

But this does not work, at least on my machine.

Nor does this work (omitted Shift, capitalized K):

! Ctrl <K> : "<kbd></kbd>"

However, you can use Ctrl and Ctrl+Alt:

! Ctrl Alt <k> : "<kbd></kbd>"
! Ctrl <k> : "<kbd></kbd>"

Placing the cursor correctly

The above mappings will place the cursor after the string (| indicates the cursor):

<kbd></kbd>|

I reckon there can be no general-purpose solution for putting the cursor inside of the tag; for that you would need to use a fit-for-purpose tool. But you can the cursor go inside the tag in certain applications.

I use gnome-terminal with Bash which uses readline keybindings (Emacs-like). Ctrl-b is the keybinding for going backwards one character. In my terminal I can type Ctrl+v b and get the control character ^B (U+0002 (Start of Text)). So type six of these characters at the end of the string:

! Ctrl Alt <k> : "<kbd></kbd>^B^B^B^B^B^B"

The cursor will be placed inside the tag if you are inside an application that interprets ^B correctly (e.g. terminals and Emacs):

<kbd>|</kbd>

Using the compose key

You can of course use the compose key (<Multi_key>) to achieve the same thing. For example, use t (“tag”) and k (“keyboard”):

<Multi_key> <t> <k> : "<kbd></kbd>^B^B^B^B^B^B"