main/postmarketos-ui-fbkeyboard: new aport (MR 1013)
- Make service restart-safe by resetting console size via stop_post() - Check if /dev/uinput exists, and if it does not, do "modprobe -q uinput"
This commit is contained in:
parent
a20c2697be
commit
f1ad4128d5
5 changed files with 103 additions and 0 deletions
18
main/postmarketos-ui-fbkeyboard/APKBUILD
Normal file
18
main/postmarketos-ui-fbkeyboard/APKBUILD
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Maintainer: Ferenc Bakonyi <bakonyi.ferenc@gmail.com>
|
||||
pkgname=postmarketos-ui-fbkeyboard
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
pkgdesc="Plain framebuffer console with touchscreen keyboard support"
|
||||
url="https://github.com/bakonyiferenc/fbkeyboard"
|
||||
arch="all"
|
||||
license="GPL-3.0-or-later"
|
||||
depends="fbkeyboard coreutils"
|
||||
install="$pkgname.post-install $pkgname.pre-deinstall $pkgname.post-upgrade"
|
||||
source="fbkeyboard.init"
|
||||
options="!check" # No tests
|
||||
|
||||
package() {
|
||||
install -Dm755 "$srcdir"/fbkeyboard.init "$pkgdir"/etc/init.d/fbkeyboard
|
||||
}
|
||||
|
||||
sha512sums="386ce9bb48a75a0cbe2dd3617eaa700368d8b3a55d502a15d16415fdebbb3234893a8e0247ff63b6222017c57c1103a0922581311b9d6bbe63b2f7699ea6f15c fbkeyboard.init"
|
||||
78
main/postmarketos-ui-fbkeyboard/fbkeyboard.init
Normal file
78
main/postmarketos-ui-fbkeyboard/fbkeyboard.init
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
#!/sbin/openrc-run
|
||||
|
||||
name="fbkeyboard"
|
||||
command="/usr/bin/fbkeyboard"
|
||||
pidfile="/var/run/fbkeyboard.pid"
|
||||
command_background=true
|
||||
|
||||
depend()
|
||||
{
|
||||
after consolefont
|
||||
keyword -docker -lxc -openvz -prefix -systemd-nspawn -uml -vserver -xenu
|
||||
}
|
||||
|
||||
start_pre()
|
||||
{
|
||||
# Setup kernel support for user level drivers (input subsystem)
|
||||
if [ ! -e /dev/uinput ]; then
|
||||
if ! modprobe -q uinput; then
|
||||
eerror "The uinput module needs to be loaded by " \
|
||||
"the fbkeyboard service or built in."
|
||||
fi
|
||||
fi
|
||||
|
||||
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
|
||||
|
||||
if [ "$ttyn" = 0 ]; then
|
||||
ebegin "Skipping console setup (rc_tty_number == 0)"
|
||||
eend 0
|
||||
return 0
|
||||
fi
|
||||
|
||||
local x= rows= retval=0 ttydev=/dev/tty
|
||||
|
||||
# Set the console size to 2/3, fbkeyboard uses 1/3
|
||||
ebegin "Setting console size"
|
||||
[ -d /dev/vc ] && ttydev=/dev/vc/
|
||||
x=1
|
||||
while [ $x -le $ttyn ]; do
|
||||
rows=$(stty -F $ttydev$x size | awk '{print $1}')
|
||||
rows=$(($rows * 2 / 3))
|
||||
if ! stty -F $ttydev$x rows $rows >/dev/null; then
|
||||
retval=1
|
||||
break
|
||||
fi
|
||||
: $(( x += 1 ))
|
||||
done
|
||||
eend $retval
|
||||
|
||||
return $retval
|
||||
}
|
||||
|
||||
stop_post()
|
||||
{
|
||||
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
|
||||
|
||||
if [ "$ttyn" = 0 ]; then
|
||||
ebegin "Skipping console setup (rc_tty_number == 0)"
|
||||
eend 0
|
||||
return 0
|
||||
fi
|
||||
|
||||
local x= rows= ttydev=/dev/tty
|
||||
|
||||
# Reset the console size by recalculating the maximum supported rows value
|
||||
ebegin "Resetting console size"
|
||||
[ -d /dev/vc ] && ttydev=/dev/vc/
|
||||
x=1
|
||||
while [ $x -le $ttyn ]; do
|
||||
rows=$(($(stty -F $ttydev$x size | awk '{print $1}') * 2))
|
||||
while stty -F $ttydev$x rows $rows >/dev/null 2>/dev/null ; do
|
||||
rows=$(($rows * 2))
|
||||
done
|
||||
until stty -F $ttydev$x rows $rows >/dev/null 2>/dev/null ; do
|
||||
: $((rows--))
|
||||
done
|
||||
: $(( x += 1 ))
|
||||
done
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
rc-update add fbkeyboard default
|
||||
|
|
@ -0,0 +1 @@
|
|||
postmarketos-ui-fbkeyboard.post-install
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
#!/bin/sh
|
||||
|
||||
rc-update del fbkeyboard
|
||||
Loading…
Add table
Add a link
Reference in a new issue