You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							66 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
	
	
							66 lines
						
					
					
						
							2.8 KiB
						
					
					
				#!/bin/bash
 | 
						|
 | 
						|
# Copyright 2018 Collabora, Ltd.
 | 
						|
# Copyright 2018 General Electric Company
 | 
						|
#
 | 
						|
# Permission is hereby granted, free of charge, to any person obtaining
 | 
						|
# a copy of this software and associated documentation files (the
 | 
						|
# "Software"), to deal in the Software without restriction, including
 | 
						|
# without limitation the rights to use, copy, modify, merge, publish,
 | 
						|
# distribute, sublicense, and/or sell copies of the Software, and to
 | 
						|
# permit persons to whom the Software is furnished to do so, subject to
 | 
						|
# the following conditions:
 | 
						|
#
 | 
						|
# The above copyright notice and this permission notice (including the
 | 
						|
# next paragraph) shall be included in all copies or substantial
 | 
						|
# portions of the Software.
 | 
						|
#
 | 
						|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
						|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
						|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 | 
						|
# NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 | 
						|
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 | 
						|
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
						|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 | 
						|
# SOFTWARE.
 | 
						|
 | 
						|
# This is an example script working as Weston's calibration helper.
 | 
						|
# Its purpose is to permanently store the calibration matrix for the given
 | 
						|
# touchscreen input device into a udev property. Since this script naturally
 | 
						|
# runs as the user that runs Weston, it presumably cannot write directly into
 | 
						|
# /etc. It is left for the administrator to set up appropriate files and
 | 
						|
# permissions.
 | 
						|
 | 
						|
# To use this script, one needs to edit weston.ini, in section [libinput], add:
 | 
						|
#   calibration_helper=/path/to/bin/calibration-helper.bash
 | 
						|
 | 
						|
# exit immediately if any command fails
 | 
						|
set -e
 | 
						|
 | 
						|
# The arguments Weston gives us:
 | 
						|
SYSPATH="$1"
 | 
						|
MATRIX="$2 $3 $4 $5 $6 $7"
 | 
						|
 | 
						|
# Pick something to recognize the right touch device with.
 | 
						|
# Usually one would use something like a serial.
 | 
						|
SERIAL=$(udevadm info "$SYSPATH" --query=property | \
 | 
						|
	awk -- 'BEGIN { FS="=" } { if ($1 == "ID_SERIAL") { print $2; exit } }')
 | 
						|
 | 
						|
# If cannot find a serial, tell the server to not use the new calibration.
 | 
						|
[ -z "$SERIAL" ] && exit 1
 | 
						|
 | 
						|
# You'd have this write a file instead.
 | 
						|
echo "ACTION==\"add|change\",SUBSYSTEM==\"input\",ENV{ID_SERIAL}==\"$SERIAL\",ENV{LIBINPUT_CALIBRATION_MATRIX}=\"$MATRIX\""
 | 
						|
 | 
						|
# Then you'd tell udev to reload the rules:
 | 
						|
#udevadm control --reload
 | 
						|
# This lets Weston get the new calibration if you unplug and replug the input
 | 
						|
# device. Instead of writing a udev rule directly, you could have a udev rule
 | 
						|
# with IMPORT{file}="/path/to/calibration", write
 | 
						|
# "LIBINPUT_CALIBRATION_MATRIX=\"$MATRIX\"" into /path/to/calibration instead,
 | 
						|
# and skip this reload step.
 | 
						|
 | 
						|
# Make udev process the new rule by triggering a "change" event:
 | 
						|
#udevadm trigger "$SYSPATH"
 | 
						|
# If you were to restart Weston without rebooting, this lets it pick up the new
 | 
						|
# calibration.
 | 
						|
 |