data: Add README and supporting script to update keyboard layouts from CLDR
The README describes the steps in detail, but most of it is abstracted away by the update-osk-layouts.sh script.
This commit is contained in:
parent
7544bba0c1
commit
6795fb0bd6
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,6 +8,7 @@ ChangeLog
|
||||
INSTALL
|
||||
aclocal.m4
|
||||
autom4te.cache
|
||||
data/.osk-layout-workbench
|
||||
data/org.gnome.Shell.desktop
|
||||
data/org.gnome.Shell.desktop.in
|
||||
data/gnome-shell-extension-prefs.desktop
|
||||
|
33
data/README.osk-layouts
Normal file
33
data/README.osk-layouts
Normal file
@ -0,0 +1,33 @@
|
||||
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
|
48
data/update-osk-layouts.sh
Executable file
48
data/update-osk-layouts.sh
Executable file
@ -0,0 +1,48 @@
|
||||
#!/bin/env bash
|
||||
|
||||
CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip"
|
||||
CLDR2JSON_GIT="git://repo.or.cz/cldr2json.git"
|
||||
|
||||
WORKDIR=".osk-layout-workbench"
|
||||
CLDR2JSON="$WORKDIR/cldr2json/cldr2json.py"
|
||||
SRCDIR="$WORKDIR/keyboards/android"
|
||||
DESTDIR="osk-layouts"
|
||||
GRESOURCE_FILE="gnome-shell-osk-layouts.gresource.xml"
|
||||
TMP_GRESOURCE_FILE=".$GRESOURCE_FILE.tmp"
|
||||
|
||||
cd `dirname $0`
|
||||
|
||||
# Ensure work/dest dirs
|
||||
rm -rf $WORKDIR
|
||||
mkdir -p $WORKDIR
|
||||
mkdir -p "osk-layouts"
|
||||
|
||||
# Download stuff on the work dir
|
||||
pushd $WORKDIR
|
||||
gio copy $CLDR_LAYOUTS_TARBALL .
|
||||
git clone $CLDR2JSON_GIT
|
||||
unzip keyboards.zip
|
||||
popd
|
||||
|
||||
# Transform to JSON files
|
||||
$CLDR2JSON $SRCDIR $DESTDIR
|
||||
|
||||
# Generate new gresources xml file
|
||||
cat >$TMP_GRESOURCE_FILE <<EOF
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/org/gnome/shell/osk-layouts">
|
||||
EOF
|
||||
|
||||
for f in $DESTDIR/*.json
|
||||
do
|
||||
echo " <file>$(basename $f)</file>" >>$TMP_GRESOURCE_FILE
|
||||
done
|
||||
|
||||
cat >>$TMP_GRESOURCE_FILE <<EOF
|
||||
</gresource>
|
||||
</gresources>
|
||||
EOF
|
||||
|
||||
# Rewrite old gresources xml
|
||||
mv $TMP_GRESOURCE_FILE $GRESOURCE_FILE
|
Loading…
Reference in New Issue
Block a user