Pekka Paalanen | bfaaedc | 2018-03-13 14:51:00 +0200 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | # Copyright 2018 Collabora, Ltd. |
| 4 | # Copyright 2018 General Electric Company |
| 5 | # |
| 6 | # Permission is hereby granted, free of charge, to any person obtaining |
| 7 | # a copy of this software and associated documentation files (the |
| 8 | # "Software"), to deal in the Software without restriction, including |
| 9 | # without limitation the rights to use, copy, modify, merge, publish, |
| 10 | # distribute, sublicense, and/or sell copies of the Software, and to |
| 11 | # permit persons to whom the Software is furnished to do so, subject to |
| 12 | # the following conditions: |
| 13 | # |
| 14 | # The above copyright notice and this permission notice (including the |
| 15 | # next paragraph) shall be included in all copies or substantial |
| 16 | # portions of the Software. |
| 17 | # |
| 18 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| 19 | # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 20 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 21 | # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS |
| 22 | # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
| 23 | # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN |
| 24 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| 25 | # SOFTWARE. |
| 26 | |
| 27 | # This is an example script working as Weston's calibration helper. |
| 28 | # Its purpose is to permanently store the calibration matrix for the given |
| 29 | # touchscreen input device into a udev property. Since this script naturally |
| 30 | # runs as the user that runs Weston, it presumably cannot write directly into |
| 31 | # /etc. It is left for the administrator to set up appropriate files and |
| 32 | # permissions. |
| 33 | |
| 34 | # To use this script, one needs to edit weston.ini, in section [libinput], add: |
| 35 | # calibration_helper=/path/to/bin/calibration-helper.bash |
| 36 | |
| 37 | # exit immediately if any command fails |
| 38 | set -e |
| 39 | |
| 40 | # The arguments Weston gives us: |
| 41 | SYSPATH="$1" |
| 42 | MATRIX="$2 $3 $4 $5 $6 $7" |
| 43 | |
| 44 | # Pick something to recognize the right touch device with. |
| 45 | # Usually one would use something like a serial. |
| 46 | SERIAL=$(udevadm info "$SYSPATH" --query=property | \ |
| 47 | awk -- 'BEGIN { FS="=" } { if ($1 == "ID_SERIAL") { print $2; exit } }') |
| 48 | |
| 49 | # If cannot find a serial, tell the server to not use the new calibration. |
| 50 | [ -z "$SERIAL" ] && exit 1 |
| 51 | |
| 52 | # You'd have this write a file instead. |
Pekka Paalanen | 0b61620 | 2021-03-17 13:14:54 +0200 | [diff] [blame^] | 53 | echo "ACTION!=\"remove\",SUBSYSTEM==\"input\",ENV{ID_SERIAL}==\"$SERIAL\",ENV{LIBINPUT_CALIBRATION_MATRIX}=\"$MATRIX\"" |
Pekka Paalanen | bfaaedc | 2018-03-13 14:51:00 +0200 | [diff] [blame] | 54 | |
| 55 | # Then you'd tell udev to reload the rules: |
| 56 | #udevadm control --reload |
| 57 | # This lets Weston get the new calibration if you unplug and replug the input |
| 58 | # device. Instead of writing a udev rule directly, you could have a udev rule |
| 59 | # with IMPORT{file}="/path/to/calibration", write |
| 60 | # "LIBINPUT_CALIBRATION_MATRIX=\"$MATRIX\"" into /path/to/calibration instead, |
| 61 | # and skip this reload step. |
| 62 | |
| 63 | # Make udev process the new rule by triggering a "change" event: |
| 64 | #udevadm trigger "$SYSPATH" |
| 65 | # If you were to restart Weston without rebooting, this lets it pick up the new |
| 66 | # calibration. |