LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 730|回复: 4

ThinkPad 触摸板开关脚本问题请教!

[复制链接]
发表于 2011-9-11 13:40:51 | 显示全部楼层 |阅读模式
我用是thinkpad笔记本,想实现 Fn+F8 热键进行触摸板“开/关”操作。
(通过ACPI检测事件,如果发现 Fn+F8 事件侧执行/usr/local/bin/synaptics.sh命令)

cat /etc/acpi/events/synaptics

  1. event=ibm/hotkey HKEY 00000080 00001008

  2. action=/usr/local/bin/synaptics.sh   
复制代码


cat /usr/local/bin/synaptics.sh
  1.    
  2. #!/bin/sh

  3. LOCK_FILE=/tmp/synaptics.lock

  4. if [ -e $LOCK_FILE ]
  5. then
  6.         xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 1
  7.         rm -f $LOCK_FILE
  8. else
  9.         touch $LOCK_FILE
  10.         xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 0
  11. fi
复制代码


现时情况是,直接执行synaptics.sh命令可以正常进行触摸板“开/关”,但如果通过 Fn+F8 却没有发生作用;

查看/tmp/目录,发现进行 Fn+F8 操作时,/tmp/synaptics.lock 文件能进行创建与删除,说明 Fn+F8 操作已被检测到。

请问大家这是哪个地方出现了问题呢?
发表于 2011-9-12 09:45:13 | 显示全部楼层
我试了一下,发现提示:
/etc/acpi/actions/synaptics.sh: line 7: xinput: command not found.


于是把它改成 "synclient  touchpadoff=0" or "synclient  touchpadoff=1"
结果发现情况你的一样,运行脚本能关闭和开启触摸板。
Ctrl+F8,只建立临时文件,但不起作用。

当在命令行终端运行脚本时,提示错误:
  1. Failed to connect X server
复制代码

因此,问题找到了。
但不知如何解决。

  1. #!/bin/sh

  2. LOCK_FILE=/tmp/synaptics.lock

  3. if [ -e $LOCK_FILE ]
  4. then
  5. #      xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 1
  6.         synclient  touchpadoff=0
  7.         rm -f $LOCK_FILE
  8. else
  9.         touch $LOCK_FILE
  10.         synclient  touchpadoff=1
  11. #      xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 0
  12. fi
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-12 15:55:42 | 显示全部楼层
我安装了xinput程序, 运行脚本或直接程序运行如下命令没有提示出错,执行结果正常!
  1. xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 1
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-9-13 18:54:13 | 显示全部楼层
Post by hdecol;2151550
我试了一下,发现提示:
/etc/acpi/actions/synaptics.sh: line 7: xinput: command not found.


于是把它改成 "synclient  touchpadoff=0" or "synclient  touchpadoff=1"
结果发现情况你的一样,运行脚本能关闭和开启触摸板。
Ctrl+F8,只建立临时文件,但不起作用。

当在命令行终端运行脚本时,提示错误:
  1. Failed to connect X server
复制代码

因此,问题找到了。
但不知如何解决。

  1. #!/bin/sh

  2. LOCK_FILE=/tmp/synaptics.lock

  3. if [ -e $LOCK_FILE ]
  4. then
  5. #      xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 1
  6.         synclient  touchpadoff=0
  7.         rm -f $LOCK_FILE
  8. else
  9.         touch $LOCK_FILE
  10.         synclient  touchpadoff=1
  11. #      xinput set-int-prop "SynPS/2 Synaptics TouchPad" "Synaptics Off" 8 0
  12. fi
复制代码


再加上触摸板一般是在X下使用,所以在终端下执行出现“Failed to connect X server”是正常的!
回复 支持 反对

使用道具 举报

发表于 2011-9-13 22:05:53 | 显示全部楼层
Post by Hooong;2151781
再加上触摸板一般是在X下使用,所以在终端下执行出现“Failed to connect X server”是正常的!


确实是正常的。

但反过来想,ACPI 无法实现 Fn+F8,就可能是 “Failed to connect X server” ……
我个人是这么理解的。
因此,我才说这是问题之所在。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表