xinput可以做你需要的,卢卡斯。你可以有一个单行(好吧,不完全是单行,但你只需要按一次 ENTER :-D),但首先你必须做一些工作。我发誓这非常简单,为了清楚起见,我将在这里解释大部分内容。
打开终端,然后输入:
\n\nxinput list\nRun Code Online (Sandbox Code Playgroud)\n\n你会得到一个很好的指针、键盘按钮等列表,就像我的摘录一样:
\n\n\xe2\x8e\xa1 Virtual core pointer id=2 [master pointer (3)]\n\xe2\x8e\x9c \xe2\x86\xb3 Virtual core XTEST pointer id=4 [slave pointer (2)]\n\xe2\x8e\x9c \xe2\x86\xb3 USB+PS/2 Optical Mouse id=10 [slave pointer (2)]\n\xe2\x8e\x9c \xe2\x86\xb3 PS/2 Mouse id=13 [slave pointer (2)]\n\xe2\x8e\x9c \xe2\x86\xb3 AlpsPS/2 ALPS GlidePoint id=14 [slave pointer (2)]\nRun Code Online (Sandbox Code Playgroud)\n\n我的USB鼠标就在第二行,你可以看到它的ID是10。在列表中找到您的鼠标并记下其 ID,您将需要它来执行您想要的主命令。
\n\n如果您想检查您是否获得了正确的 ID,请运行xinput test <id>。如果您移动鼠标、单击按钮等,您应该会在终端上看到大量信息行。它列出了您使用鼠标执行的所有操作。如果没有任何反应,请尝试从指针列表中选择另一个对您有意义的 id,您可能一开始就选择了错误的 id(这确实不应该那么难)。
当您最终找到正确的 id 时,运行以下命令:
\n\nxinput test <id>|sed -une '/release/ { x\n /^$/ s/^.*$/1/\n G\n h\n s/^/ /\n s/^ *\\(......\\)\\n/\\1 /p\n x\n s/\\n.*$//\n /^9*$/ s/^/0/\n s/.9*$/x&/\n h\n s/^.*x//\n y/0123456789/1234567890/\n x\n s/x.*$//\n G\n s/\\n//\n h\n}'\nRun Code Online (Sandbox Code Playgroud)\n\n按原样复制上面的内容并粘贴。在按 ENTER 之前,请将<id>替换为您找到的 ID。当您运行它时,您可以在继续使用系统时将其放在那里。任何时候您想检查注册了多少次点击,您只需查看终端即可。
\n\n一些重要的评论:
\n\n我使用的方法:xinput list <id>做肮脏的工作,显示鼠标发生的一切。然后我将此输出重定向到sed,它将仅解析具有“release”事件的行。我想可以考虑“释放”事件结束“单击过程”(按钮按下然后向上)。sed 脚本不仅显示带有“release”的行,而且还对它们进行编号。这个脚本是直接从info sed(4.7节)复制而来的,肯定可以改进。
您可以使用linux-input 项目提供的 evtest 。
但你必须确保内核中有 CONFIG_INPUT_EVBUG=y (如果安装调试版本,可能是默认值)并将调试级别设置为 8
echo 8 > /proc/sys/kernel/printk
Run Code Online (Sandbox Code Playgroud)
此时,您将在控制台中看到几条可以解析的消息。
evbug.c: Event. Dev: gpio-keys/input0, Type: 0, Code: 0, Value: 0
evbug.c: Event. Dev: gpio-keys/input0, Type: 1, Code: 103, Value: 1
Run Code Online (Sandbox Code Playgroud)
然后您可以安装 bitbake 和 evtest 软件包
sudo apt-get install bitbake evtest
Run Code Online (Sandbox Code Playgroud)
然后您可以对您的设备使用 evtest,您将需要一些测试来找出您需要的正确事件,并且您可以计算该事件的发生次数。
evtest /dev/input/eventXX
Run Code Online (Sandbox Code Playgroud)
否则,如果您只想统计登录 GDM/XDM 后的点击次数,您可以开发或请人来做,使用 GTK、Qt 或 wxWidgets、Enlightenment 或任何您喜欢的应用程序来监视鼠标事件和桌面出现后立即启动此应用程序。