summaryrefslogtreecommitdiffstats
path: root/setup-keymap
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2007-09-07 07:28:03 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2007-09-07 07:28:03 +0000
commitf1e147b06e143c36ddc023f5297e3d5a15852466 (patch)
tree9f3272d10e677ac3a822943c7b5f1b0bf1eccce0 /setup-keymap
parentefcd98845f1e6888ebcd6a55c70206c517b234aa (diff)
downloadalpine-conf-f1e147b06e143c36ddc023f5297e3d5a15852466.tar.bz2
alpine-conf-f1e147b06e143c36ddc023f5297e3d5a15852466.tar.xz
added albootstrap, setup-keymap and replaced setup-problem-reporting with setup-sendbug
Diffstat (limited to 'setup-keymap')
-rw-r--r--setup-keymap104
1 files changed, 104 insertions, 0 deletions
diff --git a/setup-keymap b/setup-keymap
new file mode 100644
index 0000000..37654e2
--- /dev/null
+++ b/setup-keymap
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+PREFIX=
+. $PREFIX/lib/libalpine.sh
+
+MAPDIR="$ROOT/usr/share/bkeymaps"
+
+if [ -f "$ROOT/etc/conf.d/keymap" ]; then
+ . "$ROOT/etc/conf.d/keymap"
+ variant=$(basename $KEYMAP .bmap.gz)
+fi
+
+
+show_keymaps() {
+ local opwd="$PWD"
+ cd "$ROOT/usr/share/bkeymaps"
+ ls --color=never
+ cd "$opwd"
+}
+
+select_layout() {
+ while true; do
+ if [ -z "$layout" ]; then
+ layout=none
+ fi
+ echo "Available keyboard layouts:"
+ show_keymaps
+ echon "Select keyboard layout [$layout]: "
+ default_read layout "$layout"
+ if [ "$layout" = "abort" ] || [ "$layout" = "none" ] ; then
+ goodbye 0
+ elif [ -d "$MAPDIR/$layout" ] ; then
+ return 0
+ fi
+ done
+}
+
+setup_mapfile() {
+ local name=$(basename $1)
+ local conf="$ROOT/etc/conf.d/keymap"
+ mkdir -p "$ROOT/etc/keymap"
+ mkdir -p "$ROOT/etc/conf.d/"
+ if gzip -9 -c "$1" > "$ROOT/etc/keymap/$name.gz" ; then
+ [ -f "$conf" ] && sed -i '/^KEYMAP=/d' "$conf"
+ echo "KEYMAP=/etc/keymap/$name.gz" >> "$conf"
+ # we actually load the keymap now
+ zcat /etc/keymap/$name.gz | loadkmap
+ rc_add -s 20 keymap
+ goodbye 0
+ fi
+}
+
+select_variant() {
+ while true; do
+ echon "Available variants: "
+ for i in $(ls $MAPDIR/$layout) ; do
+ echon "$(basename $i .bmap) "
+ done
+ echo ""
+ if [ ! -f "$MAPDIR/$layout/$variant.bmap" ] ; then
+ variant=""
+ fi
+ echon "Select variant [$variant]: "
+ default_read variant "$variant"
+ if [ "$variant" = "abort" ] || [ "$variant" = "none" ]; then
+ break;
+ fi
+ if [ -f "$MAPDIR/$layout/$variant.bmap" ]; then
+ setup_mapfile "$MAPDIR/$layout/$variant.bmap"
+ fi
+ done
+}
+
+goodbye() {
+ if [ $was_installed -ne 0 ]; then
+ pkg_deinst bkeymaps
+ fi
+ exit $1
+}
+
+apk_info -e bkeymaps
+was_installed=$?
+
+pkg_inst bkeymaps
+
+deflayout="$1"
+while true; do
+
+ if [ -n "$deflayout" ]; then
+ layout="$deflayout"
+ unset deflayout
+ else
+ select_layout
+ fi
+
+ # if there is only one variant, just pick it
+ count=$(ls $MAPDIR/$layout | wc -l)
+ if [ $count -eq 1 ]; then
+ setup_mapfile "$MAPDIR/$layout/$(ls $MAPDIR/$layout)"
+ continue
+ fi
+
+ select_variant
+done