个人工具

UbuntuHelp:SynapticsTouchpad/ShortcutKey

来自Ubuntu中文

跳转至: 导航, 搜索

<<Include(Tag/StyleCleanup)>> <<Include(Tag/ContentCleanup)>>

Turning Synaptics Touchpads On/Off with a Shortcut Key

You may wish to turn the touchpad on or off so that it doesn't interfere with typing when using a USB or other mouse. Use following steps:

Step 1

Ubuntu version <= 8.04 (Hardy Heron)

from a terminal, edit /etc/xorg.conf

gksudo gedit /etc/X11/xorg.conf

and look for the following section of code:

Section "InputDevice"
	Identifier	"Synaptics Touchpad"
	Driver		"synaptics"
	Option		"SendCoreEvents"	"true"
	Option		"Device"		"/dev/psaux"
	Option		"Protocol"		"auto-dev"
	Option		"HorizScrollDelta"	"0"
EndSection

and add one more Option at the End of the Section:

	Option      	"SHMConfig" 		"on"
EndSection

If you are using an Alps-Touchpad, which you can find out by typing

cat /proc/bus/input/devices

your code section should look like this

Section "InputDevice"
  	Driver  	"synaptics"
  	Identifier  	"TouchPad"
  	Option		"SendCoreEvents"	"true"
	Option		"Device"		"/dev/input/event2"
  	Option		"Protocol"		"event"
  	Option          "SHMConfig"             "on"
EndSection

You can define some parameters which influence the behaviour of your touchpad. These parameters are presented already in UbuntuWiki:SynapticsTouchpadWartyHowto?highlight=_touchpad_. You can check if your touchpad works correct and you have the correct parameters with

synclient -m l

If everything works fine, the position of your finger will be updated everytime you move it and based on this information you can set your parameters.

Ubuntu 8.10 (Intrepid Ibex)

Ubuntu 8.10 (Intrepid Ibex) uses HAL, and so synaptic settings are placed in an fdi file instead of xorg.conf. To enable SHMConfig see here: UbuntuHelp:SynapticsTouchpad#shmconfig

Step 2

In this next part we will create a script to toggle the touchpad. There are a couple of ways to write the scripts to toggle the touchpad on and off. The first method uses Python, the second method uses a more simple bash script. Choose the one you like the most.

Step 2a

Next we will create 3 files - a bash script to turn the touchpad off, one to turn it on, and a python script to use a single key combination for both. At a terminal, cd to /usr/local/bin and make a new file:

cd /usr/local/bin
gksudo gedit tpoff

and paste the following code in the file, save it and close it.

#!/bin/bash
#

synclient touchpadoff=1 

again, make a new file:

gksudo gedit tpon

paste the following, save and close:

#!/bin/bash
#

synclient touchpadoff=0

once again, make a new file:

gksudo gedit touchpad.py

paste the following, save and close

#!/usr/bin/python
import os
	

def ReadFile():
	myfile = open('/tmp/synclient.tmp', 'rb')
	for line in myfile:
		TestString(line)		
	myfile.close()
    
def TestString(string):
	for word in string.split():
		if word == "TouchpadOff":
			setting = string.split()
			ChangeState(setting[2])
	

def ChangeState(current):    
	if current == "0":
		os.system("synclient touchpadoff=1")
	else:
		os.system("synclient touchpadoff=0")
	os.system("rm /tmp/synclient.tmp")

def Main():
	ReadFile()
os.system("synclient -l > /tmp/synclient.tmp")
Main()

and finally, change the permissions of these three files:

sudo chmod 755 tpon tpoff touchpad.py

Step 2b

First open a terminal and cd to /usr/local/bin and make a new file:

cd /usr/local/bin
gksudo gedit toggletouchpad

and paste the following code in the file, save it and close it.

#!/bin/bash
state=`synclient -l | fgrep TouchpadOff | sed 's/^.*= //'`
if [ $state -eq 1 ]
then
	synclient TouchpadOff=0
else
	synclient TouchpadOff=1
fi

Next, change the permissions of this file:

sudo chmod 755 toggletouchpad

Step 3

Next, edit your sudoers files to allow you to execute the script without a password.

sudo visudo

and add this line

{user}   ALL = NOPASSWD: /usr/local/bin/{script name}

where {user} is your user name and {script name} is the name of the script you created. save (in nano hit <CTRL> <o>), and make sure to save it as: /etc/sudoers and not /etc/sudoers.tmp

Step 4

Alternatively to setup bellow, you might use gnome-keybindings(In depth instructions, 4.) or other desktop-dependent tool. Next, install xbindkeys

sudo apt-get install xbindkeys

when it's done, install xbindkeys-config, the GUI for xbindkeys

sudo apt-get install xbindkeys-config

once each is installed, start both applications:

xbindkeys
and
xbindkeys-config

edit your file to the shortcut key you want. For example, to be able to switch the touchpad on/off by <Ctrl><F5>, fill in the following, under Edit: Name: Touchpad On/Off Key: Control + F5 | m:0x4 + c:71 Action: /usr/local/bin/touchpad.py then click apply & save & exit (change the script name in the 'Action' field if you used the other method.) Now that that is done, restart xbindkeys:

xbindkeys

You may need to restart X. Remember that each time you restart X, you will need to run xbindkeys again in order for the shortcut to work. Go to System>Preferences>Sessions>Startup Programs> click add type xbindkeys then click ok.

Bash Script

Instead of using the 3 scripts above, you can achieve the same thing with a single bash script:

#!/bin/bash
# toggle synaptic touchpad on/off

# get current state
SYNSTATE=$(synclient -l | grep TouchpadOff | awk '{ print $3 }')

# change to other state
if [ $SYNSTATE = 0 ]; then
    synclient touchpadoff=1
elif [ $SYNSTATE = 1 ]; then
    synclient touchpadoff=0
else
    echo "Couldn't get touchpad status from synclient"
    exit 1
fi
exit 0