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:
Dan Bungert 2022-07-27 21:25:30 -06:00
parent d1dc7d4844
commit 271a1b2d29
2 changed files with 160 additions and 0 deletions

View File

@ -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: ""

74
scripts/keyboard-scraper.sh Executable file
View File

@ -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"