├── LICENSE ├── Makefile.am ├── Makefile.in ├── README ├── README.md ├── aclocal.m4 ├── autogen.sh ├── compile ├── conf └── 60-cmt.conf ├── config.guess ├── config.h.in ├── config.sub ├── configure ├── configure.ac ├── debian ├── README.debian ├── README.source ├── changelog ├── compat ├── control ├── copyright ├── docs ├── init-cmt-configs ├── rules ├── source │ └── format ├── xserver-xorg-input-cmt.dirs ├── xserver-xorg-input-cmt.install ├── xserver-xorg-input-cmt.postinst ├── xserver-xorg-input-cmt.postrm └── xserver-xorg-input-cmt.service ├── depcomp ├── include ├── Makefile.am ├── Makefile.in └── cmt-properties.h ├── install-sh ├── ltmain.sh ├── man ├── Makefile.am ├── Makefile.in └── cmt.man ├── missing ├── src ├── Makefile.am ├── Makefile.in ├── Makefile.test ├── cmt.c ├── cmt.h ├── event_test.cc ├── gesture.c ├── gesture.h ├── properties.c ├── properties.h ├── test_main.cc └── test_stubs.c ├── xorg-cmt.pc.in └── xorg-conf ├── 20-mouse.conf ├── 20-touchscreen.conf ├── 40-touchpad-cmt.conf ├── 50-touchpad-cmt-aebl.conf ├── 50-touchpad-cmt-alex.conf ├── 50-touchpad-cmt-banjo.conf ├── 50-touchpad-cmt-butterfly.conf ├── 50-touchpad-cmt-candy.conf ├── 50-touchpad-cmt-caroline.conf ├── 50-touchpad-cmt-cave.conf ├── 50-touchpad-cmt-celes.conf ├── 50-touchpad-cmt-clapper.conf ├── 50-touchpad-cmt-cyan.conf ├── 50-touchpad-cmt-daisy.conf ├── 50-touchpad-cmt-elan.conf ├── 50-touchpad-cmt-elm.conf ├── 50-touchpad-cmt-enguarde.conf ├── 50-touchpad-cmt-expresso.conf ├── 50-touchpad-cmt-falco.conf ├── 50-touchpad-cmt-gandof.conf ├── 50-touchpad-cmt-glimmer.conf ├── 50-touchpad-cmt-gnawty.conf ├── 50-touchpad-cmt-heli.conf ├── 50-touchpad-cmt-kaen.conf ├── 50-touchpad-cmt-kevin.conf ├── 50-touchpad-cmt-kip.conf ├── 50-touchpad-cmt-leon.conf ├── 50-touchpad-cmt-link.conf ├── 50-touchpad-cmt-lulu.conf ├── 50-touchpad-cmt-lumpy.conf ├── 50-touchpad-cmt-mario.conf ├── 50-touchpad-cmt-orco.conf ├── 50-touchpad-cmt-parrot.conf ├── 50-touchpad-cmt-pbody.conf ├── 50-touchpad-cmt-peppy.conf ├── 50-touchpad-cmt-pi.conf ├── 50-touchpad-cmt-pit.conf ├── 50-touchpad-cmt-puppy.conf ├── 50-touchpad-cmt-quawks.conf ├── 50-touchpad-cmt-rambi.conf ├── 50-touchpad-cmt-samus.conf ├── 50-touchpad-cmt-spring.conf ├── 50-touchpad-cmt-squawks.conf ├── 50-touchpad-cmt-stout.conf ├── 50-touchpad-cmt-swanky.conf ├── 50-touchpad-cmt-veyron_speedy.conf ├── 50-touchpad-cmt-winky.conf ├── 50-touchpad-cmt-wolf.conf ├── 50-touchpad-cmt-zgb.conf ├── 60-touchpad-cmt-auron_paine.conf ├── 60-touchpad-cmt-auron_yuna.conf ├── 60-touchpad-cmt-daisy_skate.conf ├── 60-touchpad-cmt-nyan_big.conf ├── 60-touchpad-cmt-nyan_blaze.conf ├── 60-touchpad-cmt-veyron_jaq.conf ├── 60-touchpad-cmt-veyron_jerry.conf ├── 60-touchpad-cmt-veyron_mighty.conf ├── 60-touchpad-cmt-veyron_minnie.conf ├── 60-touchpad-cmt-veyron_speedy.conf ├── exynos.conf ├── files ├── daisy_linearity.dat └── lumpy_linearity.dat ├── rk32.conf └── tegra.conf /LICENSE: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | // 3 | // Redistribution and use in source and binary forms, with or without 4 | // modification, are permitted provided that the following conditions are 5 | // met: 6 | // 7 | // * Redistributions of source code must retain the above copyright 8 | // notice, this list of conditions and the following disclaimer. 9 | // * Redistributions in binary form must reproduce the above 10 | // copyright notice, this list of conditions and the following disclaimer 11 | // in the documentation and/or other materials provided with the 12 | // distribution. 13 | // * Neither the name of Google Inc. nor the names of its 14 | // contributors may be used to endorse or promote products derived from 15 | // this software without specific prior written permission. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18 | // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19 | // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 20 | // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 21 | // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 22 | // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 23 | // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 | // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 | // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | # Provide an sdk location that is writable by the module 6 | DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir='$${includedir}/xorg' 7 | 8 | SUBDIRS = src include 9 | MAINTAINERCLEANFILES = ChangeLog INSTALL 10 | 11 | pkgconfigdir = $(libdir)/pkgconfig 12 | pkgconfig_DATA = xorg-cmt.pc 13 | 14 | .PHONY: ChangeLog INSTALL 15 | 16 | # TODO(djkurtz): Resolve this build failure 17 | #INSTALL: 18 | # $(INSTALL_CMD) 19 | 20 | # TODO(djkurtz): Resolve this build failure 21 | #ChangeLog: 22 | # $(CHANGELOG_CMD) 23 | 24 | dist-hook: ChangeLog INSTALL 25 | 26 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | xf86-input-cmt - Chromium OS multitouch input driver for Xorg X server 2 | 3 | License 4 | ------- 5 | See the LICENSE file. 6 | 7 | Authors 8 | ------- 9 | The Chromium OS Authors -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | xf86-input-cmt 2 | ============== 3 | 4 | X11 ChromiumOS touchpad driver ported to Linux 5 | 6 | This driver depends on libgestures: https://github.com/hugegreenbug/libgestures and libevdevc: https://github.com/hugegreenbug/libevdevc 7 | 8 | Compiling 9 | ============== 10 | ./configure --prefix=/usr 11 | make 12 | make install 13 | Configuring 14 | ============= 15 | You will need to copy over the config files for the driver to the appropriate locations. The config files are in the xorg-conf directory in this repo. For a trackpad, copy over the 20-mouse.conf, 40-touchpad-cmt.conf, and a 50-touchpad-cmt file that matches your device to the xorg.conf.d directory for your system (/usr/share/X11/xorg.conf.d on Ubuntu Saucy). 16 | 17 | If you use the Ubuntu package, the config files are installed in /usr/share/xf86-input-cmt. 18 | 19 | You will also need to move your old config file out of the way or remove the previous driver. If you were using the synaptics driver, move the synaptics.conf (/usr/share/X11/xorg.conf.d/50-synaptics.conf on Ubuntu) to something other than .conf or remove the synaptics driver. 20 | 21 | Options can be modified with xinput. You can list all the properties available to change: 22 | 23 | xinput --list-props 12 24 | 25 | Where 12 is the id of your trackpad. It may or may not be 12. You can list all of your devices to find which one is your trackpad: 26 | 27 | xinput 28 | 29 | Place the options you wish to change in the touchpad config file that you copied over to /usr/share/X11/xorg.conf.d. 30 | 31 | 32 | Packages 33 | ============ 34 | There is an ubuntu ppa with the latest releases here: https://launchpad.net/~hugegreenbug/+archive/cmt . 35 | 36 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | # Use of this source code is governed by a BSD-style license that can be 4 | # found in the LICENSE file. 5 | 6 | srcdir=`dirname $0` 7 | test -z "$srcdir" && srcdir=. 8 | 9 | ORIGDIR=`pwd` 10 | cd $srcdir 11 | 12 | autoreconf -v --install || exit 1 13 | cd $ORIGDIR || exit $? 14 | 15 | $srcdir/configure --enable-maintainer-mode "$@" 16 | -------------------------------------------------------------------------------- /compile: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Wrapper for compilers which do not understand '-c -o'. 3 | 4 | scriptversion=2012-10-14.11; # UTC 5 | 6 | # Copyright (C) 1999-2013 Free Software Foundation, Inc. 7 | # Written by Tom Tromey . 8 | # 9 | # This program is free software; you can redistribute it and/or modify 10 | # it under the terms of the GNU General Public License as published by 11 | # the Free Software Foundation; either version 2, or (at your option) 12 | # any later version. 13 | # 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | # 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program. If not, see . 21 | 22 | # As a special exception to the GNU General Public License, if you 23 | # distribute this file as part of a program that contains a 24 | # configuration script generated by Autoconf, you may include it under 25 | # the same distribution terms that you use for the rest of that program. 26 | 27 | # This file is maintained in Automake, please report 28 | # bugs to or send patches to 29 | # . 30 | 31 | nl=' 32 | ' 33 | 34 | # We need space, tab and new line, in precisely that order. Quoting is 35 | # there to prevent tools from complaining about whitespace usage. 36 | IFS=" "" $nl" 37 | 38 | file_conv= 39 | 40 | # func_file_conv build_file lazy 41 | # Convert a $build file to $host form and store it in $file 42 | # Currently only supports Windows hosts. If the determined conversion 43 | # type is listed in (the comma separated) LAZY, no conversion will 44 | # take place. 45 | func_file_conv () 46 | { 47 | file=$1 48 | case $file in 49 | / | /[!/]*) # absolute file, and not a UNC file 50 | if test -z "$file_conv"; then 51 | # lazily determine how to convert abs files 52 | case `uname -s` in 53 | MINGW*) 54 | file_conv=mingw 55 | ;; 56 | CYGWIN*) 57 | file_conv=cygwin 58 | ;; 59 | *) 60 | file_conv=wine 61 | ;; 62 | esac 63 | fi 64 | case $file_conv/,$2, in 65 | *,$file_conv,*) 66 | ;; 67 | mingw/*) 68 | file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` 69 | ;; 70 | cygwin/*) 71 | file=`cygpath -m "$file" || echo "$file"` 72 | ;; 73 | wine/*) 74 | file=`winepath -w "$file" || echo "$file"` 75 | ;; 76 | esac 77 | ;; 78 | esac 79 | } 80 | 81 | # func_cl_dashL linkdir 82 | # Make cl look for libraries in LINKDIR 83 | func_cl_dashL () 84 | { 85 | func_file_conv "$1" 86 | if test -z "$lib_path"; then 87 | lib_path=$file 88 | else 89 | lib_path="$lib_path;$file" 90 | fi 91 | linker_opts="$linker_opts -LIBPATH:$file" 92 | } 93 | 94 | # func_cl_dashl library 95 | # Do a library search-path lookup for cl 96 | func_cl_dashl () 97 | { 98 | lib=$1 99 | found=no 100 | save_IFS=$IFS 101 | IFS=';' 102 | for dir in $lib_path $LIB 103 | do 104 | IFS=$save_IFS 105 | if $shared && test -f "$dir/$lib.dll.lib"; then 106 | found=yes 107 | lib=$dir/$lib.dll.lib 108 | break 109 | fi 110 | if test -f "$dir/$lib.lib"; then 111 | found=yes 112 | lib=$dir/$lib.lib 113 | break 114 | fi 115 | if test -f "$dir/lib$lib.a"; then 116 | found=yes 117 | lib=$dir/lib$lib.a 118 | break 119 | fi 120 | done 121 | IFS=$save_IFS 122 | 123 | if test "$found" != yes; then 124 | lib=$lib.lib 125 | fi 126 | } 127 | 128 | # func_cl_wrapper cl arg... 129 | # Adjust compile command to suit cl 130 | func_cl_wrapper () 131 | { 132 | # Assume a capable shell 133 | lib_path= 134 | shared=: 135 | linker_opts= 136 | for arg 137 | do 138 | if test -n "$eat"; then 139 | eat= 140 | else 141 | case $1 in 142 | -o) 143 | # configure might choose to run compile as 'compile cc -o foo foo.c'. 144 | eat=1 145 | case $2 in 146 | *.o | *.[oO][bB][jJ]) 147 | func_file_conv "$2" 148 | set x "$@" -Fo"$file" 149 | shift 150 | ;; 151 | *) 152 | func_file_conv "$2" 153 | set x "$@" -Fe"$file" 154 | shift 155 | ;; 156 | esac 157 | ;; 158 | -I) 159 | eat=1 160 | func_file_conv "$2" mingw 161 | set x "$@" -I"$file" 162 | shift 163 | ;; 164 | -I*) 165 | func_file_conv "${1#-I}" mingw 166 | set x "$@" -I"$file" 167 | shift 168 | ;; 169 | -l) 170 | eat=1 171 | func_cl_dashl "$2" 172 | set x "$@" "$lib" 173 | shift 174 | ;; 175 | -l*) 176 | func_cl_dashl "${1#-l}" 177 | set x "$@" "$lib" 178 | shift 179 | ;; 180 | -L) 181 | eat=1 182 | func_cl_dashL "$2" 183 | ;; 184 | -L*) 185 | func_cl_dashL "${1#-L}" 186 | ;; 187 | -static) 188 | shared=false 189 | ;; 190 | -Wl,*) 191 | arg=${1#-Wl,} 192 | save_ifs="$IFS"; IFS=',' 193 | for flag in $arg; do 194 | IFS="$save_ifs" 195 | linker_opts="$linker_opts $flag" 196 | done 197 | IFS="$save_ifs" 198 | ;; 199 | -Xlinker) 200 | eat=1 201 | linker_opts="$linker_opts $2" 202 | ;; 203 | -*) 204 | set x "$@" "$1" 205 | shift 206 | ;; 207 | *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) 208 | func_file_conv "$1" 209 | set x "$@" -Tp"$file" 210 | shift 211 | ;; 212 | *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) 213 | func_file_conv "$1" mingw 214 | set x "$@" "$file" 215 | shift 216 | ;; 217 | *) 218 | set x "$@" "$1" 219 | shift 220 | ;; 221 | esac 222 | fi 223 | shift 224 | done 225 | if test -n "$linker_opts"; then 226 | linker_opts="-link$linker_opts" 227 | fi 228 | exec "$@" $linker_opts 229 | exit 1 230 | } 231 | 232 | eat= 233 | 234 | case $1 in 235 | '') 236 | echo "$0: No command. Try '$0 --help' for more information." 1>&2 237 | exit 1; 238 | ;; 239 | -h | --h*) 240 | cat <<\EOF 241 | Usage: compile [--help] [--version] PROGRAM [ARGS] 242 | 243 | Wrapper for compilers which do not understand '-c -o'. 244 | Remove '-o dest.o' from ARGS, run PROGRAM with the remaining 245 | arguments, and rename the output as expected. 246 | 247 | If you are trying to build a whole package this is not the 248 | right script to run: please start by reading the file 'INSTALL'. 249 | 250 | Report bugs to . 251 | EOF 252 | exit $? 253 | ;; 254 | -v | --v*) 255 | echo "compile $scriptversion" 256 | exit $? 257 | ;; 258 | cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) 259 | func_cl_wrapper "$@" # Doesn't return... 260 | ;; 261 | esac 262 | 263 | ofile= 264 | cfile= 265 | 266 | for arg 267 | do 268 | if test -n "$eat"; then 269 | eat= 270 | else 271 | case $1 in 272 | -o) 273 | # configure might choose to run compile as 'compile cc -o foo foo.c'. 274 | # So we strip '-o arg' only if arg is an object. 275 | eat=1 276 | case $2 in 277 | *.o | *.obj) 278 | ofile=$2 279 | ;; 280 | *) 281 | set x "$@" -o "$2" 282 | shift 283 | ;; 284 | esac 285 | ;; 286 | *.c) 287 | cfile=$1 288 | set x "$@" "$1" 289 | shift 290 | ;; 291 | *) 292 | set x "$@" "$1" 293 | shift 294 | ;; 295 | esac 296 | fi 297 | shift 298 | done 299 | 300 | if test -z "$ofile" || test -z "$cfile"; then 301 | # If no '-o' option was seen then we might have been invoked from a 302 | # pattern rule where we don't need one. That is ok -- this is a 303 | # normal compilation that the losing compiler can handle. If no 304 | # '.c' file was seen then we are probably linking. That is also 305 | # ok. 306 | exec "$@" 307 | fi 308 | 309 | # Name of file we expect compiler to create. 310 | cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` 311 | 312 | # Create the lock directory. 313 | # Note: use '[/\\:.-]' here to ensure that we don't use the same name 314 | # that we are using for the .o file. Also, base the name on the expected 315 | # object file name, since that is what matters with a parallel build. 316 | lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d 317 | while true; do 318 | if mkdir "$lockdir" >/dev/null 2>&1; then 319 | break 320 | fi 321 | sleep 1 322 | done 323 | # FIXME: race condition here if user kills between mkdir and trap. 324 | trap "rmdir '$lockdir'; exit 1" 1 2 15 325 | 326 | # Run the compile. 327 | "$@" 328 | ret=$? 329 | 330 | if test -f "$cofile"; then 331 | test "$cofile" = "$ofile" || mv "$cofile" "$ofile" 332 | elif test -f "${cofile}bj"; then 333 | test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" 334 | fi 335 | 336 | rmdir "$lockdir" 337 | exit $ret 338 | 339 | # Local Variables: 340 | # mode: shell-script 341 | # sh-indentation: 2 342 | # eval: (add-hook 'write-file-hooks 'time-stamp) 343 | # time-stamp-start: "scriptversion=" 344 | # time-stamp-format: "%:y-%02m-%02d.%02H" 345 | # time-stamp-time-zone: "UTC" 346 | # time-stamp-end: "; # UTC" 347 | # End: 348 | -------------------------------------------------------------------------------- /conf/60-cmt.conf: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | # Example xorg.conf.d snippet that assigns the cmt driver for all touchpads. 6 | # This file should ONLY be used if the touchpad kernel driver supports the 7 | # linux multitouch protocol. 8 | # See http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt 9 | # for more information on the linux multitouch protocol. 10 | # See xorg.conf.d(5) for more information on InputClass. 11 | # Additional options may be added in the form of 12 | # Option "OptionName" "value" 13 | # 14 | Section "InputClass" 15 | Identifier "cmt catchall" 16 | Driver "cmt" 17 | MatchIsTouchpad "on" 18 | # This Matching condition does not yet exist. 19 | # MatchIsMultitouch "on" 20 | MatchDevicePath "/dev/input/event*" 21 | EndSection 22 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.ac by autoheader. */ 2 | 3 | /* Define to 1 if you have the header file. */ 4 | #undef HAVE_DLFCN_H 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_INTTYPES_H 8 | 9 | /* Define to 1 if you have the header file. */ 10 | #undef HAVE_MEMORY_H 11 | 12 | /* Define to 1 if you have the header file. */ 13 | #undef HAVE_STDINT_H 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_STDLIB_H 17 | 18 | /* Define to 1 if you have the header file. */ 19 | #undef HAVE_STRINGS_H 20 | 21 | /* Define to 1 if you have the header file. */ 22 | #undef HAVE_STRING_H 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_SYS_STAT_H 26 | 27 | /* Define to 1 if you have the header file. */ 28 | #undef HAVE_SYS_TYPES_H 29 | 30 | /* Define to 1 if you have the header file. */ 31 | #undef HAVE_UNISTD_H 32 | 33 | /* Define to the sub-directory in which libtool stores uninstalled libraries. 34 | */ 35 | #undef LT_OBJDIR 36 | 37 | /* Name of package */ 38 | #undef PACKAGE 39 | 40 | /* Define to the address where bug reports for this package should be sent. */ 41 | #undef PACKAGE_BUGREPORT 42 | 43 | /* Define to the full name of this package. */ 44 | #undef PACKAGE_NAME 45 | 46 | /* Define to the full name and version of this package. */ 47 | #undef PACKAGE_STRING 48 | 49 | /* Define to the one symbol short name of this package. */ 50 | #undef PACKAGE_TARNAME 51 | 52 | /* Define to the home page for this package. */ 53 | #undef PACKAGE_URL 54 | 55 | /* Define to the version of this package. */ 56 | #undef PACKAGE_VERSION 57 | 58 | /* Major version of this package */ 59 | #undef PACKAGE_VERSION_MAJOR 60 | 61 | /* Minor version of this package */ 62 | #undef PACKAGE_VERSION_MINOR 63 | 64 | /* Patch version of this package */ 65 | #undef PACKAGE_VERSION_PATCHLEVEL 66 | 67 | /* Define to 1 if you have the ANSI C header files. */ 68 | #undef STDC_HEADERS 69 | 70 | /* Version number of package */ 71 | #undef VERSION 72 | -------------------------------------------------------------------------------- /configure.ac: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | # 5 | # Copyright 2005 Adam Jackson. 6 | # 7 | # Permission is hereby granted, free of charge, to any person obtaining a 8 | # copy of this software and associated documentation files (the "Software"), 9 | # to deal in the Software without restriction, including without limitation 10 | # on the rights to use, copy, modify, merge, publish, distribute, sub 11 | # license, and/or sell copies of the Software, and to permit persons to whom 12 | # the Software is furnished to do so, subject to the following conditions: 13 | # 14 | # The above copyright notice and this permission notice (including the next 15 | # paragraph) shall be included in all copies or substantial portions of the 16 | # Software. 17 | # 18 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21 | # ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 22 | # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | # 25 | # Process this file with autoconf to produce a configure script 26 | 27 | # Initialize Autoconf 28 | AC_PREREQ([2.60]) 29 | AC_INIT([xf86-input-cmt], 30 | [0.0.1], 31 | [http://crosbug.com/], 32 | [xf86-input-cmt]) 33 | AC_CONFIG_SRCDIR([Makefile.am]) 34 | AC_CONFIG_HEADERS([config.h]) 35 | AC_CONFIG_AUX_DIR(.) 36 | 37 | # Initialize Automake 38 | AM_INIT_AUTOMAKE([foreign dist-bzip2]) 39 | AM_MAINTAINER_MODE 40 | 41 | # Initialize libtool 42 | AC_DISABLE_STATIC 43 | AC_PROG_LIBTOOL 44 | 45 | # Initialize X.Org macros >=1.8 for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS 46 | m4_ifndef([XORG_MACROS_VERSION], 47 | [m4_fatal([must install xorg-macros 1.8 or later before running \ 48 | autoconf/autogen])]) 49 | XORG_MACROS_VERSION(1.8) 50 | XORG_DEFAULT_OPTIONS 51 | 52 | # Obtain compiler/linker options from server and required extensions 53 | PKG_CHECK_MODULES(XORG, xorg-server xproto inputproto) 54 | 55 | # Define a configure option for an alternate input module directory 56 | AC_ARG_WITH(xorg-module-dir, 57 | AC_HELP_STRING([--with-xorg-module-dir=DIR], 58 | [Default xorg module directory 59 | [[default=$libdir/xorg/modules]]]), 60 | [moduledir="$withval"], 61 | [moduledir="$libdir/xorg/modules"]) 62 | inputdir=${moduledir}/input 63 | AC_SUBST(inputdir) 64 | 65 | # X Server SDK location is required to install driver header files 66 | # This location is also relayed in the xorg-*.pc file 67 | sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server` 68 | 69 | # Workaround overriding sdkdir to be able to create a tarball when user has no 70 | # write permission in sdkdir. See DISTCHECK_CONFIGURE_FLAGS in Makefile.am 71 | AC_ARG_WITH([sdkdir], [], [sdkdir="$withval"]) 72 | AC_SUBST([sdkdir]) 73 | 74 | DRIVER_NAME=cmt 75 | AC_SUBST([DRIVER_NAME]) 76 | 77 | AC_CONFIG_FILES([Makefile 78 | src/Makefile 79 | include/Makefile 80 | man/Makefile 81 | xorg-cmt.pc]) 82 | AC_OUTPUT 83 | -------------------------------------------------------------------------------- /debian/README.debian: -------------------------------------------------------------------------------- 1 | xf86-input-cmt for Debian 2 | ------------------------- 3 | 4 | You need to copy the config file for your device. Find the config file for your device in: /usr/share/xf86-input-cmt and copy it to /usr/share/X11/xorg.conf.d 5 | -------------------------------------------------------------------------------- /debian/README.source: -------------------------------------------------------------------------------- 1 | xf86-input-cmt for Debian 2 | ------------------------- 3 | 4 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | xf86-input-cmt (3.0) bismuth; urgency=medium 2 | 3 | * Prepare for GalliumOS 3.0 4 | 5 | -- reynhout Mon, 07 May 2018 03:02:14 +0000 6 | 7 | xf86-input-cmt (2.0.30) xenon; urgency=medium 8 | 9 | * touchpad conf for new models: caroline, cave, elm, kevin, pbody 10 | * updates for heli, link 11 | * add config/IDs for new peripherals 12 | 13 | -- reynhout Mon, 27 Feb 2017 23:11:07 +0000 14 | 15 | xf86-input-cmt (2.0.29) xenon; urgency=medium 16 | 17 | * aesthetic-only: fix syntax of systemd status messages 18 | 19 | -- reynhout Thu, 22 Sep 2016 17:36:24 +0000 20 | 21 | xf86-input-cmt (2.0.28) xenon; urgency=medium 22 | 23 | * Changed Tap Minimium Pressure for banjo 24 | 25 | -- Hugh Greenberg Mon, 9 May 2016 22:17:10 +0000 26 | 27 | xf86-input-cmt (2.0.27) xenon; urgency=medium 28 | 29 | * debian/control: add Replaces: xf86-input-cmt to permit in-place upgrade 30 | 31 | -- reynhout Sun, 01 May 2016 22:17:10 +0000 32 | 33 | xf86-input-cmt (2.0.26) xenon; urgency=medium 34 | 35 | * fix postinit script to exit if dmidecode or a product name isn't found 36 | * other postinit fixes 37 | * added an init script to copy the config file if one doesn't exist 38 | 39 | -- Hugh Greenberg Thu, 31 Mar 2016 15:31:56 +0000 40 | 41 | xf86-input-cmt (2.0.25) xenon; urgency=medium 42 | 43 | * fix postinst failure on build server 44 | 45 | -- reynhout Thu, 31 Mar 2016 15:31:56 +0000 46 | 47 | xf86-input-cmt (2.0.24) vivid-galliumos; urgency=medium 48 | 49 | * Fix libgestures dependency version 50 | * Rename binary package to xserver-xorg-input-cmt 51 | * Replace xserver-xorg-input-synaptics-lts-vivid 52 | * Build with xserver-xorg-dev-lts-vivid if available 53 | * Install/Remove model specific config during install/removal 54 | * Add dmidecode dependency for detecting model 55 | * Improve parrot config by borrowing tunings from peppy 56 | * Fix missing configs by installing all configs from source tree 57 | 58 | -- Eugene San (eugenesan) Fri, 25 Dec 2015 08:04:45 -0500 59 | 60 | xf86-input-cmt (2.0.23) vivid-galliumos; urgency=medium 61 | 62 | * Reduced the tap minimum pressure for Aruon Yuna based on: https://www.reddit.com/r/GalliumOS/comments/42yxff/fix_touchpad_and_laggy_scrolling_on_c910/czekevc 63 | 64 | -- Hugh Greenberg Fri, 29 Jan 2016 21:05:33 +0000 65 | 66 | xf86-input-cmt (2.0.22) vivid-galliumos; urgency=medium 67 | 68 | * Increased the tap drag delay a little more 69 | 70 | -- Hugh Greenberg Tue, 27 Jan 2016 21:05:33 +0000 71 | 72 | xf86-input-cmt (2.0.21) vivid-galliumos; urgency=medium 73 | 74 | * Increased the tap drag delay now that we have a better tap to click splitting implementation 75 | 76 | -- Hugh Greenberg Tue, 19 Jan 2016 21:05:33 +0000 77 | 78 | xf86-input-cmt (2.0.20) vivid-galliumos; urgency=medium 79 | 80 | * Undid last Accel Min dt change. 81 | 82 | -- Hugh Greenberg Sun, 17 Jan 2016 21:05:33 +0000 83 | 84 | xf86-input-cmt (2.0.19) vivid-galliumos; urgency=medium 85 | 86 | * Updated auron_paine config 87 | * Changed Accel Min dt again 88 | 89 | -- Hugh Greenberg Sun, 17 Jan 2016 21:05:33 +0000 90 | 91 | xf86-input-cmt (2.0.18) vivid-galliumos; urgency=medium 92 | 93 | * Set package version to match provenance 94 | * Upstream https://github.com/hugegreenbug/xf86-input-cmt 95 | 96 | -- reynhout Sun, 10 Jan 2016 21:05:33 +0000 97 | 98 | xf86-input-cmt (2.0.6-14galliumos1) vivid-galliumos; urgency=medium 99 | 100 | * Modified some configs to remove increase the timeout for taps and reduce the min pressure for the c740 101 | 102 | -- Hugh Greenberg Mon, 14 Dec 2015 22:33:16 -0600 103 | 104 | xf86-input-cmt (2.0.6-13ubuntu2) vivid-galliumos; urgency=medium 105 | 106 | * Fix libgestures dependency version 107 | * Rename binary package to xserver-xorg-input-cmt 108 | * Replace xserver-xorg-input-synaptics-lts-vivid 109 | * Build with xserver-xorg-dev-lts-vivid if available 110 | * Install/Remove model specific config during install/removal 111 | * Add dmidecode dependency for detecting model 112 | * Improve parrot config by borrowing tunings from peppy 113 | * Fix missing configs by installing all configs from source tree 114 | 115 | -- Eugene San (eugenesan) Fri, 25 Dec 2015 08:04:45 -0500 116 | 117 | xf86-input-cmt (2.0.6-13ubuntu1) vivid-galliumos; urgency=medium 118 | 119 | * Changed scroll valuator 120 | * Removed 20-mouse.conf and 20-touchpad.conf from the deb 121 | * Reverted button changes 122 | 123 | -- Hugh Greenberg Mon, 7 Dec 2015 22:33:16 -0600 124 | 125 | xf86-input-cmt (2.0.6-12ubuntu1) vivid-galliumos; urgency=medium 126 | 127 | * Changed the tap drag delay to account for the new tap to click fix filter 128 | 129 | -- Hugh Greenberg Tue, 1 Dec 2015 22:33:16 -0600 130 | 131 | xf86-input-cmt (2.0.6-11ubuntu1) vivid-galliumos; urgency=medium 132 | 133 | * A fix for the touchscreen only working in Chrome 134 | 135 | -- Hugh Greenberg Sun, 29 Nov 2015 22:33:16 -0600 136 | 137 | xf86-input-cmt (2.0.6-10ubuntu1) vivid-galliumos; urgency=medium 138 | 139 | * A fix for external mouse buttons 140 | * Additional and updated config files 141 | 142 | -- Hugh Greenberg Sat, 14 Nov 2015 22:33:16 -0600 143 | 144 | xf86-input-cmt (2.0.6-9ubuntu1) vivid-galliumos; urgency=medium 145 | 146 | * Another change for 40-touchpad-cmt.conf 147 | 148 | -- Hugh Greenberg Wed, 28 Oct 2015 22:33:16 -0600 149 | 150 | xf86-input-cmt (2.0.6-8ubuntu1) vivid-galliumos; urgency=medium 151 | 152 | * Another change for 40-touchpad-cmt.conf 153 | 154 | -- Hugh Greenberg Wed, 28 Oct 2015 22:33:16 -0600 155 | 156 | xf86-input-cmt (2.0.6-6ubuntu1) vivid-galliumos; urgency=medium 157 | 158 | * Another change for 40-touchpad-cmt.conf 159 | 160 | -- Hugh Greenberg Sat, 26 Sep 2015 22:33:16 -0600 161 | 162 | xf86-input-cmt (2.0.6-5ubuntu1) vivid-galliumos; urgency=medium 163 | 164 | * Another change for 40-touchpad-cmt.conf 165 | 166 | -- Hugh Greenberg Sat, 26 Sep 2015 22:33:16 -0600 167 | 168 | xf86-input-cmt (2.0.6-4ubuntu1) vivid-galliumos; urgency=medium 169 | 170 | * Another fix to 40-touchpad-cmt.conf 171 | 172 | -- Hugh Greenberg Fri, 11 Sep 2015 22:33:16 -0600 173 | 174 | xf86-input-cmt (2.0.6-3ubuntu1) vivid-galliumos; urgency=medium 175 | 176 | * Fixed 40-touchpad-cmt.conf 177 | 178 | -- Hugh Greenberg Sun, 06 Sep 2015 22:33:16 -0600 179 | 180 | xf86-input-cmt (2.0.6-2ubuntu1) vivid-galliumos; urgency=medium 181 | 182 | * Updated mouse.conf 183 | 184 | -- Hugh Greenberg Sun, 06 Sep 2015 22:33:16 -0600 185 | 186 | xf86-input-cmt (2.0.6-1ubuntu1) vivid-galliumos; urgency=medium 187 | 188 | * Updated config files and installed mouse.conf and touchscreen.conf to /usr/share/X11/xorg.conf.d 189 | 190 | -- Hugh Greenberg Fri, 04 Sep 2015 22:33:16 -0600 191 | 192 | xf86-input-cmt (2.0.5-1ubuntu1) vivid; urgency=medium 193 | 194 | * Updated config files with some fixes 195 | 196 | -- Hugh Greenberg Sun, 24 May 2015 22:33:16 -0600 197 | 198 | xf86-input-cmt (2.0.4-1ubuntu3) vivid; urgency=medium 199 | 200 | * logging fix 201 | * including modified and new xorg files 202 | 203 | -- Hugh Greenberg Mon, 04 May 2015 14:16:58 -0400 204 | 205 | xf86-input-cmt (2.0.3-1ubuntu1) trusty; urgency=medium 206 | 207 | * Minor patch for stopping Xorg from complaining about unsafe logging 208 | 209 | -- Hugh Greenberg Sun, 15 Mar 2015 23:17:36 -0600 210 | 211 | xf86-input-cmt (2.0-1ubuntu11) vivid; urgency=medium 212 | 213 | * Config files were not previously included 214 | 215 | -- Hugh Greenberg Fri, 13 Mar 2015 19:27:02 -0600 216 | 217 | xf86-input-cmt (2.0-1ubuntu7) vivid; urgency=medium 218 | 219 | * Dependency version changes 220 | * Last package wasn't installing /usr/share/X11/xorg.conf.d/40-touchpad-cmt.conf 221 | 222 | -- Hugh Greenberg Thu, 12 Mar 2015 09:30:03 -0600 223 | 224 | xf86-input-cmt (2.0-1ubuntu1) vivid; urgency=medium 225 | 226 | * Synced latest ChromeOS code and configs 227 | * Removed australian scrolling in driver since it is now in libgestures 228 | 229 | -- Hugh Greenberg Wed, 11 Mar 2015 11:59:41 -0600 230 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 8 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: xf86-input-cmt 2 | Section: x11 3 | Priority: extra 4 | Maintainer: Hugh Greenberg 5 | Build-Depends: debhelper (>= 8.0.0), 6 | autotools-dev, 7 | x11proto-input-dev, 8 | xserver-xorg-dev-lts-vivid | xserver-xorg-dev, 9 | libgestures (>= 2.1), 10 | libgestures-dev (>= 2.1), 11 | libevdevc-dev (>=2.0), 12 | xutils-dev, 13 | pkg-config, 14 | dh-systemd 15 | Standards-Version: 3.9.6 16 | Homepage: https://github.com/hugegreenbug/xf86-input-cmt 17 | #Vcs-Git: git://git.debian.org/collab-maint/xf86-input-cmt.git 18 | #Vcs-Browser: http://git.debian.org/?p=collab-maint/xf86-input-cmt.git;a=summary 19 | 20 | Package: xserver-xorg-input-cmt 21 | Architecture: any 22 | Depends: ${shlibs:Depends}, ${misc:Depends}, 23 | libgestures (>= 2.0), libevdevc (>= 2.0), 24 | dmidecode 25 | Replaces: xserver-xorg-input-synaptics, xserver-xorg-input-synaptics-lts-vivid, 26 | xserver-xorg-input-synaptics-dev, xserver-xorg-input-synaptics-dev-lts-vivid, xf86-input-cmt 27 | Provides: xserver-xorg-input-synaptics, xserver-xorg-input-synaptics-lts-vivid, 28 | xserver-xorg-input-synaptics-dev, xserver-xorg-input-synaptics-dev-lts-vivid, 29 | xorg-renamed-package, xorg-renamed-package-lts-vivid 30 | Description: ChromiumOS touchpad driver 31 | X11 touchpad driver from ChromiumOS 32 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: libgestures 3 | Source: https://github.com/hugegreenbug/xf86-input-cmt 4 | 5 | Files: * 6 | Copyright: 2011 The Chromium OS Authors. All rights reserved. 7 | License: Chromium OS 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions are 10 | met: 11 | . 12 | * Redistributions of source code must retain the above copyright 13 | notice, this list of conditions and the following disclaimer. 14 | * Redistributions in binary form must reproduce the above 15 | copyright notice, this list of conditions and the following disclaimer 16 | in the documentation and/or other materials provided with the 17 | distribution. 18 | * Neither the name of Google Inc. nor the names of its 19 | contributors may be used to endorse or promote products derived from 20 | this software without specific prior written permission. 21 | . 22 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 23 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 24 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 25 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 26 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 27 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 28 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 29 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 30 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 31 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 32 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 33 | 34 | # If you want to use GPL v2 or later for the /debian/* files use 35 | # the following clauses, or change it to suit. Delete these two lines 36 | Files: debian/* 37 | Copyright: 2014 Hugh Greenberg 38 | License: GPL-2+ 39 | This package is free software; you can redistribute it and/or modify 40 | it under the terms of the GNU General Public License as published by 41 | the Free Software Foundation; either version 2 of the License, or 42 | (at your option) any later version. 43 | . 44 | This package is distributed in the hope that it will be useful, 45 | but WITHOUT ANY WARRANTY; without even the implied warranty of 46 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 47 | GNU General Public License for more details. 48 | . 49 | You should have received a copy of the GNU General Public License 50 | along with this program. If not, see 51 | . 52 | On Debian systems, the complete text of the GNU General 53 | Public License version 2 can be found in "/usr/share/common-licenses/GPL-2". 54 | 55 | # Please also look if there are files or directories which have a 56 | # different copyright/license attached and list them here. 57 | # Please avoid to pick license terms that are more restrictive than the 58 | # packaged work, as it may make Debian's contributions unacceptable upstream. 59 | -------------------------------------------------------------------------------- /debian/docs: -------------------------------------------------------------------------------- 1 | README 2 | README.md 3 | -------------------------------------------------------------------------------- /debian/init-cmt-configs: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DD="/usr/sbin/dmidecode" 4 | 5 | if [ ! -x "$DD" ] 6 | then 7 | exit 0 8 | fi 9 | 10 | CB_MODEL="$($DD -s system-product-name | awk '{print tolower($1)}')" 11 | 12 | if [ -z "$CB_MODEL" ] 13 | then 14 | exit 0 15 | fi 16 | 17 | # Test for a config file in /usr/share/X11/xorg.conf.d 18 | FILE="`find /usr/share/X11/xorg.conf.d/ -name *-touchpad-cmt-$CB_MODEL.conf | head -1`" 19 | if [ "$FILE" -a -r "$FILE" ]; then 20 | exit 0 21 | fi 22 | 23 | # Install model specific config 24 | FILE="`find /usr/share/xf86-input-cmt -name *-touchpad-cmt-$CB_MODEL.conf | head -1`" 25 | if [ "$FILE" -a -r "$FILE" ]; then 26 | cp -f "$FILE" /usr/share/X11/xorg.conf.d/ 27 | fi 28 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | # Sample debian/rules that uses debhelper. 4 | # This file was originally written by Joey Hess and Craig Small. 5 | # As a special exception, when this file is copied by dh-make into a 6 | # dh-make output file, you may use that output file without restriction. 7 | # This special exception was added by Craig Small in version 0.37 of dh-make. 8 | 9 | # Uncomment this to turn on verbose mode. 10 | #export DH_VERBOSE=1 11 | 12 | %: 13 | dh $@ --parallel --with systemd 14 | 15 | override_dh_auto_test: 16 | # Disabled 17 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /debian/xserver-xorg-input-cmt.dirs: -------------------------------------------------------------------------------- 1 | usr/bin 2 | usr/lib 3 | usr/share/xf86-input-cmt 4 | usr/share/X11/xorg.conf.d 5 | -------------------------------------------------------------------------------- /debian/xserver-xorg-input-cmt.install: -------------------------------------------------------------------------------- 1 | xorg-conf/40-touchpad-cmt.conf usr/share/X11/xorg.conf.d 2 | xorg-conf/* usr/share/xf86-input-cmt/ 3 | xorg-conf/files/daisy_linearity.dat usr/share/xf86-input-cmt/files 4 | xorg-conf/files/lumpy_linearity.dat usr/share/xf86-input-cmt/files 5 | debian/init-cmt-configs usr/bin 6 | -------------------------------------------------------------------------------- /debian/xserver-xorg-input-cmt.postinst: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | ## FIXME: Build server is not a Chromebook and dmidecode will not return a 5 | ## recognized hardware id (in current KVM, returns "Standard PC"). 6 | ## 7 | ## This config needs to take place on the installation device, and 8 | ## also on the live image boot. 9 | ## 10 | ## It might be possible to install a generic version of the config 11 | ## by default, and only update it for recognized devices? 12 | 13 | DD="/usr/sbin/dmidecode" 14 | 15 | if [ ! -x "$DD" ] 16 | then 17 | exit 0 18 | fi 19 | 20 | CB_MODEL="$($DD -s system-product-name | awk '{print tolower($1)}')" 21 | 22 | if [ -z "$CB_MODEL" ] 23 | then 24 | exit 0 25 | fi 26 | 27 | # Install model specific config 28 | case "$1" in 29 | configure) 30 | FILE="`find /usr/share/xf86-input-cmt -name *-touchpad-cmt-$CB_MODEL.conf | head -1`" 31 | if [ "$FILE" -a -r "$FILE" ]; then 32 | rm -f /usr/share/X11/xorg.conf.d/*-touchpad-cmt-* 33 | cp -f "$FILE" /usr/share/X11/xorg.conf.d/ 34 | fi 35 | ;; 36 | esac 37 | 38 | #DEBHELPER# 39 | -------------------------------------------------------------------------------- /debian/xserver-xorg-input-cmt.postrm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | 4 | # Remove model specific config 5 | case "$1" in 6 | remove|purge) 7 | rm -f /usr/share/X11/xorg.conf.d/50-touchpad-cmt-* 8 | rm -f /usr/share/X11/xorg.conf.d/60-touchpad-cmt-* 9 | ;; 10 | esac 11 | 12 | #DEBHELPER# 13 | -------------------------------------------------------------------------------- /debian/xserver-xorg-input-cmt.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=GalliumOS model-specific X11 customization for the ChromeOS touchpad driver 3 | Before=lxdm.service 4 | 5 | [Service] 6 | ExecStart=/usr/bin/init-cmt-configs 7 | Type=oneshot 8 | RemainAfterExit=true 9 | 10 | [Install] 11 | WantedBy=multi-user.target 12 | -------------------------------------------------------------------------------- /include/Makefile.am: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | sdk_HEADERS = cmt-properties.h 6 | -------------------------------------------------------------------------------- /include/cmt-properties.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | #ifndef _CMT_PROPERTIES_H_ 8 | #define _CMT_PROPERTIES_H_ 9 | 10 | /** 11 | * Descriptions of properties exported by the driver. 12 | * 13 | * XI_PROP_* - X Input Properties common to all X input drivers 14 | * CMT_PROP_* - Device Property name, used in .conf files and with xinput 15 | */ 16 | 17 | #ifndef XI_PROP_PRODUCT_ID 18 | #define XI_PROP_PRODUCT_ID "Device Product ID" 19 | #endif 20 | 21 | #ifndef XI_PROP_VENDOR_ID 22 | #define XI_PROP_VENDOR_ID "Device Vendor ID" 23 | #endif 24 | 25 | #ifndef XI_PROP_DEVICE_NODE 26 | #define XI_PROP_DEVICE_NODE "Device Node" 27 | #endif 28 | 29 | /* 32 bit */ 30 | #define CMT_PROP_AREA_LEFT "Active Area Left" 31 | #define CMT_PROP_AREA_RIGHT "Active Area Right" 32 | #define CMT_PROP_AREA_TOP "Active Area Top" 33 | #define CMT_PROP_AREA_BOTTOM "Active Area Bottom" 34 | 35 | /* 32 bit */ 36 | #define CMT_PROP_RES_Y "Vertical Resolution" 37 | #define CMT_PROP_RES_X "Horizontal Resolution" 38 | 39 | /* 32 bit */ 40 | #define CMT_PROP_ORIENTATION_MINIMUM "Orientation Minimum" 41 | #define CMT_PROP_ORIENTATION_MAXIMUM "Orientation Maximum" 42 | 43 | /* Bool */ 44 | #define CMT_PROP_SCROLL_BTN "Scroll Buttons" 45 | #define CMT_PROP_SCROLL_AXES "Scroll Axes" 46 | #define CMT_PROP_DUMP_DEBUG_LOG "Dump Debug Log" 47 | #define CMT_PROP_RAW_TOUCH_PASSTHROUGH "Raw Touch Passthrough" 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /man/Makefile.am: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | # 5 | # Copyright 2005 Sun Microsystems, Inc. All rights reserved. 6 | # 7 | # Permission is hereby granted, free of charge, to any person obtaining a 8 | # copy of this software and associated documentation files (the "Software"), 9 | # to deal in the Software without restriction, including without limitation 10 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 | # and/or sell copies of the Software, and to permit persons to whom the 12 | # Software is furnished to do so, subject to the following conditions: 13 | # 14 | # The above copyright notice and this permission notice (including the next 15 | # paragraph) shall be included in all copies or substantial portions of the 16 | # Software. 17 | # 18 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 24 | # DEALINGS IN THE SOFTWARE. 25 | # 26 | 27 | # TODO(djkurtz): Resolve build failures 28 | 29 | #drivermandir = $(DRIVER_MAN_DIR) 30 | 31 | #driverman_PRE = $(DRIVER_NAME).man 32 | 33 | #driverman_DATA = $(driverman_PRE:man=$(DRIVER_MAN_SUFFIX)) 34 | 35 | #EXTRA_DIST = $(DRIVER_NAME).man 36 | 37 | #CLEANFILES = $(driverman_DATA) 38 | 39 | #SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man 40 | 41 | # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure 42 | #.man.$(DRIVER_MAN_SUFFIX): 43 | # $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ 44 | -------------------------------------------------------------------------------- /man/Makefile.in: -------------------------------------------------------------------------------- 1 | # Makefile.in generated by automake 1.14.1 from Makefile.am. 2 | # @configure_input@ 3 | 4 | # Copyright (C) 1994-2013 Free Software Foundation, Inc. 5 | 6 | # This Makefile.in is free software; the Free Software Foundation 7 | # gives unlimited permission to copy and/or distribute it, 8 | # with or without modifications, as long as this notice is preserved. 9 | 10 | # This program is distributed in the hope that it will be useful, 11 | # but WITHOUT ANY WARRANTY, to the extent permitted by law; without 12 | # even the implied warranty of MERCHANTABILITY or FITNESS FOR A 13 | # PARTICULAR PURPOSE. 14 | 15 | @SET_MAKE@ 16 | 17 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 18 | # Use of this source code is governed by a BSD-style license that can be 19 | # found in the LICENSE file. 20 | # 21 | # Copyright 2005 Sun Microsystems, Inc. All rights reserved. 22 | # 23 | # Permission is hereby granted, free of charge, to any person obtaining a 24 | # copy of this software and associated documentation files (the "Software"), 25 | # to deal in the Software without restriction, including without limitation 26 | # the rights to use, copy, modify, merge, publish, distribute, sublicense, 27 | # and/or sell copies of the Software, and to permit persons to whom the 28 | # Software is furnished to do so, subject to the following conditions: 29 | # 30 | # The above copyright notice and this permission notice (including the next 31 | # paragraph) shall be included in all copies or substantial portions of the 32 | # Software. 33 | # 34 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 35 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 36 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 37 | # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 38 | # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 | # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 40 | # DEALINGS IN THE SOFTWARE. 41 | # 42 | 43 | # TODO(djkurtz): Resolve build failures 44 | 45 | #drivermandir = $(DRIVER_MAN_DIR) 46 | 47 | #driverman_PRE = $(DRIVER_NAME).man 48 | 49 | #driverman_DATA = $(driverman_PRE:man=$(DRIVER_MAN_SUFFIX)) 50 | 51 | #EXTRA_DIST = $(DRIVER_NAME).man 52 | 53 | #CLEANFILES = $(driverman_DATA) 54 | 55 | #SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man 56 | VPATH = @srcdir@ 57 | am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' 58 | am__make_running_with_option = \ 59 | case $${target_option-} in \ 60 | ?) ;; \ 61 | *) echo "am__make_running_with_option: internal error: invalid" \ 62 | "target option '$${target_option-}' specified" >&2; \ 63 | exit 1;; \ 64 | esac; \ 65 | has_opt=no; \ 66 | sane_makeflags=$$MAKEFLAGS; \ 67 | if $(am__is_gnu_make); then \ 68 | sane_makeflags=$$MFLAGS; \ 69 | else \ 70 | case $$MAKEFLAGS in \ 71 | *\\[\ \ ]*) \ 72 | bs=\\; \ 73 | sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ 74 | | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ 75 | esac; \ 76 | fi; \ 77 | skip_next=no; \ 78 | strip_trailopt () \ 79 | { \ 80 | flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ 81 | }; \ 82 | for flg in $$sane_makeflags; do \ 83 | test $$skip_next = yes && { skip_next=no; continue; }; \ 84 | case $$flg in \ 85 | *=*|--*) continue;; \ 86 | -*I) strip_trailopt 'I'; skip_next=yes;; \ 87 | -*I?*) strip_trailopt 'I';; \ 88 | -*O) strip_trailopt 'O'; skip_next=yes;; \ 89 | -*O?*) strip_trailopt 'O';; \ 90 | -*l) strip_trailopt 'l'; skip_next=yes;; \ 91 | -*l?*) strip_trailopt 'l';; \ 92 | -[dEDm]) skip_next=yes;; \ 93 | -[JT]) skip_next=yes;; \ 94 | esac; \ 95 | case $$flg in \ 96 | *$$target_option*) has_opt=yes; break;; \ 97 | esac; \ 98 | done; \ 99 | test $$has_opt = yes 100 | am__make_dryrun = (target_option=n; $(am__make_running_with_option)) 101 | am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) 102 | pkgdatadir = $(datadir)/@PACKAGE@ 103 | pkgincludedir = $(includedir)/@PACKAGE@ 104 | pkglibdir = $(libdir)/@PACKAGE@ 105 | pkglibexecdir = $(libexecdir)/@PACKAGE@ 106 | am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd 107 | install_sh_DATA = $(install_sh) -c -m 644 108 | install_sh_PROGRAM = $(install_sh) -c 109 | install_sh_SCRIPT = $(install_sh) -c 110 | INSTALL_HEADER = $(INSTALL_DATA) 111 | transform = $(program_transform_name) 112 | NORMAL_INSTALL = : 113 | PRE_INSTALL = : 114 | POST_INSTALL = : 115 | NORMAL_UNINSTALL = : 116 | PRE_UNINSTALL = : 117 | POST_UNINSTALL = : 118 | build_triplet = @build@ 119 | host_triplet = @host@ 120 | subdir = man 121 | DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am 122 | ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 123 | am__aclocal_m4_deps = $(top_srcdir)/configure.ac 124 | am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ 125 | $(ACLOCAL_M4) 126 | mkinstalldirs = $(install_sh) -d 127 | CONFIG_HEADER = $(top_builddir)/config.h 128 | CONFIG_CLEAN_FILES = 129 | CONFIG_CLEAN_VPATH_FILES = 130 | AM_V_P = $(am__v_P_@AM_V@) 131 | am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) 132 | am__v_P_0 = false 133 | am__v_P_1 = : 134 | AM_V_GEN = $(am__v_GEN_@AM_V@) 135 | am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) 136 | am__v_GEN_0 = @echo " GEN " $@; 137 | am__v_GEN_1 = 138 | AM_V_at = $(am__v_at_@AM_V@) 139 | am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) 140 | am__v_at_0 = @ 141 | am__v_at_1 = 142 | SOURCES = 143 | DIST_SOURCES = 144 | am__can_run_installinfo = \ 145 | case $$AM_UPDATE_INFO_DIR in \ 146 | n|no|NO) false;; \ 147 | *) (install-info --version) >/dev/null 2>&1;; \ 148 | esac 149 | am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) 150 | DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) 151 | ACLOCAL = @ACLOCAL@ 152 | ADMIN_MAN_DIR = @ADMIN_MAN_DIR@ 153 | ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@ 154 | AMTAR = @AMTAR@ 155 | AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ 156 | APP_MAN_DIR = @APP_MAN_DIR@ 157 | APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ 158 | AR = @AR@ 159 | AUTOCONF = @AUTOCONF@ 160 | AUTOHEADER = @AUTOHEADER@ 161 | AUTOMAKE = @AUTOMAKE@ 162 | AWK = @AWK@ 163 | BASE_CFLAGS = @BASE_CFLAGS@ 164 | CC = @CC@ 165 | CCDEPMODE = @CCDEPMODE@ 166 | CFLAGS = @CFLAGS@ 167 | CHANGELOG_CMD = @CHANGELOG_CMD@ 168 | CPP = @CPP@ 169 | CPPFLAGS = @CPPFLAGS@ 170 | CWARNFLAGS = @CWARNFLAGS@ 171 | CYGPATH_W = @CYGPATH_W@ 172 | DEFS = @DEFS@ 173 | DEPDIR = @DEPDIR@ 174 | DLLTOOL = @DLLTOOL@ 175 | DRIVER_MAN_DIR = @DRIVER_MAN_DIR@ 176 | DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@ 177 | DRIVER_NAME = @DRIVER_NAME@ 178 | DSYMUTIL = @DSYMUTIL@ 179 | DUMPBIN = @DUMPBIN@ 180 | ECHO_C = @ECHO_C@ 181 | ECHO_N = @ECHO_N@ 182 | ECHO_T = @ECHO_T@ 183 | EGREP = @EGREP@ 184 | EXEEXT = @EXEEXT@ 185 | FGREP = @FGREP@ 186 | FILE_MAN_DIR = @FILE_MAN_DIR@ 187 | FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ 188 | GREP = @GREP@ 189 | INSTALL = @INSTALL@ 190 | INSTALL_CMD = @INSTALL_CMD@ 191 | INSTALL_DATA = @INSTALL_DATA@ 192 | INSTALL_PROGRAM = @INSTALL_PROGRAM@ 193 | INSTALL_SCRIPT = @INSTALL_SCRIPT@ 194 | INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ 195 | LD = @LD@ 196 | LDFLAGS = @LDFLAGS@ 197 | LIBOBJS = @LIBOBJS@ 198 | LIBS = @LIBS@ 199 | LIBTOOL = @LIBTOOL@ 200 | LIB_MAN_DIR = @LIB_MAN_DIR@ 201 | LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@ 202 | LIPO = @LIPO@ 203 | LN_S = @LN_S@ 204 | LTLIBOBJS = @LTLIBOBJS@ 205 | MAINT = @MAINT@ 206 | MAKEINFO = @MAKEINFO@ 207 | MANIFEST_TOOL = @MANIFEST_TOOL@ 208 | MAN_SUBSTS = @MAN_SUBSTS@ 209 | MISC_MAN_DIR = @MISC_MAN_DIR@ 210 | MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ 211 | MKDIR_P = @MKDIR_P@ 212 | NM = @NM@ 213 | NMEDIT = @NMEDIT@ 214 | OBJDUMP = @OBJDUMP@ 215 | OBJEXT = @OBJEXT@ 216 | OTOOL = @OTOOL@ 217 | OTOOL64 = @OTOOL64@ 218 | PACKAGE = @PACKAGE@ 219 | PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ 220 | PACKAGE_NAME = @PACKAGE_NAME@ 221 | PACKAGE_STRING = @PACKAGE_STRING@ 222 | PACKAGE_TARNAME = @PACKAGE_TARNAME@ 223 | PACKAGE_URL = @PACKAGE_URL@ 224 | PACKAGE_VERSION = @PACKAGE_VERSION@ 225 | PATH_SEPARATOR = @PATH_SEPARATOR@ 226 | PKG_CONFIG = @PKG_CONFIG@ 227 | PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ 228 | PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ 229 | RANLIB = @RANLIB@ 230 | SED = @SED@ 231 | SET_MAKE = @SET_MAKE@ 232 | SHELL = @SHELL@ 233 | STRICT_CFLAGS = @STRICT_CFLAGS@ 234 | STRIP = @STRIP@ 235 | VERSION = @VERSION@ 236 | XORG_CFLAGS = @XORG_CFLAGS@ 237 | XORG_LIBS = @XORG_LIBS@ 238 | XORG_MAN_PAGE = @XORG_MAN_PAGE@ 239 | abs_builddir = @abs_builddir@ 240 | abs_srcdir = @abs_srcdir@ 241 | abs_top_builddir = @abs_top_builddir@ 242 | abs_top_srcdir = @abs_top_srcdir@ 243 | ac_ct_AR = @ac_ct_AR@ 244 | ac_ct_CC = @ac_ct_CC@ 245 | ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ 246 | am__include = @am__include@ 247 | am__leading_dot = @am__leading_dot@ 248 | am__quote = @am__quote@ 249 | am__tar = @am__tar@ 250 | am__untar = @am__untar@ 251 | bindir = @bindir@ 252 | build = @build@ 253 | build_alias = @build_alias@ 254 | build_cpu = @build_cpu@ 255 | build_os = @build_os@ 256 | build_vendor = @build_vendor@ 257 | builddir = @builddir@ 258 | datadir = @datadir@ 259 | datarootdir = @datarootdir@ 260 | docdir = @docdir@ 261 | dvidir = @dvidir@ 262 | exec_prefix = @exec_prefix@ 263 | host = @host@ 264 | host_alias = @host_alias@ 265 | host_cpu = @host_cpu@ 266 | host_os = @host_os@ 267 | host_vendor = @host_vendor@ 268 | htmldir = @htmldir@ 269 | includedir = @includedir@ 270 | infodir = @infodir@ 271 | inputdir = @inputdir@ 272 | install_sh = @install_sh@ 273 | libdir = @libdir@ 274 | libexecdir = @libexecdir@ 275 | localedir = @localedir@ 276 | localstatedir = @localstatedir@ 277 | mandir = @mandir@ 278 | mkdir_p = @mkdir_p@ 279 | oldincludedir = @oldincludedir@ 280 | pdfdir = @pdfdir@ 281 | prefix = @prefix@ 282 | program_transform_name = @program_transform_name@ 283 | psdir = @psdir@ 284 | sbindir = @sbindir@ 285 | sdkdir = @sdkdir@ 286 | sharedstatedir = @sharedstatedir@ 287 | srcdir = @srcdir@ 288 | sysconfdir = @sysconfdir@ 289 | target_alias = @target_alias@ 290 | top_build_prefix = @top_build_prefix@ 291 | top_builddir = @top_builddir@ 292 | top_srcdir = @top_srcdir@ 293 | all: all-am 294 | 295 | .SUFFIXES: 296 | $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) 297 | @for dep in $?; do \ 298 | case '$(am__configure_deps)' in \ 299 | *$$dep*) \ 300 | ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ 301 | && { if test -f $@; then exit 0; else break; fi; }; \ 302 | exit 1;; \ 303 | esac; \ 304 | done; \ 305 | echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \ 306 | $(am__cd) $(top_srcdir) && \ 307 | $(AUTOMAKE) --foreign man/Makefile 308 | .PRECIOUS: Makefile 309 | Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status 310 | @case '$?' in \ 311 | *config.status*) \ 312 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ 313 | *) \ 314 | echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ 315 | cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ 316 | esac; 317 | 318 | $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) 319 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 320 | 321 | $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 322 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 323 | $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) 324 | cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh 325 | $(am__aclocal_m4_deps): 326 | 327 | mostlyclean-libtool: 328 | -rm -f *.lo 329 | 330 | clean-libtool: 331 | -rm -rf .libs _libs 332 | tags TAGS: 333 | 334 | ctags CTAGS: 335 | 336 | cscope cscopelist: 337 | 338 | 339 | distdir: $(DISTFILES) 340 | @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 341 | topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ 342 | list='$(DISTFILES)'; \ 343 | dist_files=`for file in $$list; do echo $$file; done | \ 344 | sed -e "s|^$$srcdirstrip/||;t" \ 345 | -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ 346 | case $$dist_files in \ 347 | */*) $(MKDIR_P) `echo "$$dist_files" | \ 348 | sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ 349 | sort -u` ;; \ 350 | esac; \ 351 | for file in $$dist_files; do \ 352 | if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ 353 | if test -d $$d/$$file; then \ 354 | dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ 355 | if test -d "$(distdir)/$$file"; then \ 356 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 357 | fi; \ 358 | if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ 359 | cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ 360 | find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ 361 | fi; \ 362 | cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ 363 | else \ 364 | test -f "$(distdir)/$$file" \ 365 | || cp -p $$d/$$file "$(distdir)/$$file" \ 366 | || exit 1; \ 367 | fi; \ 368 | done 369 | check-am: all-am 370 | check: check-am 371 | all-am: Makefile 372 | installdirs: 373 | install: install-am 374 | install-exec: install-exec-am 375 | install-data: install-data-am 376 | uninstall: uninstall-am 377 | 378 | install-am: all-am 379 | @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am 380 | 381 | installcheck: installcheck-am 382 | install-strip: 383 | if test -z '$(STRIP)'; then \ 384 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 385 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 386 | install; \ 387 | else \ 388 | $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ 389 | install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ 390 | "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ 391 | fi 392 | mostlyclean-generic: 393 | 394 | clean-generic: 395 | 396 | distclean-generic: 397 | -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) 398 | -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) 399 | 400 | maintainer-clean-generic: 401 | @echo "This command is intended for maintainers to use" 402 | @echo "it deletes files that may require special tools to rebuild." 403 | clean: clean-am 404 | 405 | clean-am: clean-generic clean-libtool mostlyclean-am 406 | 407 | distclean: distclean-am 408 | -rm -f Makefile 409 | distclean-am: clean-am distclean-generic 410 | 411 | dvi: dvi-am 412 | 413 | dvi-am: 414 | 415 | html: html-am 416 | 417 | html-am: 418 | 419 | info: info-am 420 | 421 | info-am: 422 | 423 | install-data-am: 424 | 425 | install-dvi: install-dvi-am 426 | 427 | install-dvi-am: 428 | 429 | install-exec-am: 430 | 431 | install-html: install-html-am 432 | 433 | install-html-am: 434 | 435 | install-info: install-info-am 436 | 437 | install-info-am: 438 | 439 | install-man: 440 | 441 | install-pdf: install-pdf-am 442 | 443 | install-pdf-am: 444 | 445 | install-ps: install-ps-am 446 | 447 | install-ps-am: 448 | 449 | installcheck-am: 450 | 451 | maintainer-clean: maintainer-clean-am 452 | -rm -f Makefile 453 | maintainer-clean-am: distclean-am maintainer-clean-generic 454 | 455 | mostlyclean: mostlyclean-am 456 | 457 | mostlyclean-am: mostlyclean-generic mostlyclean-libtool 458 | 459 | pdf: pdf-am 460 | 461 | pdf-am: 462 | 463 | ps: ps-am 464 | 465 | ps-am: 466 | 467 | uninstall-am: 468 | 469 | .MAKE: install-am install-strip 470 | 471 | .PHONY: all all-am check check-am clean clean-generic clean-libtool \ 472 | cscopelist-am ctags-am distclean distclean-generic \ 473 | distclean-libtool distdir dvi dvi-am html html-am info info-am \ 474 | install install-am install-data install-data-am install-dvi \ 475 | install-dvi-am install-exec install-exec-am install-html \ 476 | install-html-am install-info install-info-am install-man \ 477 | install-pdf install-pdf-am install-ps install-ps-am \ 478 | install-strip installcheck installcheck-am installdirs \ 479 | maintainer-clean maintainer-clean-generic mostlyclean \ 480 | mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ 481 | tags-am uninstall uninstall-am 482 | 483 | 484 | # String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure 485 | #.man.$(DRIVER_MAN_SUFFIX): 486 | # $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@ 487 | 488 | # Tell versions [3.59,3.63) of GNU make to not export all variables. 489 | # Otherwise a system limit (for SysV at least) may be exceeded. 490 | .NOEXPORT: 491 | -------------------------------------------------------------------------------- /man/cmt.man: -------------------------------------------------------------------------------- 1 | .\" shorthand for double quote that works everywhere. 2 | .ds q \N'34' 3 | .TH CMT __drivermansuffix__ __vendorversion__ 4 | .SH NAME 5 | cmt \- Chromium multitouch input driver for Xorg X server 6 | .SH SYNOPSIS 7 | .nf 8 | .B "Section \*qInputDevice\*q" 9 | .BI " Identifier \*q" devname \*q 10 | .B " Driver \*qcmt\*q" 11 | .BI " Option \*qDevice\*q \*q" devpath \*q 12 | .BI " Option \*qTapToClick\*q \*qon\*q" 13 | \ \ ... 14 | .B EndSection 15 | .fi 16 | .SH DESCRIPTION 17 | .B cmt 18 | is an __xservername__ input driver for Chromium OS. It supports touchpads with 19 | kernel drivers that support the linux multitouch protocol. 20 | .PP 21 | It is recommended that 22 | .B cmt 23 | devices are configured through the 24 | .B InputClass 25 | directive (refer to __xconfigfile__(__filemansuffix__)) instead of manual 26 | per-device configuration. Devices configured in the 27 | __xconfigfile__(__filemansuffix__) are not hot-plug capable. 28 | .PP 29 | .SH SUPPORTED HARDWARE 30 | In general, any input device that the kernel has a multitouch compatible driver 31 | can be accessed through the 32 | .B cmt 33 | driver. 34 | .PP 35 | .SH CONFIGURATION DETAILS 36 | Please refer to __xconfigfile__(__filemansuffix__) for general configuration 37 | details and for options that can be used with all input drivers. This 38 | section only covers configuration details specific to this driver. 39 | .PP 40 | The following driver 41 | .B Options 42 | are supported: 43 | .TP 7 44 | .BI "Option \*TapToClick\*q \*q" boolean \*q 45 | Enables Tap To Click. 46 | .TP 7 47 | 48 | .SH AUTHORS 49 | The Chromium OS Authors 50 | .SH "SEE ALSO" 51 | __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) -------------------------------------------------------------------------------- /missing: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Common wrapper for a few potentially missing GNU programs. 3 | 4 | scriptversion=2013-10-28.13; # UTC 5 | 6 | # Copyright (C) 1996-2013 Free Software Foundation, Inc. 7 | # Originally written by Fran,cois Pinard , 1996. 8 | 9 | # This program is free software; you can redistribute it and/or modify 10 | # it under the terms of the GNU General Public License as published by 11 | # the Free Software Foundation; either version 2, or (at your option) 12 | # any later version. 13 | 14 | # This program is distributed in the hope that it will be useful, 15 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | # GNU General Public License for more details. 18 | 19 | # You should have received a copy of the GNU General Public License 20 | # along with this program. If not, see . 21 | 22 | # As a special exception to the GNU General Public License, if you 23 | # distribute this file as part of a program that contains a 24 | # configuration script generated by Autoconf, you may include it under 25 | # the same distribution terms that you use for the rest of that program. 26 | 27 | if test $# -eq 0; then 28 | echo 1>&2 "Try '$0 --help' for more information" 29 | exit 1 30 | fi 31 | 32 | case $1 in 33 | 34 | --is-lightweight) 35 | # Used by our autoconf macros to check whether the available missing 36 | # script is modern enough. 37 | exit 0 38 | ;; 39 | 40 | --run) 41 | # Back-compat with the calling convention used by older automake. 42 | shift 43 | ;; 44 | 45 | -h|--h|--he|--hel|--help) 46 | echo "\ 47 | $0 [OPTION]... PROGRAM [ARGUMENT]... 48 | 49 | Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due 50 | to PROGRAM being missing or too old. 51 | 52 | Options: 53 | -h, --help display this help and exit 54 | -v, --version output version information and exit 55 | 56 | Supported PROGRAM values: 57 | aclocal autoconf autoheader autom4te automake makeinfo 58 | bison yacc flex lex help2man 59 | 60 | Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 61 | 'g' are ignored when checking the name. 62 | 63 | Send bug reports to ." 64 | exit $? 65 | ;; 66 | 67 | -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 68 | echo "missing $scriptversion (GNU Automake)" 69 | exit $? 70 | ;; 71 | 72 | -*) 73 | echo 1>&2 "$0: unknown '$1' option" 74 | echo 1>&2 "Try '$0 --help' for more information" 75 | exit 1 76 | ;; 77 | 78 | esac 79 | 80 | # Run the given program, remember its exit status. 81 | "$@"; st=$? 82 | 83 | # If it succeeded, we are done. 84 | test $st -eq 0 && exit 0 85 | 86 | # Also exit now if we it failed (or wasn't found), and '--version' was 87 | # passed; such an option is passed most likely to detect whether the 88 | # program is present and works. 89 | case $2 in --version|--help) exit $st;; esac 90 | 91 | # Exit code 63 means version mismatch. This often happens when the user 92 | # tries to use an ancient version of a tool on a file that requires a 93 | # minimum version. 94 | if test $st -eq 63; then 95 | msg="probably too old" 96 | elif test $st -eq 127; then 97 | # Program was missing. 98 | msg="missing on your system" 99 | else 100 | # Program was found and executed, but failed. Give up. 101 | exit $st 102 | fi 103 | 104 | perl_URL=http://www.perl.org/ 105 | flex_URL=http://flex.sourceforge.net/ 106 | gnu_software_URL=http://www.gnu.org/software 107 | 108 | program_details () 109 | { 110 | case $1 in 111 | aclocal|automake) 112 | echo "The '$1' program is part of the GNU Automake package:" 113 | echo "<$gnu_software_URL/automake>" 114 | echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" 115 | echo "<$gnu_software_URL/autoconf>" 116 | echo "<$gnu_software_URL/m4/>" 117 | echo "<$perl_URL>" 118 | ;; 119 | autoconf|autom4te|autoheader) 120 | echo "The '$1' program is part of the GNU Autoconf package:" 121 | echo "<$gnu_software_URL/autoconf/>" 122 | echo "It also requires GNU m4 and Perl in order to run:" 123 | echo "<$gnu_software_URL/m4/>" 124 | echo "<$perl_URL>" 125 | ;; 126 | esac 127 | } 128 | 129 | give_advice () 130 | { 131 | # Normalize program name to check for. 132 | normalized_program=`echo "$1" | sed ' 133 | s/^gnu-//; t 134 | s/^gnu//; t 135 | s/^g//; t'` 136 | 137 | printf '%s\n' "'$1' is $msg." 138 | 139 | configure_deps="'configure.ac' or m4 files included by 'configure.ac'" 140 | case $normalized_program in 141 | autoconf*) 142 | echo "You should only need it if you modified 'configure.ac'," 143 | echo "or m4 files included by it." 144 | program_details 'autoconf' 145 | ;; 146 | autoheader*) 147 | echo "You should only need it if you modified 'acconfig.h' or" 148 | echo "$configure_deps." 149 | program_details 'autoheader' 150 | ;; 151 | automake*) 152 | echo "You should only need it if you modified 'Makefile.am' or" 153 | echo "$configure_deps." 154 | program_details 'automake' 155 | ;; 156 | aclocal*) 157 | echo "You should only need it if you modified 'acinclude.m4' or" 158 | echo "$configure_deps." 159 | program_details 'aclocal' 160 | ;; 161 | autom4te*) 162 | echo "You might have modified some maintainer files that require" 163 | echo "the 'autom4te' program to be rebuilt." 164 | program_details 'autom4te' 165 | ;; 166 | bison*|yacc*) 167 | echo "You should only need it if you modified a '.y' file." 168 | echo "You may want to install the GNU Bison package:" 169 | echo "<$gnu_software_URL/bison/>" 170 | ;; 171 | lex*|flex*) 172 | echo "You should only need it if you modified a '.l' file." 173 | echo "You may want to install the Fast Lexical Analyzer package:" 174 | echo "<$flex_URL>" 175 | ;; 176 | help2man*) 177 | echo "You should only need it if you modified a dependency" \ 178 | "of a man page." 179 | echo "You may want to install the GNU Help2man package:" 180 | echo "<$gnu_software_URL/help2man/>" 181 | ;; 182 | makeinfo*) 183 | echo "You should only need it if you modified a '.texi' file, or" 184 | echo "any other file indirectly affecting the aspect of the manual." 185 | echo "You might want to install the Texinfo package:" 186 | echo "<$gnu_software_URL/texinfo/>" 187 | echo "The spurious makeinfo call might also be the consequence of" 188 | echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" 189 | echo "want to install GNU make:" 190 | echo "<$gnu_software_URL/make/>" 191 | ;; 192 | *) 193 | echo "You might have modified some files without having the proper" 194 | echo "tools for further handling them. Check the 'README' file, it" 195 | echo "often tells you about the needed prerequisites for installing" 196 | echo "this package. You may also peek at any GNU archive site, in" 197 | echo "case some other package contains this missing '$1' program." 198 | ;; 199 | esac 200 | } 201 | 202 | give_advice "$1" | sed -e '1s/^/WARNING: /' \ 203 | -e '2,$s/^/ /' >&2 204 | 205 | # Propagate the correct exit status (expected to be 127 for a program 206 | # not found, 63 for a program that failed due to version mismatch). 207 | exit $st 208 | 209 | # Local variables: 210 | # eval: (add-hook 'write-file-hooks 'time-stamp) 211 | # time-stamp-start: "scriptversion=" 212 | # time-stamp-format: "%:y-%02m-%02d.%02H" 213 | # time-stamp-time-zone: "UTC" 214 | # time-stamp-end: "; # UTC" 215 | # End: 216 | -------------------------------------------------------------------------------- /src/Makefile.am: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | # 5 | # Copyright 2005 Adam Jackson. 6 | # 7 | # Permission is hereby granted, free of charge, to any person obtaining a 8 | # copy of this software and associated documentation files (the "Software"), 9 | # to deal in the Software without restriction, including without limitation 10 | # on the rights to use, copy, modify, merge, publish, distribute, sub 11 | # license, and/or sell copies of the Software, and to permit persons to whom 12 | # the Software is furnished to do so, subject to the following conditions: 13 | # 14 | # The above copyright notice and this permission notice (including the next 15 | # paragraph) shall be included in all copies or substantial portions of the 16 | # Software. 17 | # 18 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 21 | # ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 22 | # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 23 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | 25 | 26 | # -module lets us name the module exactly how we want 27 | # -avoid-version prevents gratuitous .0.0.0 version numbers on the end 28 | # -shared avoid building the static archive 29 | # _ladir passes a dummy rpath to libtool so the thing will actually link 30 | # TODO: -nostdlib/-Bstatic/-lgcc platform magic, etc. 31 | 32 | AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS) 33 | AM_CPPFLAGS =-I$(top_srcdir)/include 34 | 35 | @DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la 36 | @DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version -shared -lgestures \ 37 | -levdevc 38 | @DRIVER_NAME@_drv_ladir = @inputdir@ 39 | 40 | @DRIVER_NAME@_drv_la_SOURCES = @DRIVER_NAME@.c \ 41 | @DRIVER_NAME@.h \ 42 | gesture.c \ 43 | properties.c 44 | -------------------------------------------------------------------------------- /src/Makefile.test: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | TEST_OBJECTS=\ 6 | event_test.o \ 7 | test_stubs.o 8 | 9 | TEST_MAIN=test_main.o 10 | 11 | TEST_EXE=./test 12 | 13 | LOCAL_CFLAGS=\ 14 | $(shell $(PKG_CONFIG) --cflags pixman-1) 15 | 16 | CFLAGS+=$(LOCAL_CFLAGS) 17 | CXXFLAGS+=$(LOCAL_CFLAGS) 18 | 19 | LDFLAGS+=\ 20 | -lgestures \ 21 | -lgtest 22 | 23 | dotest: $(TEST_EXE) 24 | $(TEST_EXE) 25 | 26 | %.o : %.cc 27 | $(CXX) $(CXXFLAGS) -c -o $@ $< 28 | 29 | %.o : %.c 30 | $(CC) $(CFLAGS) -c -o $@ $< 31 | 32 | $(TEST_EXE): $(OBJECTS) $(TEST_OBJECTS) $(TEST_MAIN) 33 | $(CXX) -o $@ $(OBJECTS) $(TEST_OBJECTS) $(TEST_MAIN) $(LDFLAGS) \ 34 | ${S}/../*_build/src/.libs/*.o 35 | -------------------------------------------------------------------------------- /src/cmt.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | #ifdef HAVE_CONFIG_H 8 | #include "config.h" 9 | #endif 10 | 11 | #include "cmt.h" 12 | 13 | #include 14 | #include 15 | #include 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #include "properties.h" 26 | 27 | #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 12 28 | #error Unsupported XInput version. Major version 12 and above required. 29 | #endif 30 | 31 | #define AXIS_LABEL_PROP_ABS_DBL_ORDINAL_X "Abs Dbl Ordinal X" 32 | #define AXIS_LABEL_PROP_ABS_DBL_ORDINAL_Y "Abs Dbl Ordinal Y" 33 | 34 | #define AXIS_LABEL_PROP_ABS_FLING_STATE "Abs Fling State" 35 | #define AXIS_LABEL_PROP_ABS_DBL_FLING_VX "Abs Dbl Fling X Velocity" 36 | #define AXIS_LABEL_PROP_ABS_DBL_FLING_VY "Abs Dbl Fling Y Velocity" 37 | 38 | #define AXIS_LABEL_PROP_ABS_METRICS_TYPE "Abs Metrics Type" 39 | #define AXIS_LABEL_PROP_ABS_DBL_METRICS_DATA1 "Abs Dbl Metrics Data 1" 40 | #define AXIS_LABEL_PROP_ABS_DBL_METRICS_DATA2 "Abs Dbl Metrics Data 2" 41 | 42 | #define AXIS_LABEL_PROP_ABS_DBL_START_TIME "Abs Dbl Start Timestamp" 43 | #define AXIS_LABEL_PROP_ABS_DBL_END_TIME "Abs Dbl End Timestamp" 44 | 45 | #define AXIS_LABEL_PROP_ABS_FINGER_COUNT "Abs Finger Count" 46 | 47 | #define AXIS_LABEL_PROP_ABS_TOUCH_TIMESTAMP "Touch Timestamp" 48 | 49 | /** 50 | * Forward declarations 51 | */ 52 | static int PreInit(InputDriverPtr, InputInfoPtr, int); 53 | static void UnInit(InputDriverPtr, InputInfoPtr, int); 54 | 55 | static pointer Plug(pointer, pointer, int*, int*); 56 | static void Unplug(pointer); 57 | 58 | static int DeviceControl(DeviceIntPtr, int); 59 | static void ReadInput(InputInfoPtr); 60 | 61 | static Bool DeviceInit(DeviceIntPtr); 62 | static Bool DeviceOn(DeviceIntPtr); 63 | static Bool DeviceOff(DeviceIntPtr); 64 | static Bool DeviceClose(DeviceIntPtr); 65 | 66 | static Bool OpenDevice(InputInfoPtr); 67 | static int InitializeXDevice(DeviceIntPtr dev); 68 | 69 | static void libevdev_log_x(void* udata, int level, const char* format, ...) 70 | _X_ATTRIBUTE_PRINTF(3, 4); 71 | 72 | /* 73 | * Implementation of log method for libevdev 74 | */ 75 | static void libevdev_log_x(void* udata, int level, const char* format, ...) { 76 | InputInfoPtr info = udata; 77 | int verb; 78 | int type; 79 | int msg_size = 256; 80 | char msg[msg_size]; 81 | 82 | va_list args; 83 | va_start(args, format); 84 | if (level == LOGLEVEL_DEBUG) { 85 | type = X_INFO; 86 | verb = DBG_VERB; 87 | } else if (level == LOGLEVEL_WARNING) { 88 | type = X_WARNING; 89 | verb = -1; 90 | } else { 91 | type = X_ERROR; 92 | verb = -1; 93 | } 94 | 95 | vsnprintf(msg, msg_size, format, args); 96 | va_end(args); 97 | LogMessageVerbSigSafe(type, verb, msg, ""); 98 | } 99 | 100 | /** 101 | * X Input driver information and PreInit / UnInit routines 102 | */ 103 | _X_EXPORT InputDriverRec CMT = { 104 | 1, 105 | (char*)"cmt", 106 | NULL, 107 | PreInit, 108 | UnInit, 109 | NULL, 110 | 0 111 | }; 112 | 113 | static int 114 | PreInit(InputDriverPtr drv, InputInfoPtr info, int flags) 115 | { 116 | CmtDevicePtr cmt; 117 | int rc; 118 | 119 | DBG(info, "NewPreInit\n"); 120 | 121 | cmt = calloc(1, sizeof(*cmt)); 122 | if (!cmt) 123 | return BadAlloc; 124 | 125 | info->device_control = DeviceControl; 126 | info->read_input = ReadInput; 127 | info->control_proc = NULL; 128 | info->switch_mode = NULL; /* Only support Absolute mode */ 129 | info->private = cmt; 130 | info->fd = -1; 131 | 132 | cmt->evdev.log = &libevdev_log_x; 133 | cmt->evdev.log_udata = info; 134 | cmt->evdev.fd = info->fd; 135 | cmt->evdev.evstate = &cmt->evstate; 136 | cmt->evdev.syn_report = &Gesture_Process_Slots; 137 | cmt->evdev.syn_report_udata = &cmt->gesture; 138 | 139 | rc = OpenDevice(info); 140 | if (rc != Success) 141 | goto Error_OpenDevice; 142 | 143 | rc = Event_Init(&cmt->evdev); 144 | if (rc != Success) { 145 | if (rc == ENOMEM) { 146 | rc = BadAlloc; 147 | } 148 | goto Error_Event_Init; 149 | } 150 | 151 | // The cmt driver currently powers mice, multi-touch mice and touchpads. 152 | // We list mice as XI_MOUSE and the others as XI_TOUCHPAD. 153 | if (cmt->evdev.info.evdev_class == EvdevClassMouse) 154 | info->type_name = (char*)XI_MOUSE; 155 | else 156 | info->type_name = (char*)XI_TOUCHPAD; 157 | 158 | xf86ProcessCommonOptions(info, info->options); 159 | 160 | if (info->fd >= 0) 161 | info->fd = EvdevClose(&cmt->evdev); 162 | 163 | rc = Gesture_Init(&cmt->gesture, Event_Get_Slot_Count(&cmt->evdev)); 164 | if (rc != Success) 165 | goto Error_Gesture_Init; 166 | 167 | return Success; 168 | 169 | Error_Gesture_Init: 170 | Event_Free(&cmt->evdev); 171 | Error_Event_Init: 172 | if (info->fd >= 0) 173 | info->fd = EvdevClose(&cmt->evdev); 174 | Error_OpenDevice: 175 | free(cmt); 176 | info->private = NULL; 177 | return rc; 178 | } 179 | 180 | static void 181 | UnInit(InputDriverPtr drv, InputInfoPtr info, int flags) 182 | { 183 | CmtDevicePtr cmt; 184 | 185 | if (!info) 186 | return; 187 | 188 | cmt = info->private; 189 | DBG(info, "UnInit\n"); 190 | 191 | if (cmt) { 192 | Gesture_Free(&cmt->gesture); 193 | free(cmt->device); 194 | cmt->device = NULL; 195 | Event_Free(&cmt->evdev); 196 | free(cmt); 197 | info->private = NULL; 198 | } 199 | xf86DeleteInput(info, flags); 200 | } 201 | 202 | /** 203 | * X input driver entry points 204 | */ 205 | static Bool 206 | DeviceControl(DeviceIntPtr dev, int mode) 207 | { 208 | switch (mode) { 209 | case DEVICE_INIT: 210 | return DeviceInit(dev); 211 | 212 | case DEVICE_ON: 213 | return DeviceOn(dev); 214 | 215 | case DEVICE_OFF: 216 | return DeviceOff(dev); 217 | 218 | case DEVICE_CLOSE: 219 | return DeviceClose(dev); 220 | } 221 | 222 | return BadValue; 223 | } 224 | 225 | static void 226 | ReadInput(InputInfoPtr info) 227 | { 228 | CmtDevicePtr cmt = info->private; 229 | 230 | int err = EvdevRead(&cmt->evdev); 231 | if (err != Success) { 232 | if (err == ENODEV) { 233 | xf86RemoveEnabledDevice(info); 234 | info->fd = EvdevClose(&cmt->evdev); 235 | } else if (err != EAGAIN) { 236 | ERR(info, "Read error: %s\n", strerror(err)); 237 | } 238 | } 239 | } 240 | 241 | /** 242 | * device control event handlers 243 | */ 244 | static Bool 245 | DeviceInit(DeviceIntPtr dev) 246 | { 247 | InputInfoPtr info = dev->public.devicePrivate; 248 | CmtDevicePtr cmt = info->private; 249 | int rc; 250 | 251 | DBG(info, "DeviceInit\n"); 252 | 253 | InitializeXDevice(dev); 254 | dev->public.on = FALSE; 255 | 256 | rc = PropertiesInit(dev); 257 | if (rc != Success) 258 | return rc; 259 | 260 | Gesture_Device_Init(&cmt->gesture, dev); 261 | 262 | return Success; 263 | } 264 | 265 | static Bool 266 | DeviceOn(DeviceIntPtr dev) 267 | { 268 | InputInfoPtr info = dev->public.devicePrivate; 269 | CmtDevicePtr cmt = info->private; 270 | int rc; 271 | 272 | DBG(info, "DeviceOn\n"); 273 | 274 | rc = OpenDevice(info); 275 | if (rc != Success) 276 | return rc; 277 | Event_Open(&cmt->evdev); 278 | 279 | xf86AddEnabledDevice(info); 280 | dev->public.on = TRUE; 281 | Gesture_Device_On(&cmt->gesture); 282 | return Success; 283 | } 284 | 285 | static Bool 286 | DeviceOff(DeviceIntPtr dev) 287 | { 288 | InputInfoPtr info = dev->public.devicePrivate; 289 | CmtDevicePtr cmt = info->private; 290 | 291 | DBG(info, "DeviceOff\n"); 292 | 293 | dev->public.on = FALSE; 294 | Gesture_Device_Off(&cmt->gesture); 295 | if (info->fd != -1) { 296 | xf86RemoveEnabledDevice(info); 297 | info->fd = EvdevClose(&cmt->evdev); 298 | } 299 | return Success; 300 | } 301 | 302 | static Bool 303 | DeviceClose(DeviceIntPtr dev) 304 | { 305 | InputInfoPtr info = dev->public.devicePrivate; 306 | CmtDevicePtr cmt = info->private; 307 | 308 | DBG(info, "DeviceClose\n"); 309 | 310 | DeviceOff(dev); 311 | Gesture_Device_Close(&cmt->gesture); 312 | PropertiesClose(dev); 313 | return Success; 314 | } 315 | 316 | /** 317 | * Open Device Node 318 | */ 319 | static Bool 320 | OpenDevice(InputInfoPtr info) 321 | { 322 | CmtDevicePtr cmt = info->private; 323 | 324 | if (!cmt->device) { 325 | cmt->device = xf86CheckStrOption(info->options, "Device", NULL); 326 | if (!cmt->device) { 327 | ERR(info, "No Device specified.\n"); 328 | return BadValue; 329 | } 330 | xf86IDrvMsg(info, X_CONFIG, "Opening Device: \"%s\"\n", cmt->device); 331 | } 332 | 333 | if (info->fd < 0) { 334 | do { 335 | info->fd = EvdevOpen(&cmt->evdev, cmt->device); 336 | } while (info->fd < 0 && errno == EINTR); 337 | 338 | if (info->fd < 0) { 339 | ERR(info, "Cannot open \"%s\".\n", cmt->device); 340 | return BadValue; 341 | } 342 | } 343 | 344 | return Success; 345 | } 346 | 347 | 348 | /** 349 | * Setup X Input Device Classes 350 | */ 351 | 352 | /* 353 | * Alter the control parameters for the mouse. Note that all special 354 | * protocol values are handled by dix. 355 | */ 356 | static void 357 | PointerCtrl(DeviceIntPtr device, PtrCtrl *ctrl) 358 | { 359 | } 360 | 361 | static void 362 | KeyboardCtrl(DeviceIntPtr device, KeybdCtrl *ctrl) 363 | { 364 | } 365 | 366 | static Atom 367 | InitAtom(const char* name) 368 | { 369 | Atom atom = XIGetKnownProperty(name); 370 | if (!atom) 371 | atom = MakeAtom(name, strlen(name), TRUE); 372 | return atom; 373 | } 374 | 375 | static int 376 | InitializeXDevice(DeviceIntPtr dev) 377 | { 378 | static const char* axes_names[CMT_NUM_AXES] = { 379 | AXIS_LABEL_PROP_REL_X, 380 | AXIS_LABEL_PROP_REL_Y, 381 | AXIS_LABEL_PROP_ABS_DBL_ORDINAL_X, 382 | AXIS_LABEL_PROP_ABS_DBL_ORDINAL_Y, 383 | AXIS_LABEL_PROP_REL_HWHEEL, 384 | AXIS_LABEL_PROP_REL_WHEEL, 385 | AXIS_LABEL_PROP_ABS_FLING_STATE, 386 | AXIS_LABEL_PROP_ABS_DBL_FLING_VX, 387 | AXIS_LABEL_PROP_ABS_DBL_FLING_VY, 388 | AXIS_LABEL_PROP_ABS_METRICS_TYPE, 389 | AXIS_LABEL_PROP_ABS_DBL_METRICS_DATA1, 390 | AXIS_LABEL_PROP_ABS_DBL_METRICS_DATA2, 391 | AXIS_LABEL_PROP_ABS_DBL_START_TIME, 392 | AXIS_LABEL_PROP_ABS_DBL_END_TIME, 393 | AXIS_LABEL_PROP_ABS_FINGER_COUNT, 394 | AXIS_LABEL_PROP_ABS_MT_POSITION_X, 395 | AXIS_LABEL_PROP_ABS_MT_POSITION_Y, 396 | AXIS_LABEL_PROP_ABS_MT_PRESSURE, 397 | AXIS_LABEL_PROP_ABS_MT_TOUCH_MAJOR, 398 | AXIS_LABEL_PROP_ABS_TOUCH_TIMESTAMP, 399 | }; 400 | static const char* btn_names[CMT_NUM_BUTTONS] = { 401 | BTN_LABEL_PROP_BTN_LEFT, 402 | BTN_LABEL_PROP_BTN_MIDDLE, 403 | BTN_LABEL_PROP_BTN_RIGHT, 404 | BTN_LABEL_PROP_BTN_BACK, 405 | BTN_LABEL_PROP_BTN_FORWARD, 406 | }; 407 | InputInfoPtr info = dev->public.devicePrivate; 408 | CmtDevicePtr cmt = info->private; 409 | 410 | XkbRMLVOSet rmlvo = { 0 }; 411 | Atom axes_labels[CMT_NUM_AXES] = { 0 }; 412 | Atom btn_labels[CMT_NUM_BUTTONS] = { 0 }; 413 | /* Map our button numbers to standard ones. */ 414 | CARD8 map[CMT_NUM_BUTTONS + 1] = { 415 | 0, /* Ignored */ 416 | 1, 417 | 2, 418 | 3, 419 | 4, /* Scroll Up */ 420 | 5 /* Scroll Down */ 421 | }; 422 | int i; 423 | 424 | /* TODO: Prop to adjust button mapping */ 425 | for (i = 0; i < CMT_NUM_BUTTONS; i++) 426 | btn_labels[i] = XIGetKnownProperty(btn_names[i]); 427 | 428 | for (i = 0; i < CMT_NUM_AXES; i++) 429 | axes_labels[i] = InitAtom(axes_names[i]); 430 | 431 | /* initialize mouse emulation valuators */ 432 | InitPointerDeviceStruct((DevicePtr)dev, 433 | map, 434 | CMT_NUM_BUTTONS, btn_labels, 435 | PointerCtrl, 436 | GetMotionHistorySize(), 437 | CMT_NUM_AXES, axes_labels); 438 | 439 | for (i = 0; i < CMT_NUM_AXES; i++) { 440 | int mode = (i == CMT_AXIS_X || i == CMT_AXIS_Y) ? Relative : Absolute; 441 | if (i >= CMT_AXIS_MT_POSITION_X) 442 | break; 443 | xf86InitValuatorAxisStruct( 444 | dev, i, axes_labels[i], -1, -1, 1, 0, 1, mode); 445 | xf86InitValuatorDefaults(dev, i); 446 | } 447 | 448 | /* initialize raw touch valuators */ 449 | InitTouchClassDeviceStruct(dev, Event_Get_Slot_Count(&cmt->evdev), 450 | XIDependentTouch, CMT_NUM_MT_AXES); 451 | 452 | for (i = 0; i < CMT_NUM_AXES; i++) { 453 | int mode = (i == CMT_AXIS_X || i == CMT_AXIS_Y) ? Relative : Absolute; 454 | int input_axis = 0; 455 | if (i == CMT_AXIS_TOUCH_TIMESTAMP) { 456 | xf86InitValuatorAxisStruct(dev, i, axes_labels[i], 457 | 0, INT_MAX, 1, 0, 1, Absolute); 458 | continue; 459 | } 460 | 461 | if (i == CMT_AXIS_MT_POSITION_X) 462 | input_axis = ABS_MT_POSITION_X; 463 | else if (i == CMT_AXIS_MT_POSITION_Y) 464 | input_axis = ABS_MT_POSITION_Y; 465 | else if (i == CMT_AXIS_MT_PRESSURE) 466 | input_axis = ABS_MT_PRESSURE; 467 | else if (i == CMT_AXIS_MT_TOUCH_MAJOR) 468 | input_axis = ABS_MT_TOUCH_MAJOR; 469 | else 470 | continue; 471 | xf86InitValuatorAxisStruct( 472 | dev, i, axes_labels[i], 473 | cmt->evdev.info.absinfo[input_axis].minimum, 474 | cmt->evdev.info.absinfo[input_axis].maximum, 475 | cmt->evdev.info.absinfo[input_axis].resolution, 476 | 0, 477 | cmt->evdev.info.absinfo[input_axis].resolution, 478 | mode); 479 | xf86InitValuatorDefaults(dev, i); 480 | } 481 | 482 | /* Inititialize the Scroll Valuators */ 483 | SetScrollValuator(dev, CMT_AXIS_SCROLL_X, SCROLL_TYPE_HORIZONTAL, 484 | 1.0, 0); 485 | SetScrollValuator(dev, CMT_AXIS_SCROLL_Y, SCROLL_TYPE_VERTICAL, 486 | 1.0, 0); 487 | 488 | /* Initialize keyboard device struct. Based on xf86-input-evdev, 489 | do not allow any rule/layout/etc changes. */ 490 | xf86ReplaceStrOption(info->options, "xkb_rules", "evdev"); 491 | rmlvo.rules = xf86SetStrOption(info->options, "xkb_rules", NULL); 492 | rmlvo.model = xf86SetStrOption(info->options, "xkb_model", NULL); 493 | rmlvo.layout = xf86SetStrOption(info->options, "xkb_layout", NULL); 494 | rmlvo.variant = xf86SetStrOption(info->options, "xkb_variant", NULL); 495 | rmlvo.options = xf86SetStrOption(info->options, "xkb_options", NULL); 496 | 497 | InitKeyboardDeviceStruct(dev, &rmlvo, NULL, KeyboardCtrl); 498 | XkbFreeRMLVOSet(&rmlvo, FALSE); 499 | 500 | return Success; 501 | } 502 | 503 | 504 | /** 505 | * X module information and plug / unplug routines 506 | */ 507 | static XF86ModuleVersionInfo versionRec = 508 | { 509 | "cmt", 510 | MODULEVENDORSTRING, 511 | MODINFOSTRING1, 512 | MODINFOSTRING2, 513 | XORG_VERSION_CURRENT, 514 | PACKAGE_VERSION_MAJOR, PACKAGE_VERSION_MINOR, PACKAGE_VERSION_PATCHLEVEL, 515 | ABI_CLASS_XINPUT, 516 | ABI_XINPUT_VERSION, 517 | MOD_CLASS_XINPUT, 518 | {0, 0, 0, 0} 519 | }; 520 | 521 | _X_EXPORT XF86ModuleData cmtModuleData = 522 | { 523 | &versionRec, 524 | Plug, 525 | Unplug 526 | }; 527 | 528 | 529 | static pointer 530 | Plug(pointer module, pointer options, int* errmaj, int* errmin) 531 | { 532 | xf86AddInputDriver(&CMT, module, 0); 533 | return module; 534 | } 535 | 536 | static void 537 | Unplug(pointer p) 538 | { 539 | } 540 | -------------------------------------------------------------------------------- /src/cmt.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | #ifndef _CMT_H_ 8 | #define _CMT_H_ 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | // todo(denniskempin): allow libevdev to be included before X headers 15 | #include 16 | 17 | #define DBG_VERB 7 18 | #define DBG(info, format, ...) \ 19 | LogMessageVerbSigSafe(X_INFO, DBG_VERB, "%s():%d: " format, \ 20 | __FUNCTION__, __LINE__, ##__VA_ARGS__) 21 | 22 | #define PROBE_DBG(info, format, ...) \ 23 | LogMessageVerbSigSafe(X_PROBED, DBG_VERB, "%s():%d: " format, \ 24 | __FUNCTION__, __LINE__, ##__VA_ARGS__) 25 | 26 | #define CONFIG_DBG(info, format, ...) \ 27 | LogMessageVerbSigSafe(X_CONFIG, DBG_VERB, "%s():%d: " format, \ 28 | __FUNCTION__, __LINE__, ##__VA_ARGS__) 29 | 30 | #define ERR(info, ...) \ 31 | xf86IDrvMsg((info), X_ERROR, ##__VA_ARGS__) 32 | 33 | #define LONG_BITS (sizeof(long) * 8) 34 | 35 | /* Number of longs needed to hold the given number of bits */ 36 | #define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS) 37 | 38 | /* Axes numbers. */ 39 | enum CMT_AXIS { 40 | CMT_AXIS_X = 0, 41 | CMT_AXIS_Y, 42 | CMT_AXIS_ORDINAL_X, 43 | CMT_AXIS_ORDINAL_Y, 44 | CMT_AXIS_SCROLL_X, 45 | CMT_AXIS_SCROLL_Y, 46 | CMT_AXIS_FLING_STATE, 47 | CMT_AXIS_DBL_FLING_VX, 48 | CMT_AXIS_DBL_FLING_VY, 49 | CMT_AXIS_METRICS_TYPE, 50 | CMT_AXIS_METRICS_DATA1, 51 | CMT_AXIS_METRICS_DATA2, 52 | CMT_AXIS_DBL_START_TIME, 53 | CMT_AXIS_DBL_END_TIME, 54 | CMT_AXIS_FINGER_COUNT, 55 | CMT_AXIS_MT_POSITION_X, 56 | CMT_AXIS_MT_POSITION_Y, 57 | CMT_AXIS_MT_PRESSURE, 58 | CMT_AXIS_MT_TOUCH_MAJOR, 59 | CMT_AXIS_TOUCH_TIMESTAMP 60 | }; 61 | 62 | #define CMT_NUM_AXES (CMT_AXIS_TOUCH_TIMESTAMP - CMT_AXIS_X + 1) 63 | #define CMT_NUM_MT_AXES (CMT_AXIS_TOUCH_TIMESTAMP - CMT_AXIS_MT_POSITION_X + 1) 64 | 65 | /* Button numbers. */ 66 | enum CMT_BUTTON { 67 | CMT_BTN_LEFT = 1, 68 | CMT_BTN_MIDDLE, 69 | CMT_BTN_RIGHT, 70 | CMT_BTN_BACK, 71 | CMT_BTN_FORWARD 72 | }; 73 | 74 | #define CMT_NUM_BUTTONS (CMT_BTN_FORWARD - CMT_BTN_LEFT + 1) 75 | 76 | typedef struct { 77 | CmtProperties props; 78 | EventStateRec evstate; 79 | GestureRec gesture; 80 | GesturesProp* prop_list; 81 | Evdev evdev; 82 | 83 | char* device; 84 | long handlers; 85 | unsigned long prev_key_state[NLONGS(KEY_CNT)]; 86 | } CmtDeviceRec, *CmtDevicePtr; 87 | 88 | #endif 89 | -------------------------------------------------------------------------------- /src/event_test.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #include 6 | 7 | extern "C" { 8 | #undef __cplusplus 9 | #define bool bool_ 10 | #define class class_ 11 | #define delete delete_ 12 | #define new new_ 13 | #define private private_ 14 | #define public public_ 15 | #include "libevdev_cmt.h" 16 | #include "libevdev_event.h" 17 | #undef bool 18 | #undef class 19 | #undef delete 20 | #undef new 21 | #undef private 22 | #undef public 23 | #define __cplusplus 1 24 | } 25 | 26 | class EventTest : public ::testing::Test {}; 27 | 28 | TEST(EventTest, Event_Get_LeftTest) { 29 | CmtDeviceRec cmt; 30 | InputInfoRec info; 31 | info.private_ = &cmt; 32 | cmt.absinfo[ABS_X].minimum = 123; 33 | 34 | EXPECT_EQ(123, Event_Get_Left(&info)); 35 | } 36 | -------------------------------------------------------------------------------- /src/gesture.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | 8 | #ifndef _GESTURE_H_ 9 | #define _GESTURE_H_ 10 | 11 | #include 12 | 13 | #include 14 | #include 15 | #include 16 | 17 | #include "libevdevc/libevdevc.h" 18 | #include "properties.h" 19 | 20 | enum SLOT_STATUS { 21 | SLOT_STATUS_FREE = 0, 22 | SLOT_STATUS_RAW, 23 | SLOT_STATUS_GESTURE 24 | }; 25 | 26 | typedef struct { 27 | GestureInterpreter* interpreter; /* The interpreter from Gestures lib */ 28 | DeviceIntPtr dev; 29 | struct FingerState *fingers; 30 | ValuatorMask *mask; 31 | int *slot_states; /* Leep track of slot usage between syn reports */ 32 | } GestureRec, *GesturePtr; 33 | 34 | int Gesture_Init(GesturePtr, size_t); 35 | void Gesture_Free(GesturePtr); 36 | 37 | /* 38 | * Pass Device specific properties to gestures 39 | */ 40 | void Gesture_Device_Init(GesturePtr, DeviceIntPtr); 41 | 42 | /* 43 | * Start performing gestures 44 | */ 45 | void Gesture_Device_On(GesturePtr); 46 | 47 | /* 48 | * Here we cancel performing gestures, forgetting the DeviceIntPtr we were 49 | * passed earlier, if any. 50 | */ 51 | void Gesture_Device_Off(GesturePtr); 52 | 53 | /* 54 | * Called to perform cleanup when the X server is closing the device. 55 | */ 56 | void Gesture_Device_Close(GesturePtr); 57 | 58 | /* 59 | * Sends the current hardware state to the Gestures library. 60 | */ 61 | void Gesture_Process_Slots(void*, EventStatePtr, struct timeval*); 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /src/properties.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 3 | * Use of this source code is governed by a BSD-style license that can be 4 | * found in the LICENSE file. 5 | */ 6 | 7 | #ifndef _PROPERTIES_H_ 8 | #define _PROPERTIES_H_ 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | #include 15 | 16 | 17 | typedef struct { 18 | int area_left; 19 | int area_right; 20 | int area_top; 21 | int area_bottom; 22 | int res_y; 23 | int res_x; 24 | int orientation_minimum; 25 | int orientation_maximum; 26 | int raw_passthrough; 27 | GesturesPropBool dump_debug_log; 28 | } CmtProperties, *CmtPropertiesPtr; 29 | 30 | int PropertiesInit(DeviceIntPtr); 31 | void PropertiesClose(DeviceIntPtr); 32 | 33 | extern GesturesPropProvider prop_provider; 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/test_main.cc: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #include 6 | 7 | int main(int argc, char **argv) { 8 | ::testing::InitGoogleTest(&argc, argv); 9 | return RUN_ALL_TESTS(); 10 | } 11 | -------------------------------------------------------------------------------- /src/test_stubs.c: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #include 6 | 7 | #include 8 | #include 9 | 10 | // Provide these symbols for unittests 11 | 12 | int GetMotionHistorySize(void) { 13 | return 0; 14 | } 15 | 16 | Bool InitPointerDeviceStruct(DevicePtr device, 17 | CARD8* map, 18 | int numButtons, 19 | Atom* btn_labels, 20 | PtrCtrlProcPtr controlProc, 21 | int numMotionEvents, 22 | int numAxes, 23 | Atom* axes_labels) { 24 | return 0; 25 | } 26 | 27 | Atom MakeAtom(const char* string, 28 | unsigned len, 29 | Bool makeit) { 30 | return 0; 31 | } 32 | 33 | const char* NameForAtom(Atom atom) { 34 | return ""; 35 | } 36 | 37 | void TimerCancel(OsTimerPtr pTimer) { 38 | return; 39 | } 40 | 41 | void TimerFree(OsTimerPtr pTimer) { 42 | return; 43 | } 44 | 45 | OsTimerPtr TimerSet(OsTimerPtr timer, 46 | int flags, 47 | CARD32 millis, 48 | OsTimerCallback func, 49 | pointer arg) { 50 | return timer; 51 | } 52 | 53 | void xf86AddEnabledDevice(InputInfoPtr pInfo) { 54 | return; 55 | } 56 | 57 | void xf86AddInputDriver(InputDriverPtr driver, pointer module, int flags) { 58 | return; 59 | } 60 | 61 | InputInfoPtr xf86AllocateInput(InputDriverPtr drv, int flags) { 62 | return NULL; 63 | } 64 | 65 | int xf86BlockSIGIO(void) { 66 | return 0; 67 | } 68 | 69 | char* xf86CheckStrOption(pointer optlist, const char* name, char* deflt) { 70 | return deflt; 71 | } 72 | 73 | void xf86CollectInputOptions(InputInfoPtr pInfo, 74 | const char** defaultOpts, pointer extraOpts) { 75 | return; 76 | } 77 | 78 | void xf86DeleteInput(InputInfoPtr pInp, int flags) { 79 | return; 80 | } 81 | 82 | int xf86FlushInput(int fd) { 83 | return 0; 84 | } 85 | 86 | void xf86IDrvMsg(LocalDevicePtr dev, MessageType type, 87 | const char* format, ...) { 88 | va_list args; 89 | va_start(args, format); 90 | LogMessageVerbSigSafe(type, -1, format, args); 91 | va_end(args); 92 | } 93 | 94 | void xf86IDrvMsgVerb(LocalDevicePtr dev, MessageType type, int verb, 95 | const char* format, ...) { 96 | va_list args; 97 | va_start(args, format); 98 | LogMessageVerbSigSafe(type, verb, format, args); 99 | va_end(args); 100 | } 101 | 102 | void xf86InitValuatorAxisStruct(DeviceIntPtr dev, int axnum, Atom label, 103 | int minval, int maxval, int resolution, 104 | int min_res, int max_res) { 105 | return; 106 | } 107 | 108 | void xf86InitValuatorDefaults(DeviceIntPtr dev, int axnum) { 109 | return; 110 | } 111 | 112 | void xf86MsgVerb(int unused1, int unused2, const char* fmt, ...) { 113 | va_list args; 114 | va_start(args, fmt); 115 | vfprintf(stdout, fmt, args); 116 | va_end(args); 117 | } 118 | 119 | void xf86PostButtonEvent(DeviceIntPtr device, int is_absolute, int button, 120 | int is_down, int first_valuator, 121 | int num_valuators, ...) { 122 | printf("PostButtonEvent: %d %d %d %d\n", 123 | is_absolute, button, is_down, first_valuator, num_valuators); 124 | } 125 | 126 | void xf86PostMotionEvent(DeviceIntPtr device, int is_absolute, 127 | int first_valuator, int num_valuators, ...) { 128 | printf("PostMotionEvent: %d %d %d %d\n", 129 | is_absolute, first_valuator, num_valuators); 130 | } 131 | 132 | void xf86ProcessCommonOptions(InputInfoPtr pInfo, pointer options) { 133 | return; 134 | } 135 | 136 | void xf86RemoveEnabledDevice(InputInfoPtr pInfo) { 137 | return; 138 | } 139 | 140 | int xf86SetBoolOption(pointer list, const char* name, int deflt) { 141 | return deflt; 142 | } 143 | 144 | int xf86SetIntOption(pointer optlist, const char* name, int deflt) { 145 | return deflt; 146 | } 147 | 148 | double xf86SetRealOption(pointer optlist, const char* name, double deflt) { 149 | return deflt; 150 | } 151 | 152 | char* xf86SetStrOption(pointer optlist, const char* name, char* deflt) { 153 | return deflt; 154 | } 155 | 156 | void xf86UnblockSIGIO(int s) { 157 | return; 158 | } 159 | 160 | void xf86VIDrvMsgVerb(LocalDevicePtr dev, MessageType type, int verb, 161 | const char* format, va_list args) { 162 | vprintf(format, args); 163 | } 164 | 165 | int XIChangeDeviceProperty(DeviceIntPtr dev, 166 | Atom property, 167 | Atom type, 168 | int format, 169 | int mode, 170 | unsigned long len, 171 | pointer value, 172 | Bool sendevent) { 173 | return 0; 174 | } 175 | 176 | int XIDeleteDeviceProperty(DeviceIntPtr device, 177 | Atom property, 178 | Bool fromClient) { 179 | return 0; 180 | } 181 | 182 | Atom XIGetKnownProperty(char* name) { 183 | return 0; 184 | } 185 | 186 | long XIRegisterPropertyHandler( 187 | DeviceIntPtr dev, 188 | int (*SetProperty) (DeviceIntPtr dev, 189 | Atom property, 190 | XIPropertyValuePtr prop, 191 | BOOL checkonly), 192 | int (*GetProperty) (DeviceIntPtr dev, 193 | Atom property), 194 | int (*DeleteProperty) (DeviceIntPtr dev, 195 | Atom property)) { 196 | return 0; 197 | } 198 | 199 | int XISetDevicePropertyDeletable(DeviceIntPtr dev, 200 | Atom property, 201 | Bool deletablekF2) { 202 | return 0; 203 | } 204 | 205 | void XIUnregisterPropertyHandler(DeviceIntPtr dev, long id) { 206 | return; 207 | } 208 | -------------------------------------------------------------------------------- /xorg-cmt.pc.in: -------------------------------------------------------------------------------- 1 | sdkdir=@sdkdir@ 2 | 3 | Name: xorg-cmt 4 | Description: X.Org cmt input driver. 5 | Version: @PACKAGE_VERSION@ 6 | Cflags: -I${sdkdir} 7 | -------------------------------------------------------------------------------- /xorg-conf/20-mouse.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "generic mouse for Chromium OS" 3 | MatchIsPointer "on" 4 | MatchDevicePath "/dev/input/event*" 5 | Driver "cmt" 6 | Option "AccelerationProfile" "-1" 7 | Option "AccelerationScheme" "none" 8 | Option "AccelerationNumerator" "0" 9 | Option "AccelerationDenominator" "1" 10 | Option "AccelerationThreshold" "0" 11 | Option "Mouse Accel Curves" "1" 12 | Option "Mouse Scroll Curves" "1" 13 | 14 | # CMT devices potentially process keyboard events 15 | Option "XkbModel" "pc" 16 | Option "XkbLayout" "us" 17 | 18 | Option "Accel Min dt" "0.0001" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "Evdev for Elo TouchScreen" 23 | # For Elo TouchSystems 2700 IntelliTouch(r). This is a single touch device 24 | # and we simulate it as a mouse pointer. 25 | MatchUSBID "04e7:0020" 26 | MatchDevicePath "/dev/input/event*" 27 | Driver "evdev" 28 | # This should make X configure the device as pointer instead of keyboard 29 | Option "IgnoreAbsoluteAxes" "false" 30 | # We want a slave pointer, rather than floating slave. 31 | Option "SendCoreEvents" "true" 32 | Option "Calibration" "55 4075 80 4060" 33 | Option "InvertY" "1" 34 | Option "InvertX" "1" 35 | EndSection 36 | 37 | Section "InputClass" 38 | Identifier "Evdev for 3M Touchscreen" 39 | MatchUSBID "0596:0001" 40 | MatchDevicePath "/dev/input/event*" 41 | MatchProduct "3M USB Touchscreen - EX II" 42 | Driver "evdev" 43 | Option "Calibration" "2384 14000 2945 13817" 44 | Option "InvertX" "1" 45 | EndSection 46 | 47 | # Prevent ABS_MISC messages from going to Chrome. These contain battery 48 | # status, but currently look like mouse movement to Chrome. 49 | # There are two remotes, so we whitelist both 50 | Section "InputClass" 51 | Identifier "Evdev for GVC Remote 0471:21cc" 52 | MatchUSBID "0471:21cc" 53 | MatchDevicePath "/dev/input/event*" 54 | Driver "evdev" 55 | Option "IgnoreAbsoluteAxes" "true" 56 | EndSection 57 | 58 | Section "InputClass" 59 | Identifier "Evdev for GVC Remote 0471:20d9" 60 | MatchUSBID "0471:20d9" 61 | MatchDevicePath "/dev/input/event*" 62 | Driver "evdev" 63 | Option "IgnoreAbsoluteAxes" "true" 64 | EndSection 65 | 66 | Section "InputClass" 67 | Identifier "Odie Gamepad should be ignored" 68 | MatchUSBID "18d1:2c40" 69 | MatchDevicePath "/dev/input/event*" 70 | Option "Ignore" "true" 71 | EndSection 72 | 73 | Section "InputClass" 74 | Identifier "Thinkpad Compact USB Keyboard" 75 | MatchUSBID "17ef:6047" 76 | MatchDevicePath "/dev/input/event*" 77 | Option "Mouse CPI" "400" 78 | Option "Device Touchpad" "0" 79 | EndSection 80 | 81 | Section "InputClass" 82 | Identifier "Thinkpad Compact USB Keyboard - Bluetooth" 83 | MatchUSBID "17ef:6048" 84 | MatchDevicePath "/dev/input/event*" 85 | Option "Mouse CPI" "400" 86 | Option "Device Touchpad" "0" 87 | EndSection 88 | 89 | # The following sections are mouse CPI settings for various mice that has a CPI 90 | # value significantly different from our default (1000). 91 | # 92 | # WARNING: Sections that match a more general class of devices should be placed 93 | # in front of narrower ones, especially if they may both match a specific 94 | # device. This is because conf files are parsed and matched from top to bottom. 95 | # Property values in sections that appear later will override ones that appear 96 | # earlier. 97 | Section "InputClass" 98 | Identifier "PS/2 IBM Trackpoint" 99 | MatchUSBID "0002:000a" 100 | MatchDevicePath "/dev/input/event*" 101 | Option "Mouse CPI" "400" 102 | EndSection 103 | 104 | Section "InputClass" 105 | Identifier "Microsoft Corp. Trackball Explorer*" 106 | MatchUSBID "045e:0024" 107 | MatchDevicePath "/dev/input/event*" 108 | Option "Mouse CPI" "800" 109 | EndSection 110 | 111 | Section "InputClass" 112 | Identifier "Microsoft Corp. Wheel Mouse Optical" 113 | MatchUSBID "045e:0040" 114 | MatchDevicePath "/dev/input/event*" 115 | Option "Mouse CPI" "416" 116 | EndSection 117 | 118 | Section "InputClass" 119 | Identifier "Standard Dell" 120 | MatchUSBID "0461:4d22" 121 | MatchDevicePath "/dev/input/event*" 122 | Option "Mouse CPI" "474" 123 | EndSection 124 | 125 | Section "InputClass" 126 | Identifier "Old Logitech Mice (copying 0xc00f setting)" 127 | MatchUSBID "046d:c00*" 128 | MatchDevicePath "/dev/input/event*" 129 | Option "Mouse CPI" "385" 130 | EndSection 131 | 132 | Section "InputClass" 133 | Identifier "Logitech Trackballs*" 134 | MatchUSBID "046d:c40*" 135 | MatchDevicePath "/dev/input/event*" 136 | Option "Mouse CPI" "600" 137 | EndSection 138 | 139 | Section "InputClass" 140 | Identifier "M570 trackball[u]" 141 | MatchUSBID "046d:1028" 142 | MatchDevicePath "/dev/input/event*" 143 | Option "Mouse CPI" "1200" 144 | EndSection 145 | 146 | Section "InputClass" 147 | Identifier "K400 touchpad[u]" 148 | MatchUSBID "046d:400e" 149 | MatchDevicePath "/dev/input/event*" 150 | Option "Mouse CPI" "800" 151 | EndSection 152 | 153 | Section "InputClass" 154 | Identifier "K400r touchpad[u]" 155 | MatchUSBID "046d:4024" 156 | MatchDevicePath "/dev/input/event*" 157 | Option "Mouse CPI" "800" 158 | EndSection 159 | 160 | Section "InputClass" 161 | Identifier "Logitech MouseMan Traveler/Mobile" 162 | MatchUSBID "046d:c00f" 163 | MatchDevicePath "/dev/input/event*" 164 | Option "Mouse CPI" "385" 165 | EndSection 166 | 167 | Section "InputClass" 168 | Identifier "HP branded - Logitech Optical USB Mouse" 169 | MatchUSBID "046d:c014" 170 | MatchDevicePath "/dev/input/event*" 171 | Option "Mouse CPI" "425" 172 | EndSection 173 | 174 | Section "InputClass" 175 | Identifier "HP branded - Logitech, Inc. Optical Wheel Mouse" 176 | MatchUSBID "046d:c016" 177 | MatchDevicePath "/dev/input/event*" 178 | Option "Mouse CPI" "377" 179 | EndSection 180 | 181 | Section "InputClass" 182 | Identifier "Logitech, Inc. Optical Wheel Mouse - model M-UAE96" 183 | MatchUSBID "046d:c018" 184 | MatchDevicePath "/dev/input/event*" 185 | Option "Mouse CPI" "530" 186 | EndSection 187 | 188 | Section "InputClass" 189 | Identifier "Logitech M-BT96a Pilot Optical Mouse" 190 | MatchUSBID "046d:c03d" 191 | MatchDevicePath "/dev/input/event*" 192 | Option "Mouse CPI" "434" 193 | EndSection 194 | 195 | Section "InputClass" 196 | Identifier "Logitech Premium Optical Wheel Mouse (M-BT58)" 197 | MatchUSBID "046d:c03e" 198 | MatchDevicePath "/dev/input/event*" 199 | Option "Mouse CPI" "464" 200 | EndSection 201 | 202 | Section "InputClass" 203 | Identifier "HP branded - Logitech USB Optical Mouse" 204 | MatchUSBID "046d:c077" 205 | MatchDevicePath "/dev/input/event*" 206 | Option "Mouse CPI" "580" 207 | EndSection 208 | 209 | Section "InputClass" 210 | Identifier "Cordless Trackball" 211 | MatchUSBID "046d:c508" 212 | MatchDevicePath "/dev/input/event*" 213 | Option "Mouse CPI" "600" 214 | EndSection 215 | 216 | Section "InputClass" 217 | Identifier "Kensington Turbo Mouse Pro (trackball)*" 218 | MatchUSBID "047d:1002" 219 | MatchDevicePath "/dev/input/event*" 220 | Option "Mouse CPI" "600" 221 | EndSection 222 | 223 | Section "InputClass" 224 | Identifier "Kensington Orbit TrackBall (trackball)*" 225 | MatchUSBID "047d:1003" 226 | MatchDevicePath "/dev/input/event*" 227 | Option "Mouse CPI" "600" 228 | EndSection 229 | 230 | Section "InputClass" 231 | Identifier "Kensington TurboBall (trackball)*" 232 | MatchUSBID "047d:1005" 233 | MatchDevicePath "/dev/input/event*" 234 | Option "Mouse CPI" "600" 235 | EndSection 236 | 237 | Section "InputClass" 238 | Identifier "Kensington TurboRing (trackball)*" 239 | MatchUSBID "047d:1006" 240 | MatchDevicePath "/dev/input/event*" 241 | Option "Mouse CPI" "600" 242 | EndSection 243 | 244 | Section "InputClass" 245 | Identifier "Kensington Orbit TrackBall for Mac (trackball)*" 246 | MatchUSBID "047d:1009" 247 | MatchDevicePath "/dev/input/event*" 248 | Option "Mouse CPI" "600" 249 | EndSection 250 | 251 | Section "InputClass" 252 | Identifier "Kensington Expert Mouse (trackball)*" 253 | MatchUSBID "047d:1020" 254 | MatchDevicePath "/dev/input/event*" 255 | Option "Mouse CPI" "600" 256 | EndSection 257 | 258 | Section "InputClass" 259 | Identifier "Kensington SlimBlade Trackball (trackball)*" 260 | MatchUSBID "047d:2041" 261 | MatchDevicePath "/dev/input/event*" 262 | Option "Mouse CPI" "600" 263 | EndSection 264 | 265 | Section "InputClass" 266 | Identifier "FAVI Wireless Keyboard (TouchPad)*" 267 | MatchUSBID "04d9:2519" 268 | MatchDevicePath "/dev/input/event*" 269 | Option "Mouse CPI" "800" 270 | EndSection 271 | 272 | Section "InputClass" 273 | Identifier "Apple mice (other)" 274 | MatchUSBID "05ac:*" 275 | MatchDevicePath "/dev/input/event*" 276 | Option "Mouse CPI" "373" 277 | EndSection 278 | 279 | Section "InputClass" 280 | Identifier "Apple USB Optical Mouse (Mighty Mouse)" 281 | MatchUSBID "05ac:0304" 282 | MatchDevicePath "/dev/input/event*" 283 | Option "Mouse CPI" "400" 284 | EndSection 285 | 286 | Section "InputClass" 287 | Identifier "Apple BT Optical Mouse (Mighty Mouse)" 288 | MatchUSBID "05ac:030c" 289 | MatchDevicePath "/dev/input/event*" 290 | Option "Mouse CPI" "400" 291 | EndSection 292 | 293 | Section "InputClass" 294 | Identifier "Apple magicmouse (BT)" 295 | MatchUSBID "05ac:030d" 296 | MatchDevicePath "/dev/input/event*" 297 | Option "Mouse CPI" "1780" 298 | EndSection 299 | 300 | Section "InputClass" 301 | Identifier "USB IBM Trackpoint" 302 | MatchUSBID "06cb:0009" 303 | MatchDevicePath "/dev/input/event*" 304 | Option "Mouse CPI" "400" 305 | EndSection 306 | 307 | Section "InputClass" 308 | Identifier "FAVI Wireless Keyboard (TouchPad), Bluetooth*" 309 | MatchUSBID "0a5c:8502" 310 | MatchDevicePath "/dev/input/event*" 311 | Option "Mouse CPI" "800" 312 | EndSection 313 | 314 | Section "InputClass" 315 | Identifier "FAVI Entertainment Wireless Keyboard (TouchPad)*" 316 | MatchUSBID "0c45:7000" 317 | MatchDevicePath "/dev/input/event*" 318 | Option "Mouse CPI" "800" 319 | EndSection 320 | 321 | Section "InputClass" 322 | Identifier "Razer USA, Ltd DeathAdder RZ01-0015" 323 | MatchUSBID "1532:0016" 324 | MatchDevicePath "/dev/input/event*" 325 | Option "Mouse CPI" "1714" 326 | EndSection 327 | 328 | Section "InputClass" 329 | Identifier "Razer USA, Ltd Mamba" 330 | MatchUSBID "1532:0045" 331 | MatchDevicePath "/dev/input/event*" 332 | Option "Mouse CPI" "4280" 333 | EndSection 334 | 335 | Section "InputClass" 336 | Identifier "Lenovo ThinkPad Keyboard w/ TrackPoint" 337 | MatchUSBID "17ef:6009" 338 | MatchDevicePath "/dev/input/event*" 339 | Option "Mouse CPI" "400" 340 | EndSection 341 | 342 | Section "InputClass" 343 | Identifier "Lenovo N5901 multimedia keyboard/trackball*" 344 | MatchUSBID "17ef:6014" 345 | MatchDevicePath "/dev/input/event*" 346 | Option "Mouse CPI" "800" 347 | EndSection 348 | 349 | Section "InputClass" 350 | Identifier "Lenovo N5902 multimedia keyboard/OFN*" 351 | MatchUSBID "17ef:602b" 352 | MatchDevicePath "/dev/input/event*" 353 | Option "Mouse CPI" "800" 354 | EndSection 355 | 356 | Section "InputClass" 357 | Identifier "Lenovo Compact Keyboard Trackpoint" 358 | MatchUSBID "17ef:6047" 359 | MatchDevicePath "/dev/input/event*" 360 | Option "Mouse CPI" "400" 361 | EndSection 362 | 363 | Section "InputClass" 364 | Identifier "Riitek Rii Mote i6 (TouchPad)*" 365 | MatchUSBID "1997:0409" 366 | MatchDevicePath "/dev/input/event*" 367 | Option "Mouse CPI" "800" 368 | EndSection 369 | 370 | Section "InputClass" 371 | Identifier "Dell Computer Corp. Optical Wheel Mouse" 372 | MatchUSBID "413c:3012" 373 | MatchDevicePath "/dev/input/event*" 374 | Option "Mouse CPI" "502" 375 | EndSection 376 | -------------------------------------------------------------------------------- /xorg-conf/20-touchscreen.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "non-core touchscreen catchall" 3 | MatchIsTouchscreen "on" 4 | MatchDevicePath "/dev/input/event*" 5 | Option "SendCoreEvents" "true" 6 | EndSection 7 | 8 | Section "InputClass" 9 | Identifier "Evdev for RNDPLUS TouchScreen" 10 | MatchUSBID "2512:5003" 11 | MatchDevicePath "/dev/input/event*" 12 | Driver "evdev" 13 | # This should make X configure the device as pointer instead of keyboard 14 | Option "IgnoreAbsoluteAxes" "false" 15 | EndSection 16 | 17 | -------------------------------------------------------------------------------- /xorg-conf/40-touchpad-cmt.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | Driver "cmt" 7 | Option "AccelerationProfile" "-1" 8 | Option "AccelerationScheme" "none" 9 | Option "AccelerationNumerator" "0" 10 | Option "AccelerationDenominator" "1" 11 | Option "AccelerationThreshold" "0" 12 | Option "AccelSpeed" "-1" 13 | 14 | Option "Scroll Buttons" "0" 15 | Option "Scroll Axes" "1" 16 | Option "Scroll X Out Scale" "0.1" 17 | Option "Scroll Y Out Scale" "0.1" 18 | 19 | #Some Tweaks by hugegreenbug 20 | Option "Tap Timeout" "0.4" 21 | Option "Tap Drag Enable" "1" 22 | Option "Tap Drag Delay" "0.06" 23 | Option "Pointer Sensitivity" "4" 24 | Option "Button Right Click Zone Enable" "0" 25 | 26 | # CMT devices potentially process keyboard events 27 | Option "XkbModel" "pc" 28 | Option "XkbLayout" "us" 29 | 30 | # Assume a frame interval to handle jitter on the bus 31 | Option "Accel Min dt" "0.003" 32 | EndSection 33 | 34 | Section "InputClass" 35 | Identifier "CMT for Synaptics Touchpad" 36 | MatchUSBID "06cb:*" 37 | MatchIsTouchpad "on" 38 | MatchDevicePath "/dev/input/event*" 39 | 40 | # default calibration values for Synaptics firmware 41 | Option "Pressure Calibration Offset" "-51.1766" 42 | Option "Pressure Calibration Slope" "1.7716" 43 | EndSection 44 | 45 | Section "InputClass" 46 | Identifier "CMT for Elan Touchpad" 47 | MatchUSBID "04f3:*" 48 | MatchIsTouchpad "on" 49 | MatchDevicePath "/dev/input/event*" 50 | 51 | # default calibration values for Elan firmware 52 | Option "Pressure Calibration Offset" "0.0" 53 | Option "Pressure Calibration Slope" "3.1416" 54 | 55 | # Devices with the default pressure calibration have a lower tap threshold 56 | Option "Tap Minimum Pressure" "10.0" 57 | EndSection 58 | 59 | Section "InputClass" 60 | Identifier "CMT for Google Centroiding Touchpad" 61 | MatchUSBID "18d1:*" 62 | MatchIsTouchpad "on" 63 | MatchDevicePath "/dev/input/event*" 64 | 65 | # default calibration values for Centroiding firmware 66 | Option "Pressure Calibration Offset" "0.0" 67 | Option "Pressure Calibration Slope" "3.1416" 68 | 69 | # Google Centroiding Touchpad has a lower tap threshold 70 | Option "Tap Minimum Pressure" "10.0" 71 | EndSection 72 | 73 | Section "InputClass" 74 | Identifier "CMT for Apple Magic Trackpad" 75 | MatchUSBID "05ac:030e" 76 | MatchDevicePath "/dev/input/event*" 77 | Option "Touchpad Stack Version" "1" 78 | # We are using raw touch major value as pressure value, so set the Palm 79 | # pressure threshold high. 80 | Option "Palm Pressure" "1000" 81 | Option "Compute Surface Area from Pressure" "0" 82 | Option "IIR b0" "1" 83 | Option "IIR b1" "0" 84 | Option "IIR b2" "0" 85 | Option "IIR b3" "0" 86 | Option "IIR a1" "0" 87 | Option "IIR a2" "0" 88 | # TODO(clchiou): Calibrate bias on X-axis 89 | Option "Touchpad Device Output Bias on X-Axis" "-283.3226025266607" 90 | Option "Touchpad Device Output Bias on Y-Axis" "-283.3226025266607" 91 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 92 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 93 | # Disable drumroll suppression 94 | Option "Drumroll Suppression Enable" "0" 95 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 96 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 97 | EndSection 98 | 99 | Section "InputClass" 100 | Identifier "CMT for Apple Magic Mouse" 101 | MatchUSBID "05ac:030d" 102 | MatchDevicePath "/dev/input/event*" 103 | Driver "cmt" 104 | Option "AccelerationProfile" "-1" 105 | Option "Scroll X Out Scale" "3" 106 | Option "Scroll Y Out Scale" "3" 107 | Option "Compute Surface Area from Pressure" "0" 108 | Option "Max Allowed Pressure Change Per Sec" "170.0" 109 | Option "Max Hysteresis Pressure Per Sec" "170.0" 110 | Option "Max Finger Stationary Speed" "94.32" 111 | Option "Mouse Accel Curves" "1" 112 | Option "Mouse Scroll Curves" "0" 113 | Option "Box Width" "8.0" 114 | Option "Box Height" "1.0" 115 | # Resolution overrides: 116 | Option "Vertical Resolution" "40" 117 | Option "Horizontal Resolution" "45" 118 | # Assume a frame interval to handle jitter on the bus 119 | Option "Accel Min dt" "0.003" 120 | EndSection 121 | 122 | Section "InputClass" 123 | Identifier "CMT for Logitech Wireless Touchpad" 124 | MatchUSBID "046d:4011" 125 | MatchIsTouchpad "on" 126 | MatchDevicePath "/dev/input/event*" 127 | Option "Touchpad Stack Version" "1" 128 | Option "IIR b0" "1" 129 | Option "IIR b1" "0" 130 | Option "IIR b2" "0" 131 | Option "IIR b3" "0" 132 | Option "IIR a1" "0" 133 | Option "IIR a2" "0" 134 | Option "Pressure Calibration Offset" "-313.240741792594" 135 | Option "Pressure Calibration Slope" "4.39678062436752" 136 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 137 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 138 | Option "Palm Pressure" "100000.0" 139 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 140 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 141 | EndSection 142 | 143 | Section "InputClass" 144 | Identifier "CMT for Logitech T650" 145 | MatchUSBID "046d:4101" 146 | MatchIsTouchpad "on" 147 | MatchDevicePath "/dev/input/event*" 148 | Option "Touchpad Stack Version" "1" 149 | Option "IIR b0" "1" 150 | Option "IIR b1" "0" 151 | Option "IIR b2" "0" 152 | Option "IIR b3" "0" 153 | Option "IIR a1" "0" 154 | Option "IIR a2" "0" 155 | Option "Pressure Calibration Offset" "-0.439288351750068" 156 | Option "Pressure Calibration Slope" "3.05998553523335" 157 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 158 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 159 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 160 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 161 | EndSection 162 | 163 | Section "InputClass" 164 | Identifier "CMT for Logitech T651" 165 | MatchUSBID "046d:b00c" 166 | MatchIsTouchpad "on" 167 | MatchDevicePath "/dev/input/event*" 168 | Option "Touchpad Stack Version" "1" 169 | Option "IIR b0" "1" 170 | Option "IIR b1" "0" 171 | Option "IIR b2" "0" 172 | Option "IIR b3" "0" 173 | Option "IIR a1" "0" 174 | Option "IIR a2" "0" 175 | Option "Pressure Calibration Offset" "-4.46520447177073" 176 | Option "Pressure Calibration Slope" "3.21071719332644" 177 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 178 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 179 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 180 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 181 | EndSection 182 | 183 | Section "InputClass" 184 | Identifier "CMT for Logitech T620" 185 | MatchUSBID "046d:4027" 186 | MatchDevicePath "/dev/input/event*" 187 | Driver "cmt" 188 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 189 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 190 | Option "Box Width" "6" 191 | Option "Box Height" "1" 192 | Option "Drumroll Suppression Enable" "0" 193 | Option "Input Queue Max Delay" "0.0" 194 | Option "Mouse Accel Curves" "1" 195 | Option "Mouse Scroll Curves" "0" 196 | Option "AccelerationProfile" "-1" 197 | # Assume a frame interval to handle jitter on the bus 198 | Option "Accel Min dt" "0.003" 199 | EndSection 200 | 201 | Section "InputClass" 202 | Identifier "CMT for Logitech T400" 203 | MatchUSBID "046d:4026" 204 | MatchDevicePath "/dev/input/event*" 205 | Driver "cmt" 206 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 207 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 208 | Option "Box Width" "6" 209 | Option "Box Height" "1" 210 | Option "Drumroll Suppression Enable" "0" 211 | Option "Input Queue Max Delay" "0.0" 212 | Option "Mouse Accel Curves" "1" 213 | Option "Mouse Scroll Curves" "0" 214 | Option "AccelerationProfile" "-1" 215 | # Assume a frame interval to handle jitter on the bus 216 | Option "Accel Min dt" "0.003" 217 | EndSection 218 | 219 | Section "InputClass" 220 | Identifier "CMT for Logitech Bluetooth Touchmouse" 221 | MatchUSBID "046d:b00d" 222 | MatchDevicePath "/dev/input/event*" 223 | Driver "cmt" 224 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 225 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 226 | Option "Box Width" "6" 227 | Option "Box Height" "1" 228 | Option "Drumroll Suppression Enable" "0" 229 | Option "Input Queue Max Delay" "0.0" 230 | Option "Mouse Accel Curves" "1" 231 | Option "Mouse Scroll Curves" "0" 232 | Option "AccelerationProfile" "-1" 233 | # Assume a frame interval to handle jitter on the bus 234 | Option "Accel Min dt" "0.003" 235 | EndSection 236 | 237 | Section "InputClass" 238 | Identifier "CMT for Logitech TK820" 239 | MatchUSBID "046d:4102" 240 | MatchDevicePath "/dev/input/event*" 241 | Driver "cmt" 242 | Option "Touchpad Stack Version" "2" 243 | # Pressure jumps around a lot on this touchpad, so allow that: 244 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 245 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 246 | Option "Pressure Calibration Offset" "-18.8078435" 247 | Option "Pressure Calibration Slope" "2.466208137" 248 | EndSection 249 | 250 | Section "InputClass" 251 | Identifier "CMT for Stantum" 252 | MatchDevicePath "/dev/input/event*" 253 | MatchProduct "MTP_USB_Controller" 254 | Driver "cmt" 255 | Option "SendCoreEvents" "On" 256 | Option "IIR b0" "1" 257 | Option "IIR b1" "0" 258 | Option "IIR b2" "0" 259 | Option "IIR b3" "0" 260 | Option "IIR a1" "0" 261 | Option "IIR a2" "0" 262 | Option "IIR Distance Threshold" "1000" 263 | Option "Horizontal Resolution" "8" 264 | Option "Vertical Resolution" "10" 265 | Option "Two Finger Scroll Distance Thresh" "0.5" 266 | Option "Pressure Calibration Offset" "1.0" 267 | Option "Pressure Calibration Slope" "15.0" 268 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 269 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 270 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 271 | EndSection 272 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-aebl.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad aebl" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | Option "Touchpad Stack Version" "1" 7 | Option "Pressure Calibration Offset" "-19.1" 8 | Option "Pressure Calibration Slope" "2.53" 9 | Option "Input Queue Delay" "0.017" 10 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 11 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 12 | EndSection 13 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-alex.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad alex" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "SynPS/2 Synaptics TouchPad" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-42.2" 10 | Option "Pressure Calibration Slope" "1.61" 11 | Option "Tap Minimum Pressure" "15.0" 12 | Option "Input Queue Max Delay" "0.026" 13 | Option "Fling Stop Timeout" "0.04" 14 | # Bounds overrides: 15 | Option "Active Area Left" "1265" 16 | Option "Active Area Right" "5678" 17 | Option "Active Area Top" "1165" 18 | Option "Active Area Bottom" "4689" 19 | # Enable Stationary Classifier 20 | Option "Stationary Wiggle Filter Enabled" "1" 21 | # Disable IIR filter 22 | Option "IIR b0" "1" 23 | Option "IIR b1" "0" 24 | Option "IIR b2" "0" 25 | Option "IIR b3" "0" 26 | Option "IIR a1" "0" 27 | Option "IIR a2" "0" 28 | Option "IIR Distance Threshold" "1000" 29 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 30 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 31 | EndSection 32 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-banjo.conf: -------------------------------------------------------------------------------- 1 | # As banjo and yuna use the same TP, keep this file in sync with 2 | # 60-touchpad-cmt-auron_yuna.conf 3 | 4 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 5 | Section "InputClass" 6 | Identifier "touchpad banjo elan" 7 | MatchIsTouchpad "on" 8 | MatchDevicePath "/dev/input/event*" 9 | MatchProduct "Elan" 10 | Option "Integrated Touchpad" "1" 11 | Option "Touchpad Stack Version" "2" 12 | # Pressure calibration results: 13 | # Probe Diameter Measured Expected Calibrated 14 | # 0 3.90 31.34 11.95 -4.53 15 | # 1 5.70 36.59 25.52 19.51 16 | # 2 7.70 43.78 46.57 52.48 17 | # 3 9.90 52.41 76.98 92.02 18 | # 4 11.70 56.13 107.51 109.04 19 | # 5 13.90 90.85 151.75 268.14 20 | # 6 17.80 121.47 248.85 408.43 21 | Option "Pressure Calibration Offset" "-148.118845541" 22 | Option "Pressure Calibration Slope" "4.58167539518" 23 | Option "Tap Minimum Pressure" "3.0" 24 | EndSection 25 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-butterfly.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad butterfly" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad butterfly cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Integrated Touchpad" "1" 27 | Option "Pressure Calibration Offset" "-7.20313156370106" 28 | Option "Pressure Calibration Slope" "3.95266938056467" 29 | # Extra filters for Cyapa 30 | Option "Box Width" "1.0" 31 | Option "Box Height" "1.0" 32 | Option "Sensor Jump Filter Enable" "1" 33 | Option "Sensor Jump Min Dist Move" "0.9" 34 | Option "Sensor Jump Similar Multiplier Move" "1.5" 35 | Option "Sensor Jump Min Dist Non-Move" "0.3" 36 | Option "Adjust IIR History On Warp" "1" 37 | Option "Max Allowed Pressure Change Per Sec" "8000" 38 | Option "Max Hysteresis Pressure Per Sec" "8000" 39 | Option "Delay On Possible Liftoff" "1" 40 | Option "Input Queue Max Delay" "0.019" 41 | Option "Split Corrector Enabled" "1" 42 | Option "Palm Pressure" "250" 43 | EndSection 44 | 45 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-candy.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad candy elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Pressure Calibration Offset" "-252.665496298" 9 | Option "Pressure Calibration Slope" "4.02273395378" 10 | 11 | # Candy's touchpad often misses taps due to low pressure 12 | Option "Tap Minimum Pressure" "10.0" 13 | EndSection 14 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-caroline.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad caroline atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Tap Minimum Pressure" "15.0" 10 | # Pressure calibration results: 11 | # Probe Diameter Measured Expected Calibrated 12 | # 0 3.90 17.70 11.95 2.17 13 | # 1 5.70 25.00 25.52 20.05 14 | # 2 7.70 33.00 46.57 39.64 15 | # 3 9.90 53.00 76.98 88.63 16 | # 4 11.70 65.00 107.51 118.03 17 | # 5 13.90 69.57 151.75 129.23 18 | # 6 17.80 63.97 248.85 115.50 19 | Option "Pressure Calibration Offset" "-41.1882710243" 20 | Option "Pressure Calibration Slope" "2.44946377494" 21 | EndSection 22 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-cave.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad elan cave" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | 7 | Option "Zero Finger Click Enable" "0" 8 | EndSection 9 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-celes.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad celes atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Zero Finger Click Enable" "0" 10 | Option "Palm Pressure" "150" 11 | EndSection 12 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-clapper.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad clapper" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-176.919060998834" 10 | Option "Pressure Calibration Slope" "4.08573405069282" 11 | Option "Tap Minimum Pressure" "25.0" 12 | 13 | # Disable some causes of delay 14 | Option "IIR b0" "1" 15 | Option "IIR b1" "0" 16 | Option "IIR b2" "0" 17 | Option "IIR b3" "0" 18 | Option "IIR a1" "0" 19 | Option "IIR a2" "0" 20 | Option "IIR Distance Threshold" "1000" 21 | 22 | Option "Horizontal Resolution" "30" 23 | Option "Vertical Resolution" "28" 24 | 25 | # This prevents issues with fling not happening while scrolling 26 | # with a resting finger 27 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 28 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 29 | EndSection 30 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-cyan.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad cyan elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 36.53 11.95 -1.05 11 | # 1 5.70 39.96 25.52 17.04 12 | # 2 7.70 46.48 46.57 51.40 13 | # 3 9.90 52.48 76.98 83.01 14 | # 4 11.70 59.15 107.51 118.12 15 | # 5 13.90 74.65 151.75 199.77 16 | # 6 17.80 115.23 248.85 413.58 17 | Option "Pressure Calibration Offset" "-193.474994174" 18 | Option "Pressure Calibration Slope" "5.26809355904" 19 | 20 | Option "Palm Edge Zone Width" "2.5" 21 | Option "Tap Exclusion Border Width" "1.0" 22 | 23 | Option "Tap Minimum Pressure" "10.0" 24 | EndSection 25 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-daisy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | # This file holds the configuration for the Cypress pad. Atmel Lucas's use the 3 | # module from Pit exactly. As such, the Xorg configs for those Lucas's is in 4 | # the Pit config file which is also copied in by the ebuild 5 | Section "InputClass" 6 | Identifier "touchpad daisy cyapa" 7 | MatchIsTouchpad "on" 8 | MatchProduct "Cypress APA Trackpad (cyapa)" 9 | MatchDevicePath "/dev/input/event*" 10 | Option "Touchpad Stack Version" "1" 11 | Option "Integrated Touchpad" "1" 12 | 13 | # Disable some causes of delay 14 | Option "IIR b0" "1" 15 | Option "IIR b1" "0" 16 | Option "IIR b2" "0" 17 | Option "IIR b3" "0" 18 | Option "IIR a1" "0" 19 | Option "IIR a2" "0" 20 | Option "IIR Distance Threshold" "1000" 21 | Option "Two Finger Vertical Close Distance Thresh" "45.0" 22 | 23 | # The flexible case can cause accidental physical clicks 24 | Option "Zero Finger Click Enable" "0" 25 | 26 | Option "Pressure Calibration Offset" "-1.73338827637399" 27 | Option "Pressure Calibration Slope" "2.06326787767144" 28 | # Extra filters for Daisy 29 | Option "Box Width" "1.0" 30 | Option "Box Height" "1.0" 31 | Option "Sensor Jump Filter Enable" "1" 32 | Option "Sensor Jump Min Dist Non-Move" "0.3" 33 | Option "Sensor Jump Min Dist Move" "0.9" 34 | Option "Sensor Jump Similar Multiplier Move" "1.5" 35 | Option "Split Merge Max Movement" "6.5" 36 | Option "Merge Max Ratio" "0.5" 37 | Option "Max Allowed Pressure Change Per Sec" "4000" 38 | Option "Max Hysteresis Pressure Per Sec" "4000" 39 | Option "Delay On Possible Liftoff" "1" 40 | Option "Input Queue Max Delay" "0.019" 41 | Option "Split Corrector Enabled" "1" 42 | 43 | Option "Non-linearity correction data file" "/usr/share/gestures/daisy_linearity.dat" 44 | Option "Enable non-linearity correction" "0" 45 | 46 | # Increase the pressure diff threshold for 2f scroll 47 | Option "Two Finger Pressure Diff Thresh" "45" 48 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 49 | EndSection 50 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-elan.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad elan" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | Option "Touchpad Stack Version" "1" 7 | Option "Horizontal Resolution" "33" 8 | Option "Vertical Resolution" "33" 9 | Option "Integrated Touchpad" "1" 10 | Option "Input Queue Delay" "0.017" 11 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 12 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 13 | EndSection 14 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-elm.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad elm elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Zero Finger Click Enable" "0" 7 | EndSection 8 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-enguarde.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad enguarde elan" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | 8 | Option "Integrated Touchpad" "1" 9 | Option "Touchpad Stack Version" "2" 10 | 11 | Option "Pressure Calibration Offset" "-152.0904357738551" 12 | Option "Pressure Calibration Slope" "3.7648153768124164" 13 | Option "Tap Minimum Pressure" "25.0" 14 | EndSection 15 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-expresso.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad expresso elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Pressure Calibration Offset" "-202.966601404" 9 | Option "Pressure Calibration Slope" "4.14114942053" 10 | Option "Tap Minimum Pressure" "25.0" 11 | EndSection 12 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-falco.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad falco" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad falco cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-2.75341327136135" 27 | Option "Pressure Calibration Slope" "3.31191180624547" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "0.5" 30 | Option "Box Height" "0.5" 31 | Option "Max Allowed Pressure Change Per Sec" "2000.0" 32 | Option "Max Hysteresis Pressure Per Sec" "2000.0" 33 | Option "Quick Acceleration Factor" "5.0" 34 | 35 | Option "Sensor Jump Filter Enable" "1" 36 | Option "Sensor Jump Max Dist Non-Move" "6.0" 37 | Option "Sensor Jump Similar Multiplier Move" "1.6" 38 | EndSection 39 | 40 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-gandof.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad gandof elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 38.98 11.95 11.09 11 | # 1 5.70 43.83 25.52 27.00 12 | # 2 7.70 53.90 46.57 59.99 13 | # 3 9.90 62.70 76.98 88.85 14 | # 4 11.70 75.75 107.51 131.59 15 | # 5 13.90 85.98 151.75 165.14 16 | # 6 17.80 116.86 248.85 266.34 17 | Option "Pressure Calibration Offset" "-116.641766519" 18 | Option "Pressure Calibration Slope" "3.27718585036" 19 | 20 | Option "Palm Pressure" "150" 21 | Option "Tap Minimum Pressure 12.0" 22 | EndSection 23 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-glimmer.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad glimmer" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Pressure calibration results: 10 | # Probe Diameter Measured Expected Calibrated 11 | # 0 3.90 42.01 11.95 79.58 12 | # 1 5.70 47.68 25.52 87.00 13 | # 2 7.70 54.84 46.57 96.36 14 | # 3 9.90 62.91 76.98 106.92 15 | # 4 11.70 71.59 107.51 118.27 16 | # 5 13.90 50.48 151.75 90.66 17 | # 6 17.80 50.22 248.85 90.32 18 | Option "Pressure Calibration Offset" "24.6370546447" 19 | Option "Pressure Calibration Slope" "1.30789868894" 20 | Option "Tap Minimum Pressure" "25.0" 21 | Option "Max Allowed Pressure Change Per Sec" "900" 22 | 23 | # Disable some causes of delay 24 | Option "IIR b0" "1" 25 | Option "IIR b1" "0" 26 | Option "IIR b2" "0" 27 | Option "IIR b3" "0" 28 | Option "IIR a1" "0" 29 | Option "IIR a2" "0" 30 | Option "IIR Distance Threshold" "1000" 31 | 32 | Option "Horizontal Resolution" "30" 33 | Option "Vertical Resolution" "26" 34 | 35 | # This prevents issues with fling not happening while scrolling 36 | # with a resting finger 37 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 38 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 39 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 40 | 41 | Option "Min Scroll Dead Reckoning Distance" "0.1" 42 | Option "Max Stationary Move Speed" "47" 43 | Option "Max Stationary Move Speed Hysteresis" "2" 44 | Option "Max Stationary Move Suppress Distance" "1" 45 | EndSection 46 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-gnawty.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad gnawty elan" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | 8 | Option "Integrated Touchpad" "1" 9 | Option "Touchpad Stack Version" "2" 10 | 11 | Option "Pressure Calibration Offset" "-139.968517794835" 12 | Option "Pressure Calibration Slope" "3.523495034" 13 | Option "Tap Minimum Pressure" "25.0" 14 | 15 | Option "Min Scroll Dead Reckoning Distance" "0.1" 16 | Option "Max Stationary Move Speed" "47" 17 | Option "Max Stationary Move Speed Hysteresis" "2" 18 | Option "Max Stationary Move Suppress Distance" "2" 19 | EndSection 20 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-heli.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad heli elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 28.64 11.95 13.19 11 | # 1 5.70 30.63 25.52 18.93 12 | # 2 7.70 41.99 46.57 51.72 13 | # 3 9.90 50.70 76.98 76.86 14 | # 4 11.70 61.46 107.51 107.95 15 | # 5 13.90 77.25 151.75 153.52 16 | # 6 17.80 109.61 248.85 246.94 17 | Option "Pressure Calibration Offset" "-69.5123930744" 18 | Option "Pressure Calibration Slope" "2.88723188559" 19 | Option "Palm Edge Zone Width" "2.5" 20 | Option "Tap Exclusion Border Width" "1.0" 21 | Option "Tap Minimum Pressure" "25.0" 22 | EndSection 23 | 24 | Section "InputClass" 25 | Identifier "touchpad heli synaptics" 26 | MatchIsTouchpad "on" 27 | MatchDevicePath "/dev/input/event*" 28 | MatchProduct "SYN" 29 | Option "Integrated Touchpad" "1" 30 | Option "Touchpad Stack Version" "2" 31 | # Pressure calibration results: 32 | # Probe Diameter Measured Expected Calibrated 33 | # 0 3.90 32.73 11.95 -3.57 34 | # 1 5.70 36.74 25.52 14.74 35 | # 2 7.70 48.04 46.57 66.32 36 | # 3 9.90 51.95 76.98 84.21 37 | # 4 11.70 56.91 107.51 106.82 38 | # 5 13.90 62.28 151.75 131.36 39 | # 6 17.80 74.39 248.85 186.64 40 | Option "Pressure Calibration Offset" "-153.025789113" 41 | Option "Pressure Calibration Slope" "4.56625853475" 42 | Option "Tap Minimum Pressure" "5.0" 43 | EndSection 44 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-kaen.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad kaen" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | Option "Touchpad Stack Version" "1" 7 | Option "Pressure Calibration Offset" "-11.2" 8 | Option "Pressure Calibration Slope" "1.68" 9 | Option "Input Queue Delay" "0.017" 10 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 11 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 12 | EndSection 13 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-kevin.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad kevin atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Tap Minimum Pressure" "15.0" 10 | # Pressure calibration results: 11 | # Probe Diameter Measured Expected Calibrated 12 | # 0 3.90 17.70 11.95 2.17 13 | # 1 5.70 25.00 25.52 20.05 14 | # 2 7.70 33.00 46.57 39.64 15 | # 3 9.90 53.00 76.98 88.63 16 | # 4 11.70 65.00 107.51 118.03 17 | # 5 13.90 69.57 151.75 129.23 18 | # 6 17.80 63.97 248.85 115.50 19 | Option "Pressure Calibration Offset" "-41.1882710243" 20 | Option "Pressure Calibration Slope" "2.44946377494" 21 | EndSection 22 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-kip.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | 3 | # Configuration for classic Kip (with the original TP product_id 75.0) 4 | Section "InputClass" 5 | Identifier "touchpad kip" 6 | MatchIsTouchpad "on" 7 | MatchDevicePath "/dev/input/event*" 8 | MatchProduct "Elan" 9 | MatchUSBID "04f3:004b" 10 | 11 | Option "Integrated Touchpad" "1" 12 | Option "Touchpad Stack Version" "1" 13 | 14 | Option "Pressure Calibration Offset" "-144.44924745909" 15 | Option "Pressure Calibration Slope" "3.366831045" 16 | Option "Tap Minimum Pressure" "25.0" 17 | # Disable some causes of delay 18 | Option "IIR Distance Threshold" "1000" 19 | Option "Input Queue Delay" "0" 20 | EndSection 21 | 22 | # Configuration for Kip+ (with the Blaze TP product_id 72.0) 23 | Section "InputClass" 24 | Identifier "touchpad kip+" 25 | MatchIsTouchpad "on" 26 | MatchDevicePath "/dev/input/event*" 27 | MatchProduct "Elan" 28 | MatchUSBID "04f3:0048" 29 | 30 | Option "Integrated Touchpad" "1" 31 | Option "Touchpad Stack Version" "1" 32 | 33 | Option "Pressure Calibration Offset" "-107.6196094" 34 | Option "Pressure Calibration Slope" "2.97397953" 35 | Option "Tap Minimum Pressure" "25.0" 36 | EndSection 37 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-leon.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad leon" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad leon cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-4.01785085724002" 27 | Option "Pressure Calibration Slope" "1.97990685351742" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "0.5" 30 | Option "Box Height" "0.5" 31 | Option "Max Allowed Pressure Change Per Sec" "2000.0" 32 | Option "Max Hysteresis Pressure Per Sec" "2000.0" 33 | Option "Quick Acceleration Factor" "5.0" 34 | 35 | Option "Sensor Jump Filter Enable" "1" 36 | # Effectively disabled for moves: 37 | Option "Sensor Jump Max Dist Move" "1.0" 38 | Option "Sensor Jump Min Dist Move" "1.0" 39 | 40 | Option "Sensor Jump Max Dist Non-Move" "3.8" 41 | Option "Sensor Jump Min Dist Non-Move" "0.75" 42 | 43 | Option "Tap Minimum Pressure" "19.0" 44 | Option "Tap Move Distance" "4.8" 45 | 46 | Option "Smooth Accel" "1" 47 | EndSection 48 | 49 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-link.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad link" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel|cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | # The flexible case can cause accidental physical clicks 18 | Option "Zero Finger Click Enable" "0" 19 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 20 | EndSection 21 | 22 | Section "InputClass" 23 | Identifier "touchpad link cyapa" 24 | MatchIsTouchpad "on" 25 | MatchDevicePath "/dev/input/event*" 26 | MatchProduct "cyapa" 27 | Option "Pressure Calibration Offset" "-5.2469650828279" 28 | Option "Pressure Calibration Slope" "1.7398671681412" 29 | # Extra filters for Cyapa 30 | Option "Box Width" "1.0" 31 | Option "Box Height" "1.0" 32 | Option "Sensor Jump Filter Enable" "1" 33 | EndSection 34 | 35 | Section "InputClass" 36 | Identifier "touchpad link atmel" 37 | MatchIsTouchpad "on" 38 | MatchDevicePath "/dev/input/event*" 39 | MatchProduct "Atmel" 40 | Option "Pressure Calibration Offset" "-15.369282490859" 41 | Option "Pressure Calibration Slope" "1.3219851012421" 42 | # TODO(clchiou): Calibrate bias on X-axis 43 | Option "Touchpad Device Output Bias on X-Axis" "26.68917773528923" 44 | Option "Touchpad Device Output Bias on Y-Axis" "26.68917773528923" 45 | # We see lots of pressure changes under normal use, so raise thresholds 46 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 47 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 48 | # People complain that light tap clicks don't register 49 | Option "Tap Minimum Pressure" "21.0" 50 | Option "Box Width" "0.3" 51 | Option "Box Height" "0.3" 52 | # Fix for finger merge issue 53 | Option "Finger Merge Filter Enabled" "1" 54 | # Fix for finger split issue 55 | Option "Split Corrector Enabled" "1" 56 | Option "Split Merge Max Separation" "14" 57 | EndSection 58 | 59 | # Not CMT related. This is to enable TouchNoiseFilter on Pixel touchscreen. 60 | Section "InputClass" 61 | Identifier "Atmel touchscreen" 62 | MatchIsTouchscreen "on" 63 | MatchDevicePath "/dev/input/event*" 64 | MatchProduct "Atmel" 65 | Option "EnableTouchNoiseFilter" "1" 66 | EndSection 67 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-lulu.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad lulu synaptics" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "SYNA" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 39.31 11.95 7.78 11 | # 1 5.70 40.03 25.52 10.43 12 | # 2 7.70 50.45 46.57 48.76 13 | # 3 9.90 58.97 76.98 80.13 14 | # 4 11.70 70.19 107.51 121.41 15 | # 5 13.90 80.38 151.75 158.90 16 | # 6 17.80 120.61 248.85 306.98 17 | Option "Pressure Calibration Offset" "-136.896426947" 18 | Option "Pressure Calibration Slope" "3.68015979309" 19 | Option "Palm Pressure" "300.0" 20 | 21 | Option "Max Allowed Pressure Change Per Sec" "1250.0" 22 | Option "Max Hysteresis Pressure Per Sec" "1000.0" 23 | EndSection 24 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-lumpy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad lumpy" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel|cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad lumpy cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-4.0418716653545" 27 | Option "Pressure Calibration Slope" "1.9403694168841" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "1.0" 30 | Option "Box Height" "1.0" 31 | 32 | Option "Sensor Jump Filter Enable" "1" 33 | Option "Sensor Jump Min Dist Non-Move" "1.0" 34 | Option "Sensor Jump Min Dist Move" "1.0" 35 | Option "Sensor Jump No Warp Min Dist Move" "0.95" 36 | 37 | Option "Non-linearity correction data file" "/usr/share/gestures/lumpy_linearity.dat" 38 | Option "Enable non-linearity correction" "1" 39 | 40 | Option "Split Corrector Enabled" "1" 41 | EndSection 42 | 43 | Section "InputClass" 44 | Identifier "touchpad lumpy atmel" 45 | MatchIsTouchpad "on" 46 | MatchDevicePath "/dev/input/event*" 47 | MatchProduct "Atmel" 48 | Option "Pressure Calibration Offset" "-15.369282490859" 49 | Option "Pressure Calibration Slope" "1.3219851012421" 50 | # TODO(clchiou): Calibrate bias on X-axis 51 | Option "Touchpad Device Output Bias on X-Axis" "26.68917773528923" 52 | Option "Touchpad Device Output Bias on Y-Axis" "26.68917773528923" 53 | # We see lots of pressure changes under normal use, so raise thresholds 54 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 55 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 56 | EndSection 57 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-mario.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad mario" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "SynPS/2 Synaptics TouchPad" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-23.2" 10 | Option "Pressure Calibration Slope" "1.21" 11 | Option "Input Queue Delay" "0.017" 12 | # Bounds overrides: 13 | Option "Active Area Left" "1217" 14 | Option "Active Area Right" "5733" 15 | Option "Active Area Top" "1061" 16 | Option "Active Area Bottom" "4798" 17 | # Palm overrides: 18 | Option "Palm Pressure" "235.0" 19 | # SemiMT overrides: 20 | Option "SemiMT Correcting Filter Enable" "1" 21 | # Scroll Stationary Finger Distance overrides: 22 | Option "Scroll Stationary Finger Max Distance" "20.0" 23 | # Tapping Finger Min Separation Distance overrides: 24 | Option "Tap Min Separation" "0.0" 25 | # Max Pressure Change overrides: 26 | Option "Max Allowed Pressure Change Per Sec" "2200.0" 27 | Option "Max Hysteresis Pressure Per Sec" "1200.0" 28 | # Double Fling Buffer Depth due to 2x Interpolation 29 | Option "Fling Buffer Depth" "20" 30 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 31 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 32 | EndSection 33 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-orco.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad orco elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 38.92 11.95 2.28 11 | # 1 5.70 42.89 25.52 12.95 12 | # 2 7.70 59.70 46.57 58.09 13 | # 3 9.90 66.19 76.98 75.50 14 | # 4 11.70 82.64 107.51 119.69 15 | # 5 13.90 102.82 151.75 173.87 16 | # 6 17.80 115.53 248.85 207.99 17 | Option "Pressure Calibration Offset" "-102.203788083" 18 | Option "Pressure Calibration Slope" "2.68491671316" 19 | Option "Tap Minimum Pressure" "25.0" 20 | Option "Palm Edge Zone Width" "2.0" 21 | Option "Tap Exclusion Border Width" "1.0" 22 | EndSection 23 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-parrot.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad parrot" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad parrot cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-13.034105833098" 27 | Option "Pressure Calibration Slope" "1.847199617737" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "1.0" 30 | Option "Box Height" "1.0" 31 | Option "Sensor Jump Filter Enable" "1" 32 | Option "Merge Max Ratio" "0.63" 33 | Option "Split Merge Max Movement" "7.1" 34 | Option "Max Allowed Pressure Change Per Sec" "4000" 35 | Option "Max Hysteresis Pressure Per Sec" "4000" 36 | Option "Delay On Possible Liftoff" "1" 37 | Option "Input Queue Max Delay" "0.019" 38 | Option "Split Corrector Enabled" "1" 39 | # People complain that light tap clicks don't register 40 | Option "Tap Minimum Pressure" "10.0" 41 | # Peppy's touchpad has a higher friction than the others and its 42 | # height offset at the bottom edge is also larger, causing thumbs 43 | # to have lower pressure compared to other devices. 44 | # Thus, decrease related thresholds here. 45 | Option "Two Finger Pressure Diff Thresh" "20" 46 | Option "Two Finger Pressure Diff Factor" "1.3" 47 | EndSection 48 | 49 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-pbody.conf: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The Chromium OS Authors. All rights reserved. 2 | # Use of this source code is governed by a BSD-style license that can be 3 | # found in the LICENSE file. 4 | 5 | Section "InputClass" 6 | Identifier "touchpad pbody synaptics" 7 | MatchIsTouchpad "on" 8 | MatchDevicePath "/dev/input/event*" 9 | MatchProduct "virtual-touchpad" 10 | Option "Integrated Touchpad" "1" 11 | Option "Touchpad Stack Version" "2" 12 | # Pressure calibration results: 13 | # Probe Diameter Measured Expected Calibrated 14 | # 0 3.90 51.43 11.95 -2.70 15 | # 1 5.70 70.73 25.52 20.65 16 | # 2 7.70 92.22 46.57 46.65 17 | # 3 9.90 132.79 76.98 95.75 18 | # 4 11.70 143.07 107.51 108.18 19 | # 5 13.90 196.64 151.75 173.01 20 | # 6 17.80 250.78 248.85 238.51 21 | Option "Pressure Calibration Offset" "-64.9378194906" 22 | Option "Pressure Calibration Slope" "1.21002945926" 23 | EndSection 24 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-peppy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad peppy" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad peppy cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-10.1706452244229" 27 | Option "Pressure Calibration Slope" "1.82361892734539" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "1.0" 30 | Option "Box Height" "1.0" 31 | Option "Sensor Jump Filter Enable" "1" 32 | 33 | # TODO(adlr): Tune these two parameters: 34 | Option "Merge Max Ratio" "0.63" 35 | Option "Split Merge Max Movement" "7.1" 36 | 37 | Option "Max Allowed Pressure Change Per Sec" "4000" 38 | Option "Max Hysteresis Pressure Per Sec" "4000" 39 | Option "Delay On Possible Liftoff" "1" 40 | Option "Input Queue Max Delay" "0.019" 41 | Option "Split Corrector Enabled" "1" 42 | # People complain that light tap clicks don't register 43 | Option "Tap Minimum Pressure" "10.0" 44 | # Peppy's touchpad has a higher friction than the others and its 45 | # height offset at the bottom edge is also larger, causing thumbs 46 | # to have lower pressure compared to other devices. 47 | # Thus, decrease related thresholds here. 48 | Option "Two Finger Pressure Diff Thresh" "20" 49 | Option "Two Finger Pressure Diff Factor" "1.3" 50 | EndSection 51 | 52 | Section "InputClass" 53 | Identifier "touchpad peppy elan" 54 | MatchIsTouchpad "on" 55 | MatchDevicePath "/dev/input/event*" 56 | MatchProduct "Elan Touchpad" 57 | Option "Touchpad Stack Version" "1" 58 | 59 | Option "Pressure Calibration Offset" "-179.252581726842" 60 | Option "Pressure Calibration Slope" "4.33133444856914" 61 | 62 | Option "Tap Minimum Pressure" "15.0" 63 | 64 | EndSection 65 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-pi.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad pit atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-32.9238443200488" 10 | Option "Pressure Calibration Slope" "1.04389025281584" 11 | 12 | # Disable some causes of delay 13 | Option "IIR b0" "1" 14 | Option "IIR b1" "0" 15 | Option "IIR b2" "0" 16 | Option "IIR b3" "0" 17 | Option "IIR a1" "0" 18 | Option "IIR a2" "0" 19 | Option "IIR Distance Threshold" "1000" 20 | 21 | # The flexible case can cause accidental physical clicks 22 | Option "Zero Finger Click Enable" "0" 23 | 24 | Option "Palm Pressure" "120.0" 25 | Option "Palm Width" "26.0" 26 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 27 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 28 | EndSection 29 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-pit.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad pit atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-20.0256397754628" 10 | Option "Pressure Calibration Slope" "1.0709525531637" 11 | 12 | # Disable some causes of delay 13 | Option "IIR b0" "1" 14 | Option "IIR b1" "0" 15 | Option "IIR b2" "0" 16 | Option "IIR b3" "0" 17 | Option "IIR a1" "0" 18 | Option "IIR a2" "0" 19 | Option "IIR Distance Threshold" "1000" 20 | 21 | # The flexible case can cause accidental physical clicks 22 | Option "Zero Finger Click Enable" "0" 23 | 24 | # Some fingers were accidentally triggering palm detection 25 | Option "Palm Width" "26.0" 26 | Option "Palm Pressure" "150.0" 27 | 28 | # Taps tend to have low pressure readings on Pit 29 | Option "Tap Minimum Pressure" "15.0" 30 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 31 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 32 | EndSection 33 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-puppy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad puppy atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Driver "cmt" 9 | Option "Pressure Calibration Offset" "-15.369282490859" 10 | Option "Pressure Calibration Slope" "1.3219851012421" 11 | Option "Input Queue Delay" "0.017" 12 | # TODO(clchiou): Calibrate bias on X-axis 13 | Option "Touchpad Device Output Bias on X-Axis" "26.68917773528923" 14 | Option "Touchpad Device Output Bias on Y-Axis" "26.68917773528923" 15 | # We see lots of pressure changes under normal use, so raise thresholds 16 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 17 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 18 | # People complain that light tap clicks don't register 19 | Option "Tap Minimum Pressure" "21.0" 20 | Option "Box Width" "0.3" 21 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 22 | EndSection 23 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-quawks.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad quawks" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-137.3911345" 10 | Option "Pressure Calibration Slope" "3.607677033" 11 | Option "Tap Minimum Pressure" "25.0" 12 | EndSection 13 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-rambi.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad rambi elan" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Integrated Touchpad" "1" 8 | Option "Touchpad Stack Version" "2" 9 | Option "Pressure Calibration Offset" "-232.615476471713" 10 | Option "Pressure Calibration Slope" "4.5003322861445" 11 | Option "Tap Minimum Pressure" "25.0" 12 | 13 | # Resolution is not correctly reported by the device. 14 | Option "Horizontal Resolution" "30" 15 | Option "Vertical Resolution" "28" 16 | EndSection 17 | 18 | Section "InputClass" 19 | Identifier "touchpad rambi atmel" 20 | MatchIsTouchpad "on" 21 | MatchDevicePath "/dev/input/event*" 22 | MatchProduct "Atmel" 23 | Option "Touchpad Stack Version" "1" 24 | Option "Integrated Touchpad" "1" 25 | 26 | # Disable some causes of delay 27 | Option "IIR b0" "1" 28 | Option "IIR b1" "0" 29 | Option "IIR b2" "0" 30 | Option "IIR b3" "0" 31 | Option "IIR a1" "0" 32 | Option "IIR a2" "0" 33 | Option "IIR Distance Threshold" "1000" 34 | 35 | Option "Pressure Calibration Offset" "-30.8987555752642" 36 | Option "Pressure Calibration Slope" "3.04377880501995" 37 | # TODO(clchiou): Calibrate bias on X-axis 38 | Option "Touchpad Device Output Bias on X-Axis" "139.858245421079" 39 | Option "Touchpad Device Output Bias on Y-Axis" "139.858245421079" 40 | 41 | # We see lots of pressure changes under normal use, so raise thresholds 42 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 43 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 44 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 45 | 46 | # People complain that light tap clicks don't register 47 | Option "Tap Minimum Pressure" "21.0" 48 | 49 | # Fix for finger merge issue 50 | Option "Finger Merge Filter Enabled" "1" 51 | 52 | # Enable Stationary Wiggle Filter 53 | Option "Stationary Wiggle Filter Enabled" "1" 54 | Option "Finger Moving Energy" "0.002" 55 | Option "Finger Moving Hysteresis" "0.001" 56 | 57 | # Increase Change Timeout 58 | Option "Change Timeout" "0.1" 59 | 60 | # Raw data is a little unsteady, add box filter for smoother movement 61 | Option "Box Width" "0.3" 62 | Option "Box Height" "0.3" 63 | EndSection 64 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-samus.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad samus" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-8.345256186" 10 | Option "Pressure Calibration Slope" "1.006531862" 11 | Option "Tap Minimum Pressure" "-15.0" 12 | Option "Vertical Resolution" "8" 13 | Option "Horizontal Resolution" "9" 14 | 15 | Option "Palm Pressure" "120" 16 | Option "Tap Exclusion Border Width" "6" 17 | Option "Palm Edge Zone Width" "9" 18 | 19 | Option "Pressure Minimum Threshold" "-7.84" 20 | 21 | # Enable Stationary Wiggle Filter 22 | Option "Stationary Wiggle Filter Enabled" "1" 23 | Option "Finger Moving Energy" "0.04" 24 | Option "Finger Moving Hysteresis" "0.02" 25 | 26 | Option "Box Width" "0.5" 27 | Option "Box Height" "0.5" 28 | 29 | # Fix to prevent flings from stationary lifting fingers 30 | Option "Min Scroll Dead Reckoning Distance" "0.01" 31 | 32 | Option "Max Finger Stationary Speed" "50" 33 | 34 | Option "Tap Move Distance" "3.0" 35 | Option "Force Touch Count To Match Finger Count" "1" 36 | 37 | # Avoid palm motion 38 | Option "Palm Pointing Min Move Distance" "12.0" 39 | 40 | # New filtering logic shouldn't apply to this platform 41 | Option "Filter Low Pressure" "1" 42 | EndSection 43 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-spring.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad daisy_spring atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | 10 | # On the X-axis the pad does not report any values in 0-60 or 1899-1960 11 | Option "Active Area Left" "60" 12 | Option "Active Area Right" "1899" 13 | 14 | # Disable some causes of delay 15 | Option "IIR b0" "1" 16 | Option "IIR b1" "0" 17 | Option "IIR b2" "0" 18 | Option "IIR b3" "0" 19 | Option "IIR a1" "0" 20 | Option "IIR a2" "0" 21 | Option "IIR Distance Threshold" "1000" 22 | 23 | Option "Pressure Calibration Offset" "-24.7357019600736" 24 | Option "Pressure Calibration Slope" "2.99088029937309" 25 | # TODO(clchiou): Calibrate bias on X-axis 26 | Option "Touchpad Device Output Bias on X-Axis" "135.232093932954" 27 | Option "Touchpad Device Output Bias on Y-Axis" "135.232093932954" 28 | 29 | # We see lots of pressure changes under normal use, so raise thresholds 30 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 31 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 32 | 33 | # People complain that light tap clicks don't register 34 | Option "Tap Minimum Pressure" "21.0" 35 | 36 | # Fix for finger merge issue 37 | Option "Finger Merge Filter Enabled" "1" 38 | 39 | # Enable Stationary Wiggle Filter 40 | Option "Stationary Wiggle Filter Enabled" "1" 41 | Option "Finger Moving Energy" "0.002" 42 | Option "Finger Moving Hysteresis" "0.001" 43 | 44 | # Increase Change Timeout 45 | Option "Change Timeout" "0.1" 46 | EndSection 47 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-squawks.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad squawks" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-184.687501181294" 10 | Option "Pressure Calibration Slope" "4.23203213602057" 11 | Option "Tap Minimum Pressure" "25.0" 12 | # Disable some causes of delay 13 | Option "IIR b0" "1" 14 | Option "IIR b1" "0" 15 | Option "IIR b2" "0" 16 | Option "IIR b3" "0" 17 | Option "IIR a1" "0" 18 | Option "IIR a2" "0" 19 | Option "IIR Distance Threshold" "1000" 20 | 21 | # This prevents issues with fling not happening while scrolling 22 | # with a resting finger 23 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 24 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 25 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 26 | EndSection 27 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-stout.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad stout" 4 | MatchIsTouchpad "on" 5 | MatchProduct "SynPS/2 Synaptics TouchPad" 6 | MatchDevicePath "/dev/input/event*" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-46.5105265656204" 10 | Option "Pressure Calibration Slope" "1.5272358063547" 11 | # Bounds overrides: 12 | Option "Active Area Left" "1176" 13 | Option "Active Area Right" "5767" 14 | Option "Active Area Top" "413" 15 | Option "Active Area Bottom" "5534" 16 | # Resolution overrides: 17 | Option "Vertical Resolution" "142" 18 | Option "Horizontal Resolution" "62" 19 | # Reduce palm detection edge zone 20 | Option "Tap Exclusion Border Width" "1" 21 | Option "Palm Edge Zone Width" "2" 22 | # Disable some causes of delay 23 | Option "IIR b0" "1" 24 | Option "IIR b1" "0" 25 | Option "IIR b2" "0" 26 | Option "IIR b3" "0" 27 | Option "IIR a1" "0" 28 | Option "IIR a2" "0" 29 | Option "IIR Distance Threshold" "1000" 30 | # Pressure change overrides 31 | Option "Max Pressure Change Duration" "0.02" 32 | Option "Max Allowed Pressure Change Per Sec" "1200" 33 | Option "Max Hysteresis Pressure Per Sec" "1000" 34 | # Reduce min. tap pressure 35 | Option "Tap Minimum Pressure" "10" 36 | # Reduce max. wiggle distance 37 | Option "Wiggle Max Distance" "4.0" 38 | # Box dimension overrides 39 | Option "Box Width" "0.2" 40 | Option "Box Height" "0.2" 41 | # Enable Stationary Classifier 42 | Option "Stationary Wiggle Filter Enabled" "1" 43 | # Enable Liftoff Jump Filter 44 | Option "Delay On Possible Liftoff" "1" 45 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 46 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 47 | EndSection 48 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-swanky.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad swanky" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-120.0210825" 10 | Option "Pressure Calibration Slope" "3.119649569" 11 | Option "Tap Minimum Pressure" "15.0" 12 | Option "Max Allowed Pressure Change Per Sec" "2500" 13 | Option "Min Scroll Dead Reckoning Distance" "0.1" 14 | Option "Max Stationary Move Speed" "47" 15 | Option "Max Stationary Move Speed Hysteresis" "2" 16 | Option "Max Stationary Move Suppress Distance" "2" 17 | EndSection 18 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-veyron_speedy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad veyron_speedy" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Integrated Touchpad" "1" 8 | Option "Pressure Calibration Offset" "-109.9288325" 9 | Option "Pressure Calibration Slope" "3.383599522" 10 | Option "Tap Minimum Pressure" "5.0" 11 | EndSection 12 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-winky.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad winky atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-20.0256397754628" 10 | Option "Pressure Calibration Slope" "1.0709525531637" 11 | 12 | # Disable some causes of delay 13 | Option "IIR b0" "1" 14 | Option "IIR b1" "0" 15 | Option "IIR b2" "0" 16 | Option "IIR b3" "0" 17 | Option "IIR a1" "0" 18 | Option "IIR a2" "0" 19 | Option "IIR Distance Threshold" "1000" 20 | 21 | # The flexible case can cause accidental physical clicks 22 | Option "Zero Finger Click Enable" "0" 23 | 24 | # Some fingers were accidentally triggering palm detection 25 | Option "Palm Width" "26.0" 26 | Option "Palm Pressure" "150.0" 27 | 28 | # TODO(clchiou): Calibrate bias on X-axis 29 | Option "Touchpad Device Output Bias on X-Axis" "139.858245421079" 30 | Option "Touchpad Device Output Bias on Y-Axis" "139.858245421079" 31 | 32 | # We see lots of pressure changes under normal use, so raise thresholds 33 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 34 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 35 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 36 | 37 | # People complain that light tap clicks don't register 38 | Option "Tap Minimum Pressure" "21.0" 39 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 40 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 41 | 42 | # Fix for finger merge issue 43 | Option "Finger Merge Filter Enabled" "1" 44 | 45 | # Enable Stationary Wiggle Filter 46 | Option "Stationary Wiggle Filter Enabled" "1" 47 | Option "Finger Moving Energy" "0.002" 48 | Option "Finger Moving Hysteresis" "0.001" 49 | 50 | # Increase Change Timeout 51 | Option "Change Timeout" "0.1" 52 | 53 | # Raw data is a little unsteady, add box filter for smoother movement 54 | Option "Box Width" "0.3" 55 | Option "Box Height" "0.3" 56 | EndSection 57 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-wolf.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad wolf" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "cyapa" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | # Disable some causes of delay 10 | Option "IIR b0" "1" 11 | Option "IIR b1" "0" 12 | Option "IIR b2" "0" 13 | Option "IIR b3" "0" 14 | Option "IIR a1" "0" 15 | Option "IIR a2" "0" 16 | Option "IIR Distance Threshold" "1000" 17 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 18 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 19 | EndSection 20 | 21 | Section "InputClass" 22 | Identifier "touchpad wolf cyapa" 23 | MatchIsTouchpad "on" 24 | MatchDevicePath "/dev/input/event*" 25 | MatchProduct "cyapa" 26 | Option "Pressure Calibration Offset" "-8.39892421456803" 27 | Option "Pressure Calibration Slope" "2.65297826784859" 28 | # Extra filters for Cyapa 29 | Option "Box Width" "0.5" 30 | Option "Box Height" "0.5" 31 | Option "Sensor Jump Filter Enable" "1" 32 | Option "Palm Pressure" "140" 33 | 34 | # Copied from Peppy: 35 | Option "Merge Max Ratio" "0.63" 36 | Option "Split Merge Max Movement" "7.1" 37 | Option "Max Allowed Pressure Change Per Sec" "4000" 38 | Option "Max Hysteresis Pressure Per Sec" "4000" 39 | Option "Delay On Possible Liftoff" "1" 40 | Option "Input Queue Max Delay" "0.019" 41 | Option "Split Corrector Enabled" "1" 42 | Option "Tap Minimum Pressure" "10.0" 43 | EndSection 44 | 45 | Section "InputClass" 46 | Identifier "touchpad wolf elan" 47 | MatchIsTouchpad "on" 48 | MatchDevicePath "/dev/input/event*" 49 | MatchProduct "Elan Touchpad" 50 | 51 | Option "Pressure Calibration Offset" "-99.0724819158697" 52 | Option "Pressure Calibration Slope" "2.92199277366108" 53 | 54 | Option "Tap Minimum Pressure" "15.0" 55 | 56 | Option "Box Width" "0.1" 57 | Option "Box Height" "0.1" 58 | EndSection 59 | -------------------------------------------------------------------------------- /xorg-conf/50-touchpad-cmt-zgb.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad zgb" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "SynPS/2 Synaptics TouchPad" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-54.6" 10 | Option "Pressure Calibration Slope" "2.01" 11 | Option "Tap Minimum Pressure" "15.0" 12 | Option "Input Queue Delay" "0.017" 13 | Option "Input Queue Max Delay" "0.026" 14 | Option "Fling Stop Timeout" "0.04" 15 | # Bounds overrides: 16 | Option "Active Area Left" "1265" 17 | Option "Active Area Right" "5678" 18 | Option "Active Area Top" "1103" 19 | Option "Active Area Bottom" "4754" 20 | Option "Two Finger Vertical Close Distance Thresh" "35.0" 21 | Option "Fling Buffer Suppress Zero Length Scrolls" "0" 22 | EndSection 23 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-auron_paine.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad auron_paine elan" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Integrated Touchpad" "1" 8 | Option "Touchpad Stack Version" "2" 9 | # Pressure calibration results: 10 | # Probe Diameter Measured Expected Calibrated 11 | # 0 3.90 38.52 11.95 0.77 12 | # 1 5.70 46.84 25.52 22.53 13 | # 2 7.70 53.61 46.57 40.27 14 | # 3 9.90 63.62 76.98 66.45 15 | # 4 11.70 72.84 107.51 90.60 16 | # 5 13.90 106.35 151.75 178.29 17 | # 6 17.80 141.47 248.85 270.20 18 | Option "Pressure Calibration Offset" "-100.047728263" 19 | Option "Pressure Calibration Slope" "2.61720961911" 20 | Option "Tap Minimum Pressure" "3.5" 21 | EndSection 22 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-auron_yuna.conf: -------------------------------------------------------------------------------- 1 | # As banjo and yuna use the same TP, keep this file in sync with 2 | # 50-touchpad-cmt-banjo.conf 3 | 4 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 5 | Section "InputClass" 6 | Identifier "touchpad auron_yuna elan" 7 | MatchIsTouchpad "on" 8 | MatchDevicePath "/dev/input/event*" 9 | MatchProduct "Elan" 10 | Option "Integrated Touchpad" "1" 11 | Option "Touchpad Stack Version" "2" 12 | # Pressure calibration results: 13 | # Probe Diameter Measured Expected Calibrated 14 | # 0 3.90 31.95 11.95 -5.21 15 | # 1 5.70 37.21 25.52 18.34 16 | # 2 7.70 46.07 46.57 57.96 17 | # 3 9.90 53.55 76.98 91.47 18 | # 4 11.70 56.79 107.51 105.96 19 | # 5 13.90 90.87 151.75 258.51 20 | # 6 17.80 118.92 248.85 384.03 21 | Option "Pressure Calibration Offset" "-148.228249772" 22 | Option "Pressure Calibration Slope" "4.47591074851" 23 | Option "Tap Minimum Pressure" "5.0" 24 | EndSection 25 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-daisy_skate.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad daisy_skate atmel" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Atmel" 7 | Option "Touchpad Stack Version" "1" 8 | Option "Integrated Touchpad" "1" 9 | 10 | # On the X-axis the pad does not report any values in 0-60 or 1899-1960 11 | Option "Active Area Left" "60" 12 | Option "Active Area Right" "1899" 13 | 14 | # Disable some causes of delay 15 | Option "IIR b0" "1" 16 | Option "IIR b1" "0" 17 | Option "IIR b2" "0" 18 | Option "IIR b3" "0" 19 | Option "IIR a1" "0" 20 | Option "IIR a2" "0" 21 | Option "IIR Distance Threshold" "1000" 22 | 23 | Option "Pressure Calibration Offset" "-10.9886748152685" 24 | Option "Pressure Calibration Slope" "2.28311997706978" 25 | 26 | # We see lots of pressure changes under normal use, so raise thresholds 27 | Option "Max Allowed Pressure Change Per Sec" "100000.0" 28 | Option "Max Hysteresis Pressure Per Sec" "100000.0" 29 | 30 | # People complain that light tap clicks don't register 31 | Option "Tap Minimum Pressure" "21.0" 32 | 33 | # Fix for finger merge issue 34 | Option "Finger Merge Filter Enabled" "1" 35 | Option "Finger Merge Min Pressure" "22" 36 | Option "Finger Merge Minimum Touch Major" "320" 37 | Option "Merged Finger Suspicious Angle Min Displacement" "50" 38 | 39 | # Enable Stationary Wiggle Filter 40 | Option "Stationary Wiggle Filter Enabled" "1" 41 | Option "Finger Moving Energy" "0.002" 42 | Option "Finger Moving Hysteresis" "0.001" 43 | 44 | # Increase Change Timeout 45 | Option "Change Timeout" "0.1" 46 | EndSection 47 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-nyan_big.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad big" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan Touchpad" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | 10 | Option "Pressure Calibration Offset" "-148.8031431" 11 | Option "Pressure Calibration Slope" "3.691140721" 12 | 13 | Option "Tap Minimum Pressure" "15.0" 14 | Option "Max Allowed Pressure Change Per Sec" "5750" 15 | EndSection 16 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-nyan_blaze.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad blaze" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | 8 | Option "Integrated Touchpad" "1" 9 | Option "Touchpad Stack Version" "1" 10 | 11 | Option "Pressure Calibration Offset" "-107.6196094" 12 | Option "Pressure Calibration Slope" "2.97397953" 13 | Option "Tap Minimum Pressure" "25.0" 14 | EndSection 15 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-veyron_jaq.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad veyron_jaq elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Pressure Calibration Offset" "-143.311519575" 9 | Option "Pressure Calibration Slope" "3.79387204888" 10 | 11 | # Make tap-to-click easier 12 | Option "Tap Minimum Pressure" "15.0" 13 | 14 | # Enable Stationary Wiggle Filter 15 | Option "Stationary Wiggle Filter Enabled" "1" 16 | Option "Finger Moving Energy" "0.002" 17 | Option "Finger Moving Hysteresis" "0.001" 18 | 19 | # This prevents issues with fling not happening while scrolling 20 | # with a resting finger 21 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 22 | 23 | # Avoid accidental scroll/move on finger lift 24 | Option "Min Scroll Dead Reckoning Distance" "0.1" 25 | Option "Max Stationary Move Speed" "47" 26 | Option "Max Stationary Move Speed Hysteresis" "2" 27 | Option "Max Stationary Move Suppress Distance" "2" 28 | 29 | # Avoid janky cursor moves due to large pressure changes 30 | Option "Max Allowed Pressure Change Per Sec" "4000" 31 | EndSection 32 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-veyron_jerry.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad veyron_jerry elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 28.64 11.95 13.19 11 | # 1 5.70 30.63 25.52 18.93 12 | # 2 7.70 41.99 46.57 51.72 13 | # 3 9.90 50.70 76.98 76.86 14 | # 4 11.70 61.46 107.51 107.95 15 | # 5 13.90 77.25 151.75 153.52 16 | # 6 17.80 109.61 248.85 246.94 17 | Option "Pressure Calibration Offset" "-69.5123930744" 18 | Option "Pressure Calibration Slope" "2.88723188559" 19 | Option "Tap Minimum Pressure" "25.0" 20 | EndSection 21 | 22 | Section "InputClass" 23 | Identifier "touchpad veyron_jerry synaptics" 24 | MatchIsTouchpad "on" 25 | MatchDevicePath "/dev/input/event*" 26 | MatchProduct "06CB:7A3B" 27 | Option "Integrated Touchpad" "1" 28 | Option "Touchpad Stack Version" "2" 29 | # Pressure calibration results: 30 | # Probe Diameter Measured Expected Calibrated 31 | # 0 3.90 30.95 11.95 -14.65 32 | # 1 5.70 46.95 25.52 38.97 33 | # 2 7.70 52.97 46.57 59.14 34 | # 3 9.90 58.98 76.98 79.29 35 | # 4 11.70 66.88 107.51 105.77 36 | # 5 13.90 75.09 151.75 133.28 37 | # 6 17.80 92.83 248.85 192.73 38 | Option "Pressure Calibration Offset" "-118.366346519" 39 | Option "Pressure Calibration Slope" "3.35132249408" 40 | EndSection 41 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-veyron_mighty.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad veyron_mighty elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 38.87 11.95 -6.84 11 | # 1 5.70 49.32 25.52 32.81 12 | # 2 7.70 52.27 46.57 44.01 13 | # 3 9.90 61.65 76.98 79.57 14 | # 4 11.70 72.03 107.51 118.97 15 | # 5 13.90 106.45 151.75 249.55 16 | # 6 17.80 137.09 248.85 365.79 17 | Option "Pressure Calibration Offset" "-154.311519575" 18 | Option "Pressure Calibration Slope" "3.79387204888" 19 | 20 | # Make tap-to-click easier 21 | Option "Tap Minimum Pressure" "15.0" 22 | 23 | # Enable Stationary Wiggle Filter 24 | Option "Stationary Wiggle Filter Enabled" "1" 25 | Option "Finger Moving Energy" "0.002" 26 | Option "Finger Moving Hysteresis" "0.001" 27 | 28 | # This prevents issues with fling not happening while scrolling 29 | # with a resting finger 30 | Option "Fling Buffer Suppress Zero Length Scrolls" "1" 31 | 32 | # Avoid accidental scroll/move on finger lift 33 | Option "Min Scroll Dead Reckoning Distance" "0.1" 34 | Option "Max Stationary Move Speed" "47" 35 | Option "Max Stationary Move Speed Hysteresis" "2" 36 | Option "Max Stationary Move Suppress Distance" "2" 37 | 38 | # Avoid janky cursor moves due to large pressure changes 39 | Option "Max Allowed Pressure Change Per Sec" "4000" 40 | EndSection 41 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-veyron_minnie.conf: -------------------------------------------------------------------------------- 1 | Section "InputClass" 2 | Identifier "touchpad veyron_minnie elan" 3 | MatchIsTouchpad "on" 4 | MatchDevicePath "/dev/input/event*" 5 | MatchProduct "Elan" 6 | Option "Integrated Touchpad" "1" 7 | Option "Touchpad Stack Version" "2" 8 | # Pressure calibration results: 9 | # Probe Diameter Measured Expected Calibrated 10 | # 0 3.90 41.60 11.95 0.76 11 | # 1 5.70 45.56 25.52 17.01 12 | # 2 7.70 53.33 46.57 48.85 13 | # 3 9.90 61.28 76.98 81.49 14 | # 4 11.70 70.77 107.51 120.41 15 | # 5 13.90 83.73 151.75 173.57 16 | # 6 17.80 113.23 248.85 294.54 17 | Option "Pressure Calibration Offset" "-169.88225612" 18 | Option "Pressure Calibration Slope" "4.10174668386" 19 | Option "Tap Minimum Pressure" "25.0" 20 | EndSection 21 | -------------------------------------------------------------------------------- /xorg-conf/60-touchpad-cmt-veyron_speedy.conf: -------------------------------------------------------------------------------- 1 | # Configure touchpads to use Chromium Multitouch (cmt) X input driver 2 | Section "InputClass" 3 | Identifier "touchpad veyron_speedy" 4 | MatchIsTouchpad "on" 5 | MatchDevicePath "/dev/input/event*" 6 | MatchProduct "Elan" 7 | Option "Touchpad Stack Version" "2" 8 | Option "Integrated Touchpad" "1" 9 | Option "Pressure Calibration Offset" "-109.9288325" 10 | Option "Pressure Calibration Slope" "3.383599522" 11 | Option "Tap Minimum Pressure" "5.0" 12 | EndSection 13 | -------------------------------------------------------------------------------- /xorg-conf/exynos.conf: -------------------------------------------------------------------------------- 1 | Section "Device" 2 | Identifier "Mali FBDEV" 3 | Driver "armsoc" 4 | Option "fbdev" "/dev/fb0" 5 | Option "Fimg2DExa" "false" 6 | Option "DRI2" "true" 7 | Option "DRI2_PAGE_FLIP" "false" 8 | Option "DRI2_WAIT_VSYNC" "true" 9 | # Option "Fimg2DExaSolid" "false" 10 | # Option "Fimg2DExaCopy" "false" 11 | # Option "Fimg2DExaComposite" "false" 12 | Option "SWcursorLCD" "false" 13 | # Option "Debug" "true" 14 | EndSection 15 | 16 | Section "Screen" 17 | Identifier "DefaultScreen" 18 | Device "Mali FBDEV" 19 | DefaultDepth 24 20 | EndSection 21 | -------------------------------------------------------------------------------- /xorg-conf/files/daisy_linearity.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GalliumOS/xf86-input-cmt/6537abb193ab59a59b95c9511fa1c94d942b2c11/xorg-conf/files/daisy_linearity.dat -------------------------------------------------------------------------------- /xorg-conf/files/lumpy_linearity.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GalliumOS/xf86-input-cmt/6537abb193ab59a59b95c9511fa1c94d942b2c11/xorg-conf/files/lumpy_linearity.dat -------------------------------------------------------------------------------- /xorg-conf/rk32.conf: -------------------------------------------------------------------------------- 1 | Section "Device" 2 | Identifier "Mali FBDEV" 3 | Driver "armsoc" 4 | Option "fbdev" "/dev/fb0" 5 | Option "Fimg2DExa" "false" 6 | Option "DRI2" "true" 7 | Option "DRI2_PAGE_FLIP" "false" 8 | Option "DRI2_WAIT_VSYNC" "true" 9 | # Option "Fimg2DExaSolid" "false" 10 | # Option "Fimg2DExaCopy" "false" 11 | # Option "Fimg2DExaComposite" "false" 12 | Option "SWcursorLCD" "false" 13 | # Option "Debug" "true" 14 | EndSection 15 | 16 | Section "Screen" 17 | Identifier "DefaultScreen" 18 | Device "Mali FBDEV" 19 | DefaultDepth 24 20 | EndSection 21 | -------------------------------------------------------------------------------- /xorg-conf/tegra.conf: -------------------------------------------------------------------------------- 1 | Section "Module" 2 | Load "glx" 3 | EndSection 4 | 5 | Section "Device" 6 | Identifier "Tegra" 7 | Driver "nvidia" 8 | Option "ConstrainCursor" "false" 9 | Option "NoLogo" "true" 10 | 11 | # SeamlessTransitionFromSplash when set true, driver copies framebuffer 12 | # pixels to root window and if copy is successful then sets canDoBGNoneRoot 13 | # flag. The default framebuffer device used to read pixels is "/dev/fb0". 14 | 15 | Option "SeamlessTransitionFromSplash" "true" 16 | 17 | # PerHeadFlipping when set true, flips back-buffer of the updated 18 | # drawable to the head on which the drawable is fullscreen. 19 | 20 | Option "PerHeadFlipping" "true" 21 | 22 | # OverlayDepth is a 32-bit integer which is used to control overlay 23 | # stacking order. The overlay with the lowest depth is in front of 24 | # all others. This value has meaning only when multiple overlays are 25 | # present on a display. This value can range between 0 & 255 (both values 26 | # inclusive). The default being 255. 27 | 28 | # Option "OverlayDepth" "0" 29 | 30 | # OverlayCombineMode determines how the X overlay is combined with the 31 | # overlay behind it during scanout. Available modes are: Opaque 32 | # (default), SourceAlphaBlend, and PremultSourceAlphaBlend. This 33 | # value has meaning only when an external process has created a 34 | # display which is behind the X server. 35 | 36 | # Option "OverlayCombineMode" "PremultSourceAlphaBlend" 37 | 38 | # ARGBHWCursor controls whether the X driver uses an overlay to 39 | # display 32-bit "true-color" cursors, or whether such cursors are 40 | # emulated in software. Valid values are "true" to enable hardware 41 | # cursors, and "false" (default) to disable them. 42 | 43 | Option "ARGBHWCursor" "true" 44 | 45 | # Set the maximum number of pixmap caches used by the X driver. 46 | # Valid values are 0 through 16 (default) 47 | # A value of 0 disables the use of the caches for pixmaps. 48 | # To use less memory, but still retain performance, the recommendation 49 | # is to use one pixmap heap, set a small size, and limit the size 50 | # of the surfaces that utilizes the pixmap cache. 51 | # Option "PixmapCacheMaxHeaps" "1" 52 | 53 | # Set the size of each pixmap cache, in bytes. 54 | # Valid values are 64 KiB though 64 MiB. Up to 55 | # "PixmapCacheMaxHeaps" (see above) will be allocated 56 | # if necessary. The default value is 8 MiB. 57 | # Option "PixmapCacheSize" "65536" 58 | 59 | # Set the maximum size for a surface that uses 60 | # the pixmap cache. If a surface exceeds this size 61 | # it will be allocated as a separate allocation, outside 62 | # the pixmap cache. 63 | # The default value is the same as "PixmapCacheSize" 64 | # Option "PixmapCacheMaxSurfaceSize" "4096" 65 | 66 | # Use monitor section with identifier LVDS for output named LVDS-1 67 | # Option "monitor-LVDS-1" "LVDS" 68 | # Option "monitor-HDMI-1" "HDMI" 69 | EndSection 70 | 71 | Section "ServerFlags" 72 | Option "NoTrapSignals" "true" 73 | Option "DontZap" "false" 74 | 75 | # Disable DPMS timeouts. 76 | Option "StandbyTime" "0" 77 | Option "SuspendTime" "0" 78 | Option "OffTime" "0" 79 | 80 | # Disable screen saver timeout. 81 | Option "BlankTime" "0" 82 | EndSection 83 | 84 | --------------------------------------------------------------------------------