data: Document JSON file format in OSK layouts README file
Remove some no longer so relevant information, and add this newly relevant information for anyone that wants to add a new OSK layout. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2278>
This commit is contained in:
parent
c0a75faf89
commit
38cae3b919
@ -1,33 +1,75 @@
|
|||||||
Gnome-shell OSK layouts are extracted from CLDR layout definitions:
|
Gnome-shell OSK layouts are extracted from CLDR layout definitions:
|
||||||
https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html
|
https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html
|
||||||
|
|
||||||
Updating these involves several steps:
|
To add new layouts from CLDR:
|
||||||
|
|
||||||
1) Downloading and unzipping the tarball found at:
|
|
||||||
http://www.unicode.org/Public/cldr/latest/keyboards.zip
|
|
||||||
|
|
||||||
This file contains XML files describing the keyboard layouts.
|
|
||||||
|
|
||||||
2) Cloning the cldr2json script at:
|
|
||||||
git://repo.or.cz/cldr2json.git
|
|
||||||
|
|
||||||
It will be used to convert the XML files into JSON that can be
|
|
||||||
directly consumed by gnome-shell.
|
|
||||||
|
|
||||||
3) Running the script to produce the files:
|
|
||||||
./cldr2json <input-directory> <output-directory>
|
|
||||||
|
|
||||||
We shall usually use the "android" folder, since that's most
|
|
||||||
complete, and similar to our UI and target sizes. And the target
|
|
||||||
directory must be data/osk-layouts in this repository.
|
|
||||||
|
|
||||||
4) Modify gnome-shell-osk-layouts.gresource.xml to include the files
|
|
||||||
|
|
||||||
5) Do git add on the updated/new files, and git commit.
|
|
||||||
|
|
||||||
|
|
||||||
Or alternatively:
|
|
||||||
|
|
||||||
1) Run update-osk-layouts.sh
|
1) Run update-osk-layouts.sh
|
||||||
|
|
||||||
|
2) Modify JSON files to add extra keys, tweak appearance...
|
||||||
|
|
||||||
2) Do git add and git commit
|
2) Do git add and git commit
|
||||||
|
|
||||||
|
JSON file format
|
||||||
|
================
|
||||||
|
|
||||||
|
Each JSON file describes a keymap for a certain language and layout,
|
||||||
|
it has the following structure:
|
||||||
|
|
||||||
|
- Root (Object)
|
||||||
|
|
||||||
|
Root object of a layout, has the following properties:
|
||||||
|
|
||||||
|
- levels (Array of Level): Levels in the keymap
|
||||||
|
- locale (String): Locale name for this keymap
|
||||||
|
- name (String): Human readable name for this keymap
|
||||||
|
|
||||||
|
- Level (Object)
|
||||||
|
|
||||||
|
A level defines the keys available on a keyboard level,
|
||||||
|
these are the key panels visible at a time. E.g. to type
|
||||||
|
uppercase levels or symbols.
|
||||||
|
|
||||||
|
Levels have the following properties:
|
||||||
|
|
||||||
|
- level (String): Name of the level, common names are
|
||||||
|
"", "shift", "opt" and "opt+shift".
|
||||||
|
- mode (String): Mode for this level, common modes are
|
||||||
|
"default", "latched" and "locked".
|
||||||
|
- rows (Array of Row): Array of rows of keys.
|
||||||
|
|
||||||
|
- Row (Array)
|
||||||
|
|
||||||
|
A row is an Array of Key.
|
||||||
|
|
||||||
|
- Key (Object)
|
||||||
|
|
||||||
|
A keyboard key. Keys have the following properties:
|
||||||
|
|
||||||
|
- iconName (String): Icon name to show on the key.
|
||||||
|
Keys with an icon name do not have a label.
|
||||||
|
- label (String): Label to show on the key.
|
||||||
|
- strings (Array of String): Strings to commit. If
|
||||||
|
label property does not exist, the first element
|
||||||
|
will be also the label. Extra elements are shown
|
||||||
|
in the extra keys popover.
|
||||||
|
- keyval (String): Hexadecimal keyval to emit as
|
||||||
|
emulated key presses. Committed strings are
|
||||||
|
preferred.
|
||||||
|
- width (Double): Relative width of the key in the
|
||||||
|
row. 1 is for a square key. Multiples of 0.5 are
|
||||||
|
accepted.
|
||||||
|
- level (Integer): Level that the key switches to.
|
||||||
|
See the levelSwitch action.
|
||||||
|
- action (string): Action performed by the key,
|
||||||
|
accepted actions are:
|
||||||
|
|
||||||
|
- hide: Hides the OSK
|
||||||
|
- languageMenu: Pops up the language selection
|
||||||
|
menu
|
||||||
|
- emoji: Switches to the emoji selection panel
|
||||||
|
- modifier: Handles the keyval as a modifier
|
||||||
|
key. This handles e.g. Ctrl+A as a sequence
|
||||||
|
of Ctrl press, A press, A release, Ctrl
|
||||||
|
release.
|
||||||
|
- delete: Deletes text backwards
|
||||||
|
- levelSwitch: Switches OSK to a different level
|
||||||
|
Loading…
Reference in New Issue
Block a user