Create docs, based on Sphinx with Commonmark, seeding it with https://forums.puri.sm/t/translations-and-virtual-touch-keyboards-tracking-localization/7669/48?u=dcz
		
			
				
	
	
	
		
			4.1 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			4.1 KiB
		
	
	
	
	
	
	
	
Kareema's guide to creating layouts
It’s long overdue to write a comprehensive guide how to add a keyboard layout from start. But unfortunately, I don’t have much time left ATM. A lot of information can be found in this thread.
So at least I will try to start writing a short how-to here and edit this post as I find the time. Hope this helps a bit - comments and corrections welcome.
Get one of the existing keyboard layouts
- You can get one of the keyboards from the squeekboard git repository : https://source.puri.sm/Librem5/squeekboard
 - The keyboard layouts are located in the subdirectory 
data/keyboard/in the.yamlfiles - Take a look and try to understand them :slight_smile:
 
Fork your own copy of squeekboard
- Best way would be to start with a fork of the squeekboard repository: Create a user account at https://source.puri.sm/, go the the squeekboard git repository, press “Fork” in the web interface. You can find further instructions here.
 - Clone your fork locally with 
git cloneand use the uri of your forked repo there 
Workflow to edit your keyboard and get it merged
- A generic guide how the workflow to contribute works, can be found at https://developer.puri.sm/Librem5/Contact/Contributing.html
 - Create a branch: Name it “keyboard-layout-mylanguage” or whatever
 - Checkout your branch, edit your keyboard layout and commit your changes
 - Push the local changes (to the branch of your fork of squeekboard)
 - Create a merge request for the branch to get your changes merged to the official squeekboard git repository
 
Compile squeekboard
- Follow the instructions found in “Building” section of the squeekboard’s README: Running squeekboard: https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#building
 
Running squeekboard
- Follow these instructions to run squeekboard: https://source.puri.sm/Librem5/squeekboard/blob/master/README.md#running
 - Additionally take a look at https://source.puri.sm/Librem5/squeekboard/blob/master/HACKING.md#testing
 - You can either test it locally on your Linux system or use the QEMU Librem 5 image
 - To test squeekboard locally, you need phoc. Either compile that from the sources as well or use the CI repository ci.puri.sm for Debian based systems:
deb [arch=amd64] http://ci.puri.sm/ scratch librem5Squeekboard can be installed from there as a Debian package, too (that’s what I often do). But beware - there be dragons! You could bork your system with these packages and you should probably disable this repository again after installing what you need - these packages are not meant for production systems (or so I heard 😉 ) 
Creating the keyboard layout
- To be written: For the time being, take a look at Using non-latin language on Librem 5
 - The correct name of the .yaml file can be found with the command 
gsettings get org.gnome.desktop.input-sources sourcesThe output should be something like this:[('xkb', 'us'), ('xkb', 'de')]So f.ex. “de.yaml” would be the correct name for the German keyboard layout. - The translations for the keyboard layout names in the different languages can be found at 
data/langs/ - Don’t forget to add your newly created layout or translation to 
src/resources.rsand the layout totests/meson.build(that’s for me, because I always forget it) 
Testing the layout
- Copy your yaml file to 
~/.local/share/squeekboard/keyboards/for testing purposes. From there it should get picked up by squeekboard - To test the translations in 
data/langs/, you have to compile squeekboard