每次触摸屏接收到输入时如何执行我的 bash 脚本?

每次触摸屏接收到输入时如何执行我的 bash 脚本?

我正在寻找一种方法来触发我编写的一个小 bash 脚本,每次触摸屏收到输入时运行该脚本。我假设某个地方有某种事件处理程序可以处理触摸屏输入,我可以篡改它来执行此操作,但由于我不是经验丰富的 Linux 用户,我不知道从哪里开始。当前运行 Xubuntu 15.04,如果您需要更多信息(以及我如何为您提供),请告诉我。

我遇到了一个“问题”,人们在开会时不断触摸我的屏幕,没想到这是触摸屏,把事情搞砸了。现在,与其以某种方式禁用触摸屏功能,我觉得让我的笔记本电脑使用语音合成器抗议会很有趣,说“哎哟”和“别戳我”之类的话。所以我写了一个小脚本,循环播放数组,并将最后说的那个保存在一个文本文件中,我希望每次触摸时都触发这个脚本……:)。我迫不及待想看到同事们的表情了。

编辑:

因此,在朋友的建议下,我现在已经完成了大部分工作:

我现在找到了一种使用“evtest /dev/input/event7”检查触摸的方法

它会首先给出设备可能的事件代码,然后在终端中监听直到发生触摸,此时它会显示如下日志:

Testing ... (interrupt to exit)
Event: time 1470832989.871275, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 7
Event: time 1470832989.871275, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 3057
Event: time 1470832989.871275, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 1498
Event: time 1470832989.871275, type 3 (EV_ABS), code 60 (ABS_MT_TOOL_X), value 3057
Event: time 1470832989.871275, type 3 (EV_ABS), code 61 (ABS_MT_TOOL_Y), value 1498
Event: time 1470832989.871275, type 3 (EV_ABS), code 49 (ABS_MT_TOUCH_MINOR), value 2
Event: time 1470832989.871275, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1470832989.871275, type 3 (EV_ABS), code 0 (ABS_X), value 3057
Event: time 1470832989.871275, type 3 (EV_ABS), code 1 (ABS_Y), value 1498
Event: time 1470832989.871275, -------------- EV_SYN ------------

所以我现在有一个脚本,它会一直运行直到找到触摸;

#!/bin/bash

how_many_touches=10

touch_detected=0
while [ "$touch_detected" -lt "$how_many_touches" ]; do
timeout 0.1s evtest /dev/input/event7 > touchscreen_log.txt

grep "type 1 (EV_KEY), code 330 (BTN_TOUCH)" touchscreen_log.txt &>/dev/null
    if [[ $? != 0 ]]; then &>/dev/null
        echo 'No touch detected' &>/dev/null
    else touch_detected=$[$touch_detected+1] &>/dev/null
        bash quit_poking_me.sh &>/dev/null
        sleep 1
    fi
    echo $touch_detected &>/dev/null
done

这非常好。现在我还有几个小问题:

  • 我也欢迎任何关于如何解决 evtest 需要 root 权限的问题的意见。如果能够在没有 root 权限的情况下运行它就好了。

  • 有没有人有更好的选项来静音脚本中的所有输出?这会使大多数输出​​静音,但仍会在终端中输出来自 GSSpeechServer 的错误。

非常感谢大家的帮助!

相关内容