Linux lhjmq-records 5.15.0-118-generic #128-Ubuntu SMP Fri Jul 5 09:28:59 UTC 2024 x86_64
Your IP : 3.12.147.12
Current Path : /var/lib/dpkg/info/ |
| Current File : /var/lib/dpkg/info/keyboard-configuration.postinst |
#!/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
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 [ -d /lib/debian-installer ];
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
# We redirect the output so that postinst does not block when ScrollLock is on
setupcon --save-only >/dev/null 2>/dev/null || true
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 >/dev/null 2>/dev/null || true
fi
;;
esac
fi
else
# Setting the keymap breaks plymouth in raw mode, and setting the
# font will currently also break if on vgacon.
# Setting the font also corrupts X and postinst may be running with
# stripped environment thus we can't even detect X easily.
setupcon --save-only >/dev/null 2>/dev/null || true
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
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
if type update-initramfs >/dev/null 2>&1; then
update-initramfs -u
fi
exit 0
|