我最近给女朋友买了一台 Wacom Bamboo CTH-470,在安装了 wacom-dkms 之后,它运行良好。现在我遇到了一个不知道如何解决的问题。平板电脑上的触摸功能无法关闭。我运行的是 Ubuntu 12.04 Beta 2。我尝试从设置菜单中的 wacom 设置关闭触摸功能。笔和触摸功能都运行良好,只是当她试图在 myPaint 中绘图时,触摸功能让她抓狂。
答案1
编辑
查看评论和其他答案后发现,有些人似乎仍在寻找使用平板电脑按钮切换触摸的方法。如果您只想这样做,则需要 3 件事(针对 Ubuntu/Unity 显示):
- 一个简单的命令(可以在终端或脚本文件中运行)
randompast 的解决方案使用一行命令,很好,并且可以转换为更方便的一行切换命令:
xsetwacom --list | grep --line-buffered "TOUCH" | awk '{system("echo "$8";xsetwacom --get "$8" TOUCH;")}' | tr "\n" " " | awk '$2 == "off" {system("xsetwacom --set "$1" TOUCH on")} $2 == "on" {system("xsetwacom --set "$1" TOUCH off")}'
当然,如果您已经有自己的脚本或命令行,那么您就不需要这样做,但这是一种在不知道平板电脑的名称或 ID 的情况下切换所连接平板电脑的触摸的便捷方式。
- 设置键盘快捷键
如果您想在没有终端的情况下运行此程序,则需要将脚本保存在文件中,使其可执行并为其创建键盘快捷键。这是因为您无法直接将命令分配给平板电脑的按钮(但您可以分配按键...)。
在 Unity 中打开系统设置 > 键盘 > 快捷键并创建新的快捷方式。避免极好的键,因为它可能并不总是在步骤 3 中起作用。
作为命令,输入脚本文件的名称(完整路径,在单引号之间,如果不确定,则将文件拖放到终端中并使用创建的命令)。
- 将快捷键的按键分配给您的按钮
打开系统设置 > Wacom 数位板 > 地图按钮...并将您选择的按键分配给您的按钮。
要知道哪个按钮是哪个,您可以先为它们分配不带修饰符的字母,选择一个文本字段,然后按下按钮以查看它们对应哪个字母。
这里要注意:并非所有按钮都能被识别(我的 Bamboo 4 个按钮中只有 3 个能识别),而且并非所有按键都能正常工作(我无法使用极好的键才能工作)。您必须尝试不同的组合。
原始答案(学习命令)
我在一年前就设置了我的 Pen & Touch,所以我可能错了。我通常在终端中运行:
xsetwacom --set "Wacom BambooPT 2FG 4x5 Finger touch" touch off
这不适用于你,因为你有另一台平板电脑,所以请先尝试
xsetwacom
它应该会为您提供要使用的参数。首先,您需要获取设备的名称(我们称之为 DEVICE_NAME),因此请尝试:
xsetwacom --list devices
这为我的 Pen & Touch 提供了:
Wacom BambooPT 2FG 4x5 笔式橡皮擦 编号:11 类型:橡皮擦
Wacom BambooPT 2FG 4x5 笔式触控笔 编号:12 类型:触控笔
Wacom BambooPT 2FG 4x5 指垫 编号:13 类型:触控板
Wacom BambooPT 2FG 4x5 手指触摸 ID:14 类型:触摸
显然,这里要禁用的是 TOUCH 类型的设备。这里的 DEVICE_NAME 应该是Wacom BambooPT 2FG 4x5 手指触控并且 DEVICE_ID 将是14然后您需要知道要禁用哪个参数,因此请尝试:
xsetwacom --list parameters
有大量参数可以启用/禁用,并且对于每个参数名称(我们称之为 PARAM_NAME),预期值的类型都有说明。在本例中,我们想要关闭 Touch 参数,您可以使用- 放选项。语法为:
xsetwacom --set "DEVICE_NAME" PARAM_NAME PARAM_VALUE
或者
xsetwacom --set DEVICE_ID PARAM_NAME PARAM_VALUE
如果您不确定用什么来代替 PARAM_VALUE,请尝试使用 --get 选项来查看当前值:
xsetwacom --get "DEVICE_NAME" PARAM_NAME
答案2
以下是一行解决方案:
xsetwacom --list | grep --line-buffered "TOUCH" | awk '{system("xsetwacom --set "$8" touch off")}'
答案3
我编写此脚本是为了无论我将平板电脑插入哪台计算机(因为这些 ID 在不同机器之间会发生变化),我都可以控制触摸的打开/关闭。您可能也会发现它很有用。
#!/usr/bin/python
# kermit-internal-pytouch 0|1
import re, sys, subprocess
resp = subprocess.Popen(['xinput', '-list'], stdout = subprocess.PIPE)
out, err = resp.communicate()
WacomLine = re.compile('Wacom')
FingerLine = re.compile('Finger')
idExpr=re.compile('id=(?P<number>\d+)')
for line in out.split("\n"):
if WacomLine.search(line) and FingerLine.search(line):
identifier = idExpr.search(line)
num = identifier.group("number")
subprocess.call(['xinput', '-set-prop', num, "Device Enabled", sys.argv[1]])
resp = subprocess.Popen(['xinput', '-list'], stdout = subprocess.PIPE)
out, err = resp.communicate()
print(out)
我将此脚本与这两个简单的 bash 脚本一起放在 /usr/local/bin 中,以便调用它而不必记住参数......
kermit-hw-bamboo-untouch:
#!/bin/bash
kermit-internal-pytouch 0
exit
kermit-hw-bamboo-touch:
#!/bin/bash
kermit-internal-pytouch 1
exit
话虽如此,但我觉得 Ubuntu 没有为平板电脑提供更好的支持,这真的很遗憾。也许有一天 Wacom 也会关注我们的社区……
答案4
在批处理中又添加了一个脚本,我为自己编写了这个脚本。我将其放在我添加到环境路径的文件夹wacomtouch
中的可执行文件中.scripts
。因此,要禁用触摸,我只需运行wacomtouch off
。它会自动检测所有参数,因此理论上它可以自动与任何 Wacom 平板电脑配合使用。
(这取决于pcregrep
包。)
#!/bin/bash
STATUS="$1"
#Isolate the id of the touch device automatically.
rawID=`xsetwacom --list | pcregrep -M 'TOUCH' | pcregrep -o 'id\: \d*'`
#Trim further
device=`echo "$rawID" | grep -o "[0-9]\+"`
xsetwacom --set $device touch $1
case $1 in
on)
echo "Tablet touch is ENABLED."
;;
off)
echo "Tablet touch is DISABLED."
;;
*)
echo "Invalid option. Must be either on or off."
;;
esac