scripts: add keyboard-scraper.sh
This script runs keyboard-configuration.config in a chroot. By running interesting locales against it, we can obtain keyboard suggestions.
This commit is contained in:
parent
d1dc7d4844
commit
271a1b2d29
|
@ -0,0 +1,86 @@
|
||||||
|
# File generated by ./scripts/keyboard-scraper.sh, please do not edit manually
|
||||||
|
# Based on output from keyboard-configuration.config
|
||||||
|
en_US.UTF-8:
|
||||||
|
layout: "us"
|
||||||
|
variant: ""
|
||||||
|
en_GB.UTF-8:
|
||||||
|
layout: "gb"
|
||||||
|
variant: ""
|
||||||
|
kab_DZ.UTF-8:
|
||||||
|
layout: "dz"
|
||||||
|
variant: "la"
|
||||||
|
ca_ES.UTF-8:
|
||||||
|
layout: "es"
|
||||||
|
variant: "cat"
|
||||||
|
zh_CN.UTF-8:
|
||||||
|
layout: "cn"
|
||||||
|
variant: ""
|
||||||
|
hr_HR.UTF-8:
|
||||||
|
layout: "hr"
|
||||||
|
variant: ""
|
||||||
|
cs_CZ.UTF-8:
|
||||||
|
layout: "cz"
|
||||||
|
variant: ""
|
||||||
|
ast_ES.UTF-8:
|
||||||
|
layout: "es"
|
||||||
|
variant: "ast"
|
||||||
|
be_BY.UTF-8:
|
||||||
|
layout: "us,by"
|
||||||
|
variant: ""
|
||||||
|
nl_NL.UTF-8:
|
||||||
|
layout: "us"
|
||||||
|
variant: ""
|
||||||
|
fi_FI.UTF-8:
|
||||||
|
layout: "fi"
|
||||||
|
variant: ""
|
||||||
|
fr_FR.UTF-8:
|
||||||
|
layout: "fr"
|
||||||
|
variant: "latin9"
|
||||||
|
de_DE.UTF-8:
|
||||||
|
layout: "de"
|
||||||
|
variant: ""
|
||||||
|
el_GR.UTF-8:
|
||||||
|
layout: "us,gr"
|
||||||
|
variant: ""
|
||||||
|
he_IL.UTF-8:
|
||||||
|
layout: "us,il"
|
||||||
|
variant: ""
|
||||||
|
hu_HU.UTF-8:
|
||||||
|
layout: "hu"
|
||||||
|
variant: ""
|
||||||
|
id_ID.UTF-8:
|
||||||
|
layout: "us"
|
||||||
|
variant: ""
|
||||||
|
lv_LV.UTF-8:
|
||||||
|
layout: "lv"
|
||||||
|
variant: ""
|
||||||
|
lt_LT.UTF-8:
|
||||||
|
layout: "lt"
|
||||||
|
variant: ""
|
||||||
|
pl_PL.UTF-8:
|
||||||
|
layout: "pl"
|
||||||
|
variant: ""
|
||||||
|
ru_RU.UTF-8:
|
||||||
|
layout: "us,ru"
|
||||||
|
variant: ""
|
||||||
|
sr_RS:
|
||||||
|
layout: "rs,rs"
|
||||||
|
variant: "latin,"
|
||||||
|
es_ES.UTF-8:
|
||||||
|
layout: "es"
|
||||||
|
variant: ""
|
||||||
|
sv_SE.UTF-8:
|
||||||
|
layout: "se"
|
||||||
|
variant: ""
|
||||||
|
bo_IN:
|
||||||
|
layout: "us,cn"
|
||||||
|
variant: ",tib"
|
||||||
|
uk_UA.UTF-8:
|
||||||
|
layout: "us,ua"
|
||||||
|
variant: ""
|
||||||
|
nb:
|
||||||
|
layout: "us"
|
||||||
|
variant: ""
|
||||||
|
oc:
|
||||||
|
layout: "us"
|
||||||
|
variant: ""
|
|
@ -0,0 +1,74 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# usage: ./scripts/keyboard-scraper.sh
|
||||||
|
# setup enough of a chroot to run keyboard-configuration.config
|
||||||
|
# and scrape it for keyboard recommendations
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
outfile=kbds/keyboard-configuration.yaml
|
||||||
|
langs=$(cat languagelist | cut -d: -f2)
|
||||||
|
|
||||||
|
tmpdir=$(mktemp -d -p $(pwd))
|
||||||
|
trap "rm -fr $tmpdir" EXIT
|
||||||
|
|
||||||
|
if [ ! -f keyboard-configuration.config ] ; then
|
||||||
|
wget https://salsa.debian.org/installer-team/console-setup/-/raw/master/debian/keyboard-configuration.config
|
||||||
|
fi
|
||||||
|
|
||||||
|
# setup prerequisites for the config script
|
||||||
|
mkdir -p $tmpdir/bin
|
||||||
|
cp /usr/bin/busybox $tmpdir/bin/sh
|
||||||
|
ln $tmpdir/bin/sh $tmpdir/bin/sed
|
||||||
|
ln $tmpdir/bin/sh $tmpdir/bin/grep
|
||||||
|
|
||||||
|
mkdir -p $tmpdir/usr/share/debconf
|
||||||
|
touch $tmpdir/usr/share/debconf/confmodule
|
||||||
|
|
||||||
|
mkdir -p $tmpdir/dev
|
||||||
|
sudo mknod -m 666 $tmpdir/dev/null c 1 3
|
||||||
|
|
||||||
|
cp keyboard-configuration.config $tmpdir
|
||||||
|
|
||||||
|
# more prerequisites, and save db_set output for later consumption
|
||||||
|
cat > $tmpdir/stage2 <<EOF
|
||||||
|
all_kbdnames() { :; }
|
||||||
|
db_capb() { :; }
|
||||||
|
db_get() { :; }
|
||||||
|
keyboard_present() { false; }
|
||||||
|
|
||||||
|
dpkg()
|
||||||
|
{
|
||||||
|
echo "$(dpkg --print-architecture)"
|
||||||
|
}
|
||||||
|
|
||||||
|
db_set()
|
||||||
|
{
|
||||||
|
echo "\$1" "\$2" >> /db_set.\$LC_CTYPE
|
||||||
|
}
|
||||||
|
|
||||||
|
# LC_CTYPE is used by the config script to decide which locale we're providing
|
||||||
|
# a keyboard suggestion for.
|
||||||
|
LC_CTYPE="\$1"
|
||||||
|
export LC_CTYPE
|
||||||
|
. /keyboard-configuration.config
|
||||||
|
EOF
|
||||||
|
chmod 755 $tmpdir/stage2
|
||||||
|
|
||||||
|
cat > $outfile <<EOF
|
||||||
|
# File generated by $0, please do not edit manually
|
||||||
|
# Based on output from keyboard-configuration.config
|
||||||
|
EOF
|
||||||
|
|
||||||
|
for locale in $langs ; do
|
||||||
|
echo "$locale"
|
||||||
|
sudo chroot $tmpdir /bin/sh /stage2 "$locale"
|
||||||
|
# transform interesting db_set values into a simplistic yaml format
|
||||||
|
echo "$locale:" >> $outfile
|
||||||
|
awk '
|
||||||
|
/layoutcode/ {print " layout: " "\""$2"\""}
|
||||||
|
/variantcode/ {print " variant: " "\""$2"\""}
|
||||||
|
' < $tmpdir/db_set.$locale >> $outfile
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "output to $outfile"
|
Loading…
Reference in New Issue