mirror of
https://github.com/jjsullivan5196/wvkbd.git
synced 2025-04-21 00:06:48 +02:00
- The full layout now squashes less keys in a row, to accomplish this the semicolon/colon, equal/plus and alt keys had to be sacrificed from the full layout (they're on the special/symbols layout still). - The half-keys in the simple layout are removed, giving a bit more space. - The default total keyboard height has been slightly enlarged (10px) - The compose key moved down, it was too close to the 'a' (accidental presses). The tab key moved to the top-right. - The spacing between the buttons is slightly larger (aesthetic only) - The key for layer switching is now labelled more consistently with an icon, and indicates direction of switching with an arrow - An extra "index" layout was added that can be activated by pressing Compose + the next/prev layout button. It has a key for each layout, even those not specified at start. This special layout does not appear in the normal layer cycling. - The "Abc" key on secondary layers returns to the last alphabetical layout - The compose layouts automatically hide when the user presses the space where there are no keys, no need to explicitly press the "Abc" key.
100 lines
5.0 KiB
Markdown
100 lines
5.0 KiB
Markdown
# wvkbd - On-screen keyboard for wlroots that sucks less
|
|
|
|
<img src="https://raw.githubusercontent.com/proycon/wvkbd/master/contrib/wvkbd-mobintl.jpg" width=300 /> <img src="https://raw.githubusercontent.com/proycon/wvkbd/master/contrib/wvkbd-mobintl-cyrillic.jpg" width=300 />
|
|
|
|
This project aims to deliver a minimal but practically usable implementation of a wlroots on-screen
|
|
keyboard in legible C. This will **only** be a keyboard, not a feedback buzzer,
|
|
led blinker, or anything that requires more than what's needed to input text
|
|
quickly. The end product should be a static codebase that can be patched to add
|
|
new features.
|
|
|
|
## Features
|
|
|
|
- Typing, modifier locking, layout switching
|
|
- Positive visual feedback on key presses
|
|
- Custom layouts and underlying keymaps
|
|
- On-the-fly layout and keymap switching
|
|
- Custom color schemes
|
|
- Proper font drawing
|
|
- Intuitive layouts
|
|
- International layouts (cyrillic, arabic, persian, greek, georgian)
|
|
- Support for 'Copy' keys which are not on the keymap
|
|
- Emoji support
|
|
- Compose key for character variants (e.g. diacritics)
|
|
- Show/hide keyboard on signals (SIGUSR1 = hide, SIGUSR2 = show, SIGRTMIN = toggle)
|
|
- Automatic portrait/landscape detection and subsequent layout switching
|
|
|
|
|
|
<img src="https://raw.githubusercontent.com/proycon/wvkbd/master/contrib/wvkbd-mobintl-landscape.jpg" width=640 />
|
|
|
|
There are some areas that still need work:
|
|
|
|
- Make sure the virtual input method in wayland is working as best as it can
|
|
- Support for input method protocol in wayland, ability to respond to text
|
|
fields
|
|
|
|
## Install
|
|
|
|
You'll need the following developer packages
|
|
|
|
- cairo
|
|
- pango
|
|
- wayland-client
|
|
- xkbcommon
|
|
|
|
Make any customizations you would like in `config.def.h` and run `make`
|
|
|
|
The default set of layouts is called `mobintl` *(mobile international)*, which groups various layouts aimed at mobile devices
|
|
and also attempts to accommodate various international users. The resulting binary is called `wvkbd-mobintl`.
|
|
|
|
You can, however, define your own layouts by copying and modifying `layout.mobintl.h` and `keymap.mobintl.h`
|
|
(replace `mobintl` for something like `yourlayout`). Then make your layout set using `make LAYOUT=yourlayout`, and
|
|
the resulting binary will be `wvkbd-yourlayout`
|
|
|
|
## Usage
|
|
|
|
Run `wvkbd-mobintl` (or the binary for your custom layout set).
|
|
|
|
You can switch between the layouts/layers of the keyboard by pressing the little keyboard key in the bottom-left. If you only
|
|
want a subset of the available layers, you can define which wants you want and in what order you want to cycle through
|
|
them using the `-l` parameter. This takes takes a ordered comma separated list of
|
|
layout names that are defined in your layout set.
|
|
|
|
The keyboard can be hidden by sending it a `SIGUSR1` signal, shown again by sending it `SIGUSR2` or toggled by sending it `SIGRTMIN`.
|
|
This saves some start up time and may be appropriate in some low-resource environments.
|
|
|
|
Wvkbd has an output mode `-o` that will echo its output to standard output. This facility can be used if users want
|
|
audio/haptic feedback, a feature explicitly out of scope for wvkbd. To achieve this, simply pipe wvkbd's output through the external tool
|
|
[clickclack](https://git.sr.ht/~proycon/clickclack):
|
|
|
|
`$ wvkbd-mobintl -l simple,special,emoji -o | clickclack -V -f keypress.wav`
|
|
|
|
Another output mode, `-O` will let the keyboard output keys which are swiped over. It can be used by an external program, such as [swipeGuess](https://git.sr.ht/~earboxer/swipeGuess) to get swipe-typing support.
|
|
|
|
`$ wvkbd-mobintl -O | swipeGuess.sh words.txt | completelyTypeWord.sh`
|
|
|
|
|
|
## Contribute
|
|
|
|
Any contributions are welcome, there are two ways to contribute, the first one is **preferred**:
|
|
|
|
1. [Sourcehut](https://git.sr.ht/~proycon/wvkbd) - Submit your patches using `git mail` to [~mil/sxmo-devel@lists.sr.ht](mailto:~mil/sxmo-devel@lists.sr.ht), follow [these contribution guidelines](https://sxmo.org/contribute/). Questions can also be asked on Sxmo's [mailing lists](https://sxmo.org/support/).
|
|
2. [Github](https://github.com/jjsullivan5196/wvkbd/) - Submit a pull request or open an issue *(legacy method)*
|
|
|
|
This project was started by [John Sullivan](https://jsullivan.cc/) and is
|
|
currently being maintained by the [Sxmo](https://sxmo.org) project, whose
|
|
maintainers will ensure both git remotes are kept in sync at all times.
|
|
|
|
For code contributions, please run `make format` (requires `clang-format`)
|
|
before sending a patch (opening a PR) and include as much relevant detail as
|
|
possible.
|
|
|
|
## Related projects
|
|
|
|
* [clickclack](https://git.sr.ht/~proycon/clickclack) - Audio/haptic feedback (standalone)
|
|
* [swipeGuess](https://git.sr.ht/~earboxer/swipeGuess) - Word-completion for swipe-typing
|
|
* [Sxmo](https://sxmo.org) - A hackable mobile interface environment for Linux phones that adopted wvkbd as its keyboard
|
|
* [svkbd](https://tools.suckless.org/x/svkbd/) - A similar project as wvkbd but for X11 rather than Wayland
|
|
* [squeekboard](https://gitlab.gnome.org/World/Phosh/squeekboard) - The virtual keyboard developed for the Librem5 (used
|
|
by Phosh)
|