我安装了 Arch Linux,暗网窗口管理器。但触摸板的点击不起作用。
我知道如何启用点击;我使用以下命令找到触摸板的 ID:
~ xinput --list
Virtual core pointer id=2 [master pointer (3)]
↳ Elan Touchpad id=10 [slave pointer (2)]
我可以看到 id 是 10。然后我可以列出它的属性:
~ xinput --list-props 10
Device 'Elan Touchpad':
Device Enabled (172): 1
libinput Tapping Enabled (307): 0
在这里我可以看到 id 为 307 的属性tapping
没有设置为 1,所以它没有启用,我可以使用以下命令启用它:
xinput --set-prop 10 307 1
并且它确实有效。现在我想编写一个脚本来自动执行此过程,这样我就不必每次重启时都执行此操作。我写了这个脚本:
#!/bin/bash
touchpad_id=$(xinput --list | awk '/Touchpad/ {print $5}' | tr -d 'id=')
tapping_id=$(xinput --list-props $touchpad_id | awk '/libinput Tapping Enabled \(/ {print $4}' | tr -d '():')
# Enable Tapping
xinput --set-prop $touchpad_id $tapping_id 1
当我在终端中运行该脚本(使用./touchpad_click.sh
)时,该脚本就可以正常工作。
接下来,我修改了 dwm 源代码,使其每次启动时都运行一个脚本。我在run(void)
和scan(void)
函数之间添加了以下函数dwm.c
:
void
runAutostart(void) {
system("~/.dwm/autostart.sh &");
}
添加了它的标题:
static void runAutostart(void);
main()
并在调用之前调用了该函数run()
:
scan();
runAutostart();
run();
然后dwm.c
用 编译该文件sudo make install
。编译成功。
然后写了这个脚本autostart.sh
:
#!/bin/bash
# Enable Tapping for Touchpad
./touchpad_click.sh
并将autostart.sh
和放入目录touchpad_click.sh
中~/.dwm
。我还确保授予这两个文件的execute
权限:
chmod +x autostart.sh touchpad_click.sh
我通过以下方式验证:
~ ls -lhA
-rwxr-xr-x 1 amir amir 63 Feb 25 18:07 autostart.sh
-rwxr-xr-x 1 amir amir 259 Feb 25 18:07 touchpad_click.sh
现在的问题是它不起作用,当我通过Shift+Alt+Q
快捷方式终止 dwm 或重新启动系统时,触摸板的点击被禁用。我该如何解决这个问题?
答案1
我认为您不需要自己构建 dwm 并编写设置 xinput 属性的特殊脚本。您可以直接使用 Xorg 配置文件:https://wiki.archlinux.org/index.php/Libinput#Via_Xorg_configuration_file
/etc/X11/xorg.conf.d/30-touchpad.conf
创建一个包含以下内容的文件:
Section "InputClass"
Identifier "touchpad catchall"
Driver "libinput"
Option "Tapping" "on"
EndSection
并重新启动 Xorg。