#!/bin/bash ### BEGIN INIT INFO # Provides: fixkeyboard # Required-Start: $local_fs # Required-Stop: $local_fs # Should-Start: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: S 0 1 6 # Short-Description: Keyboard fixing # Description: Adds logielite and Extended French keyboard ### END INIT INFO KEYBOARD_PATCH=/etc/X11/xkb/keyboard.patch XML_PATCH=/etc/X11/xkb/xml.patch XKBDIR=/usr/share/X11/xkb if [ ! -f "$KEYBOARD_PATCH" ]; then exit 0 fi echo -n "JCD keyboard: " EXKBDIR=${XKBDIR//\//\\/} # Delete any unwanted diversions for i in $(dpkg-divert --list | grep ^local| grep /xkb/| cut -f4 -d' '); do rm $i;dpkg-divert --remove $i > /dev/null; echo -n .; done # First, check wether all diversions are active case "$1" in start|restart|reload) find "$XKBDIR" -name '*.rej' | xargs rm 2>/dev/null for i in $(grep ^+++ "$KEYBOARD_PATCH"| cut -f2 -d' '|cut -f1|sed -e "s/^./$EXKBDIR/g"); do B=$(dpkg-divert --list "$i") if [ -z "$B" ]; then if [ -e "$i.orig" ]; then mv "$i.orig" "$i" fi dpkg-divert --add --rename --divert "$i.orig" "$i">/dev/null echo -n "." fi cp "$i.orig" "$i" done dpkg-divert --add --rename --divert "/etc/X11/xkb/base.xml.orig" "/etc/X11/xkb/base.xml">/dev/null cp "/etc/X11/xkb/base.xml.orig" "/etc/X11/xkb/base.xml" cd "$XKBDIR" patch -p0 -s < "$KEYBOARD_PATCH" cd /etc/X11/xkb patch -p0 -s < "$XML_PATCH" echo "enabled." for i in $(grep ^+++ "$KEYBOARD_PATCH"| cut -f2 -d' '|cut -f1|sed -e "s/^./$EXKBDIR/g"); do touch -r "$i.orig" "$i" done ;; *) for i in $(grep ^+++ "$KEYBOARD_PATCH"| cut -f2 -d' '|cut -f1|sed -e "s/^./$EXKBDIR/g"); do if [ -e "$i.orig" ]; then mv "$i.orig" "$i" fi done if [ -e "/etc/X11/xkb/base.xml.orig" ]; then mv "/etc/X11/xkb/base.xml.orig" "/etc/X11/xkb/base.xml" fi find "$XKBDIR" -name '*.rej' -o -name '*.orig' | xargs rm 2>/dev/null echo "disabled." ;; esac