postinst is in keyboard-configuration 1.178ubuntu2.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | #!/bin/sh
set -e
# Source debconf library.
. /usr/share/debconf/confmodule
# The same as /usr/bin/which - in order to make "which" available before
# /usr is mounted
which () {
local IFS
IFS=:
for i in $PATH; do
if [ -x "$i/$1" ]; then
echo "$i/$1"
return 0
fi
done
return 1
}
# In d-i the config script is not executed automatically
if [ -f /usr/share/console-setup/keyboard-configuration.config ]; then
/usr/share/console-setup/keyboard-configuration.config || exit $?
fi
keyboard_present () {
local kern kbdpattern class subclass protocol
kern=`uname -r`
case "$kern" in
1*|2.0*|2.1*|2.2*|2.3*|2.4*|2.5*)
# can't check keyboard presence
return 0;
;;
esac
[ -d /sys/bus/usb/devices ] || return 0
for d in /sys/bus/usb/devices/*:*; do
[ -d "$d" ] || continue
class=$(cat "$d/bInterfaceClass") # 03 = Human Interface Device
subclass=$(cat "$d/bInterfaceSubClass") # 01 = Boot Interface Subclass
protocol=$(cat "$d/bInterfaceProtocol") # 01 = Keyboard
case "$class:$subclass:$protocol" in
03:01:01)
return 0
;;
esac
done
# For Bluetooth keyboards one has to check the class of the device
# -- it has to be 0x000540 or 0x002540. I don't how to make the
# required test, so instead we test (unreliably) for a string
# bluetooth.*keyboard in /proc/bus/input/devices.
[ -f /proc/bus/input/devices ] || return 0
kbdpattern="AT Set \|AT Translated Set\|AT Raw Set"
kbdpattern="$kbdpattern\|Atari Keyboard"
kbdpattern="$kbdpattern\|Amiga Keyboard"
kbdpattern="$kbdpattern\|HIL keyboard"
kbdpattern="$kbdpattern\|ADB keyboard"
kbdpattern="$kbdpattern\|Sun Type"
kbdpattern="$kbdpattern\|bluetooth.*keyboard"
if grep -i "$kbdpattern" /proc/bus/input/devices >/dev/null; then
return 0
fi
return 1
}
# keyboard_present () {
# if there is a keyboard; then
# return 0
# else
# return 1
# fi
# }
CONFIGFILE=/etc/default/keyboard
if [ "$1" = "configure" -a ! -L "$CONFIGFILE" ]; then
db_get keyboard-configuration/modelcode
model="$RET"
db_get keyboard-configuration/layoutcode
layout="$RET"
db_get keyboard-configuration/variantcode
variant="$RET"
db_get keyboard-configuration/optionscode
options="$RET"
if [ ! -e $CONFIGFILE ]; then
cat /usr/share/console-setup/keyboard \
2>/dev/null >$CONFIGFILE || true
fi
# Ensure we do not mess up the config file's ownership and permissions.
cp -a -f $CONFIGFILE $CONFIGFILE.tmp
# If the admin deleted or commented some variables but then set
# them via debconf, (re-)add them to the conffile.
for var in XKBMODEL XKBLAYOUT XKBVARIANT XKBOPTIONS BACKSPACE; do
if ! grep "^ *${var}=" $CONFIGFILE >/dev/null; then
echo "${var}=" >>$CONFIGFILE
fi
done
sed \
-e "s|^ *XKBMODEL=.*|XKBMODEL=\"$model\"|" \
-e "s|^ *XKBLAYOUT=.*|XKBLAYOUT=\"$layout\"|" \
-e "s|^ *XKBVARIANT=.*|XKBVARIANT=\"$variant\"|" \
-e "s|^ *XKBOPTIONS=.*|XKBOPTIONS=\"$options\"|" \
-e "s|^ *BACKSPACE=.*|BACKSPACE=\"${BACKSPACE:-guess}\"|" \
<$CONFIGFILE >$CONFIGFILE.tmp
mv -f $CONFIGFILE.tmp $CONFIGFILE
db_set keyboard-configuration/store_defaults_in_debconf_db true
fi
if type plymouth >/dev/null && plymouth --ping; then
# setting the keymap breaks with plymouth in raw mode, and setting the
# font will currently also break if on vgacon
if type setupcon >/dev/null 2>&1; then
setupcon --save-only
fi
elif keyboard_present; then
if [ "$DISPLAY" ] && which setxkbmap >/dev/null; then
setxkbmap -option '' -model "$model" "$layout" "$variant" "$options" || true
# setting the font corrupts X
# setting up the keyboard breaks wayland
if type setupcon >/dev/null 2>&1; then
setupcon --save-only
cat >&2 <<EOF
Your console font configuration will be updated the next time your system
boots. If you want to update it now, run 'setupcon' from a virtual console.
EOF
fi else
case "`uname`" in
GNU)
[ ! -f /var/run/hurd-console.pid ] || kill `cat /var/run/hurd-console.pid`
;;
*)
if type setupcon >/dev/null 2>&1; then
setupcon --force --save
fi
;;
esac
fi
fi
if ! [ -d /lib/debian-installer.d ]; then
dpkg-maintscript-helper rm_conffile \
/etc/init.d/keyboard-setup 1.138~ -- "$@"
dpkg-maintscript-helper rm_conffile \
/etc/init.d/console-setup 1.138~ -- "$@"
fi
# Automatically added by dh_installdeb/11.1.6ubuntu1
dpkg-maintscript-helper rm_conffile /etc/init/console-setup.conf 1.142ubuntu8~ keyboard-configuration -- "$@"
# End automatically added section
if type update-initramfs >/dev/null 2>&1; then
update-initramfs -u
fi
exit 0
|