simple virtual keyboard
Go to file
Maarten van Gompel a5cb7d53ce increase spacing, set scheme for window, make window render faster by removing unnecessary map requests to X 2021-06-13 23:15:39 +02:00
LICENSE bump LICENSE year 2021-03-28 15:13:04 +02:00
Makefile bump version to 0.3 2021-03-28 22:54:23 +02:00
README.md Updated the documentation to describe the new functionality 2021-03-28 14:35:01 +02:00
config.def.h increase spacing, set scheme for window, make window render faster by removing unnecessary map requests to X 2021-06-13 23:15:39 +02:00
config.mk config.mk: set DEFAULT_SOURCE 2020-09-18 12:59:17 +02:00
drw.c tiny code-style tweak 2020-08-24 19:32:47 +02:00
drw.h tiny code-style tweak 2020-08-24 19:32:47 +02:00
layout.arrows.h Made the old layouts compatible with the new svkbd, re-added the old english layout that was removed, and re-added the initial sxmo layout and renamed the mobile layouts. Documentation updated accordingly. Final cleanup and fixes for the whole patch series. 2020-08-02 18:00:42 +02:00
layout.de.h adapted plain layout and legacy layouts to new structure 2021-03-28 14:35:01 +02:00
layout.en.h Various indentation fixes for a more consistent style 2021-03-28 14:39:58 +02:00
layout.mobile-intl.h adding dead spacing between keys to prevent misclicks and adapting keyboard layout to a less rigid grid (all aimed to reduce typos) 2021-06-13 23:15:32 +02:00
layout.mobile-plain.h Various indentation fixes for a more consistent style 2021-03-28 14:39:58 +02:00
layout.mobile-simple.h Add missing keys on lazy layers 2021-03-28 19:08:49 +02:00
layout.ru.h adapted plain layout and legacy layouts to new structure 2021-03-28 14:35:01 +02:00
layout.sh.h adapted plain layout and legacy layouts to new structure 2021-03-28 14:35:01 +02:00
svkbd.1 usage already exits, remove exit(2) 2021-03-28 15:19:38 +02:00
svkbd.c increase spacing, set scheme for window, make window render faster by removing unnecessary map requests to X 2021-06-13 23:15:39 +02:00
util.c put estrdup in util and use die() instead of BSD err() 2021-03-28 14:41:32 +02:00
util.h put estrdup in util and use die() instead of BSD err() 2021-03-28 14:41:32 +02:00

README.md

SVKBD: Simple Virtual Keyboard

This is a simple virtual keyboard, intended to be used in environments, where no keyboard is available.

Installation

$ make
$ make install

This will create by default svkbd-mobile-intl, which is svkbd using an international layout with multiple layers and overlays, and optimised for mobile devices.

You can create svkbd for additional layouts by doing:

$ make LAYOUT=$layout

This will take the file layout.$layout.h and create svkbd-$layout. make install will then pick up the new file and install it accordingly.

Layouts

The following layouts are available:

  • Mobile Layouts:
    • mobile-intl - A small international layout optimised for mobile devices. This layout consists of multiple layers which can be switched on the fly, and overlays that appear on long-press of certain keys, adding input ability for diacritics and other variants, as well as some emoji. The layers are:
      • a basic qwerty layer
      • a layer for numeric input, arrows, and punctuation
      • a cyrillic layer (ЙЦУКЕН based); the э key is moved to an overlay on е
      • a dialer/numeric layer
      • an arrow layer
    • mobile-plain - This is a plain layout with only a qwerty layer and numeric/punctuation layer. It was originally made for sxmo.
    • mobile-simple - This is a more minimalistic layout that is more similar to what Android and iOS offer.
  • Traditional layouts:
    • en - An english layout without layers (QWERTY)
    • de - A german layout (QWERTZ)
    • ru - A russian layout (ЙЦУКЕН)
    • sh - A serbo-croatian layout using latin script (QWERTZ)

Usage

$ svkbd-mobile-intl

This will open svkbd at the bottom of the screen, showing the default international layout.

$ svkbd-mobile-intl -d

This tells svkbd to announce itself being a dock window, which then is managed differently between different window managers. If using dwm and the dock patch, then this will make svkbd being managed by dwm and some space of the screen being reserved for it.

$ svkbd-mobile-intl -g 400x200+1+1

This will start svkbd-intl with a size of 400x200 and at the upper left window corner.

For layouts that consist of multiple layers, you can enable layers on program start through either the -l flag or through the SVKBD_LAYERS environment variable. They both take a comma separated list of layer names (as defined in your layout.*.h). Use the button in the bottom-left to cycle through all the layers.

Some layouts come with overlays that will show when certain keys are hold pressed for a longer time. For example, a long press on the a key will enable an overview showing all kinds of diacritic combinations for a.

Overlay functionality interferes with the ability to hold a key and have it outputted repeatedly. You can disable overlay functionality with the -O flag or by setting the environment variable SVKBD_ENABLEOVERLAYS=0. There is also a key on the function layer of the keyboard itself to enable/disable this behaviour on the fly. Its label shows when the overlay functionality is enabled and when not.

Svkbd has been optimised for use on mobile devices with a touchscreen and implements press-on-release behaviour (which can be disabled), it also works fine on normal desktop systems with a regular mouse.

Advanced Usage

Svkbd has an extra output mode where all keypresses are printed to standard output. Optionally, you can also disable the default X11 keypress emulation. This gives you the freedom to use svkbd in other contexts and use simple pipes to connect it to other tools:

$ svkbd-mobile-intl -n -o | cowsay

This becomes especially useful if you want things like haptic feedback or audio feedback upon keypress. This is deliberately not implemented in svkbd itself (we want to keep things simple after all), but can be accomplished using the external tool clickclack:

$ svkbd-mobile-intl -o | clickclack -V -f keypress.wav

Notes

This virtual keyboard does not actually modify the X keyboard layout, the mobile-intl, mobile-plain, mobile-simple and en layouts simply rely on a standard US QWERTY layout (setxkbmap us) being activated, the other layouts (de, ru, sh) require their respective XKB keymaps to be active.

If you use another XKB layout you will get unpredictable output that does not match the labels on the virtual keycaps!

Repository

git clone https://git.suckless.org/svkbd