# A Simple On-Screen Keyboard `osk` is an On-Screen Keyboard written in C, using GTK bindings, and is meant for use on Linux / Wayland / Hyprland setups and the Spaces ecosystem, more to come soon on that. Currently, the default (and only) option is to toggle `osk` when `osk` is ran again. This keeps the keyboard in memory, keeping the launch nice and responsive. ## Setup There are a few steps necessary in order to have this OSK work. First, check that you have the `uinput` kernel module loaded: ``` lsmod | grep uinput # If there is no output, try this: sudo modprobe uinput ``` Second, open `/etc/udev/rules.d/99-uinput.rules` in your text editor of choice and add this line to the file: ``` KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput" ``` Then run the following command: ``` sudo usermod -aG input username ``` Log out and back in, and you'll be all set. Alternatively, change the group to `uinput` in the `/etc/udev/rules.d/99-uinput.rules` file and in the `usermod` command, as the `input` group has access to other input devices, not just virtual input devices. ## Build from source Run the following commands: ``` git clone https://github.com/weave-space/oskeyboard cd oskeyboard meson compile -C build ./build/osk ``` ## Customization There is now only one way to customize `oskeyboard`: editing `keymap.h`. Currently there is a limitation of custom layouts, as the number of rows and the number of keys per row are hardcoded in `main.c`. That will be remedied in the near future. Any changes to `keymap.h` require you to recompile, simply run `meson compile -C build` to do so. ## TODO - [x] Responsive design sizes - [ ] CLI flags - [ ] Man page - [ ] Documentation - [ ] In-depth testing - [ ] Easier customization & custom layouts ## Credits - Google Gemini 3 (Explanation of docs and concepts.) - https://docs.gtk.org/gtk4/index.html