42ae052da7
This keyboard works similar to GTK+'s emoji chooser (actually, both pull from the same JSON file). Emojis are categorized in sections and variants and kept in a "model". The EmojiPager actor then uses this model to generate pages on-the-fly as the user swipes around. This is an important optimization since the amount of actors would rival with the rest of the shell otherwise. The EmojiSelection object puts the EmojiPager, the page indicators and a KeyContainer with the bottom row of emoji section shortcuts together to implement the emoji panel as a whole. The Keyboard object hooked this to an "emoji" key, which is just visible on the Clutter.InputContentPurpose where showing an emoji would be meaningful. Otherwise the surrounding buttons are made a bit wider to cover up for it (i.e. as it was before). |
||
---|---|---|
.. | ||
dbus-interfaces | ||
osk-layouts | ||
theme | ||
00_org.gnome.shell.gschema.override | ||
50-gnome-shell-system.xml | ||
emoji.json | ||
gnome-shell-dbus-interfaces.gresource.xml | ||
gnome-shell-extension-prefs.desktop.in.in | ||
gnome-shell-osk-layouts.gresource.xml | ||
gnome-shell-overrides-migration.desktop.in | ||
gnome-shell-overrides.convert | ||
gnome-shell-theme.gresource.xml | ||
gnome-shell-wayland.target | ||
gnome-shell-x11.target | ||
gnome-shell.portal | ||
gnome-shell.service.in | ||
meson.build | ||
org.gnome.Shell.desktop.in.in | ||
org.gnome.shell.gschema.xml.in | ||
org.gnome.Shell.PortalHelper.desktop.in.in | ||
org.gnome.Shell.PortalHelper.service.in | ||
perf-background.xml.in | ||
README.osk-layouts | ||
update-osk-layouts.sh |
Gnome-shell OSK layouts are extracted from CLDR layout definitions: https://www.unicode.org/cldr/charts/latest/keyboards/layouts/index.html Updating these involves several steps: 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 2) Do git add and git commit