Touchskærm: Fix problemer med koordinater/akser
Source: Download script
Last Updated: 11. September 2025 by Agnete Moos (agms@sonderborg.dk)
Parameters:
Navn | Type | Standardværdi | Påkrævet |
---|---|---|---|
Click to see the source code
#! /usr/bin/env sh
# The Xorg touch driver is called evdev. To find out what settings can be changed for evdev, see:
# $ man evdev
set -x
#if ! get_os2borgerpc_config os2_product | grep --quiet kiosk; then
# echo "Dette script er ikke designet til at blive anvendt på en regulær OS2borgerPC-maskine."
# exit 1
#fi
ACTIVATE="$1"
INVERT="$2"
ORIENTATION="$3"
# Ubuntus builtin Xorgs configs are in /usr/share/X11/xorg.conf.d - but user overrides usually go in /etc.
# Both dirs are read by Xorg.
OS2BPC_EVDEV_FILE=/etc/X11/xorg.conf.d/90-os2bpc-evdev.conf
if [ -z "$ORIENTATION" ]; then
ORIENTATION="normal"
fi
# To understand the necessary transformation matrix, perform the following thought experiment:
# Imagine the coordinate system that represents the intended operation of the screen,
# then determine how this must be rotated to match the coordinate system that would represent
# the operation of the screen if its orientation was normal. If the axes also need to be inverted,
# rotate by an extra 180 degrees. The necessary transformation matrix represents the total rotation
if [ "$INVERT" = "True" ] && [ "$ORIENTATION" = "normal" ]; then
TEXT='Option "TransformationMatrix" "-1 0 1 0 -1 1 0 0 1"'
elif { [ "$INVERT" = "True" ] && [ "$ORIENTATION" = "left" ]; } || { [ "$INVERT" = "False" ] && [ "$ORIENTATION" = "right" ]; }; then
TEXT='Option "TransformationMatrix" "0 1 0 -1 0 1 0 0 1"'
elif { [ "$INVERT" = "True" ] && [ "$ORIENTATION" = "right" ]; } || { [ "$INVERT" = "False" ] && [ "$ORIENTATION" = "left" ]; }; then
TEXT='Option "TransformationMatrix" "0 -1 1 1 0 0 0 0 1"'
else
TEXT=""
fi
mkdir --parents "$(dirname $OS2BPC_EVDEV_FILE)"
if [ "$ACTIVATE" = "True" ]; then
cat <<- EOF > $OS2BPC_EVDEV_FILE
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
$TEXT
EndSection
EOF
echo "This is what the config file looks like after the change:"
cat $OS2BPC_EVDEV_FILE
else
rm $OS2BPC_EVDEV_FILE
fi
Beskrivelse
Dette script kan løse to problemer hvor touchskærms-input tolkes forkert:
PROBLEM 1: OMVENDTE X- OG Y-AKSER (SPEJLEDE) Det blev erfaret i Hvidovre at nogle touchskærme fra hardwarens side ser X-aksen og Y-aksen som startende i modsatte side ift. hvad styresystemet ser. Det medfører der er inkonsistens ml. hvor man klikker og hvor styresystemet faktisk sætter markøren. Dvs. at hvis du bevæger fingeren mod venstre, så bevæger markøren sig mod højre - og omvendt. Op/ned er tilsvarende spejlet.
PROBLEM 2: Roteret touchskærm: Det blev erfaret i Ballerup at hvis touchskærmen er roteret i forhold til dens normale orientering, vil den fortsat tolke input ud fra dens normale orientering. Dette medfører typisk, at der tilsyneladende bliver byttet om på X-aksen og Y-aksen. Dvs. at hvis du bevæger fingeren mod højre, så bevæger markøren sig opad - og omvendt. Bevæger du fingeren opad bevæger markøren sig til venstre - og omvendt.
INPUTPARAMETRE:
- Aktivér?: Sæt hak for at ændre i indstillingerne til touchskærmen. Lad stå tom for at nulstille ALLE ændringer i indstillingerne til touchskærmen til det de var sat til som standard.
- Inverter X- og Y-akser?: Sæt hak for at invertere både X- og Y-aksen. Lad stå tom for IKKE at ændre på denne indstilling.
- Orientering (normal/right/left): Denne parameter skal matche den orientering, som er valgt i “OS2borgerPC Kiosk - Chromium Autostart” Hvis den efterlades tom, anvendes orienteringen “normal”
Ændringen tager først effekt efter genstart.
Vi anbefaler at starte med at afprøve scriptet på én maskine før det eventuelt rulles ud på flere.
Tak til John Vishart fra Hvidovre for at skrive den oprindelige løsning.
Dette script er kun blevet testet på OS2borgerPC Kiosk, men det burde reelt set også virke på en regulær OS2borgerPC.
Dette script er ikke blevet testet på Ubuntu 22.04. Skriv til os, hvis I oplever problemer.