129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
*squeekboard* - a Wayland on-screen keyboard
 | 
						|
========================================
 | 
						|
 | 
						|
*Squeekboard* is the on-screen-keyboard input-method for Phosh. It is primarily designed for smartphones, tablet-PCs, and other devices with touchscreens.
 | 
						|
 | 
						|
It squeaks because some Rust got inside.
 | 
						|
 | 
						|
Features
 | 
						|
--------
 | 
						|
 | 
						|
### Present
 | 
						|
 | 
						|
- GTK3
 | 
						|
- Custom keyboard layouts defined in yaml
 | 
						|
- Input purpose dependent keyboard layouts
 | 
						|
- DBus interface to show and hide
 | 
						|
- Use Wayland input method protocol to submit text
 | 
						|
- Use Wayland virtual keyboard protocol
 | 
						|
 | 
						|
### TODO
 | 
						|
 | 
						|
- [Port to GTK4 / GTK4-Layer-Shell](https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/64)
 | 
						|
- [Text prediction/correction](https://gitlab.gnome.org/World/Phosh/squeekboard/-/issues/54)
 | 
						|
- Use preedit
 | 
						|
- Submit actions like "next field" using a future Wayland protocol
 | 
						|
- Pick up DBus interface files from /usr/share
 | 
						|
 | 
						|
Creating layouts
 | 
						|
-------------------
 | 
						|
 | 
						|
If you want to work on layouts, check out the [guide](doc/tutorial.md).
 | 
						|
 | 
						|
Nightly builds
 | 
						|
--------------
 | 
						|
 | 
						|
For testing the latest commits of the `main`-branch, one can install the nightly builds of Squeekboard.
 | 
						|
For more information about the nightly builds, read the ["Phosh Nightly Package Builds"-blog-post](https://phosh.mobi/posts/phosh-nightly/).
 | 
						|
 | 
						|
Building
 | 
						|
--------
 | 
						|
 | 
						|
### Dependencies
 | 
						|
 | 
						|
See `.gitlab-ci.yml` or run `apt-get build-dep .`
 | 
						|
 | 
						|
### Build from git repo
 | 
						|
 | 
						|
```sh
 | 
						|
$ git clone https://gitlab.gnome.org/World/Phosh/squeekboard.git
 | 
						|
$ cd squeekboard
 | 
						|
$ mkdir _build
 | 
						|
$ meson setup _build/
 | 
						|
$ cd _build
 | 
						|
$ ninja
 | 
						|
```
 | 
						|
 | 
						|
To run tests use `ninja test`. To install squeekboard run `ninja install`.
 | 
						|
 | 
						|
Running
 | 
						|
-------
 | 
						|
 | 
						|
```sh
 | 
						|
$ cd ../build/
 | 
						|
$ src/squeekboard
 | 
						|
```
 | 
						|
 | 
						|
If no compatible Wayland compositor is running yet, you can use Phoc (after installing it):
 | 
						|
 | 
						|
```sh
 | 
						|
$ phoc --exec 'src/squeekboard'
 | 
						|
```
 | 
						|
 | 
						|
Squeekboard's panel will appear whenever a compatible application requests an input method. Click a text field in any GTK application, like `python3 ./tools/entry.py`.
 | 
						|
 | 
						|
Squeekboard honors the gnome "screen-keyboard-enabled" setting. Either enable this through gnome-settings under accessibility or run:
 | 
						|
 | 
						|
```sh
 | 
						|
$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
 | 
						|
```
 | 
						|
 | 
						|
Alternatively, force panel visibility manually with:
 | 
						|
 | 
						|
```sh
 | 
						|
$ busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true
 | 
						|
```
 | 
						|
 | 
						|
or by using the environment-variable `SQUEEKBOARD_DEBUG=force_show`.
 | 
						|
 | 
						|
### What the compositor has to support
 | 
						|
 | 
						|
A compatible compositor has to support the protocols:
 | 
						|
 | 
						|
- layer-shell
 | 
						|
- virtual-keyboard-v1
 | 
						|
 | 
						|
It's strongly recommended to support:
 | 
						|
 | 
						|
- input-method-v2
 | 
						|
 | 
						|
Settings
 | 
						|
--------
 | 
						|
 | 
						|
You can change the height of the panel for the keyboard with:
 | 
						|
 | 
						|
```sh
 | 
						|
$ gsettings set sm.puri.Squeekboard scale-in-horizontal-screen-orientation 1.0
 | 
						|
$ gsettings set sm.puri.Squeekboard scale-in-vertical-screen-orientation 1.0
 | 
						|
```
 | 
						|
and wether or not layouts will stretch to fit the panel with:
 | 
						|
 | 
						|
```sh
 | 
						|
$ gsettings set sm.puri.Squeekboard layout-shape-changes-to-fit-panel true
 | 
						|
$ gsettings set sm.puri.Squeekboard layout-shape-changes-to-fit-panel false
 | 
						|
```
 | 
						|
 | 
						|
Note: If the keyboard is open when the settings are changed, the changes will not be visible until the keyboard is opened again, or the layout is changed.
 | 
						|
While using Phosh, you can long-click/long-tap the home-bar at the bottom, to open and close the keyboard.
 | 
						|
 | 
						|
To reset the settings to the default, you can use:
 | 
						|
 | 
						|
```sh
 | 
						|
$ gsettings reset-recursively sm.puri.Squeekboard
 | 
						|
```
 | 
						|
 | 
						|
Developing
 | 
						|
----------
 | 
						|
 | 
						|
See [`doc/hacking.md`](doc/hacking.md) for this copy, or the [official documentation](https://world.pages.gitlab.gnome.org/Phosh/squeekboard) for the current release.
 |