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.
		
		
		
		
			
				
					67 lines
				
				2.8 KiB
			
		
		
			
		
	
	
					67 lines
				
				2.8 KiB
			| 
								 
											8 years ago
										 
									 | 
							
								#!/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.
							 |