昨天晚上我研究了 2 个小时没找到,如果是 gnome 的话直接用 gsettings 设置就可以了,xfce 也可以用 xinput 来设置,但 kde 这个网上完全没相关的资料,想在深入源码研究之前先请教一下看有没有懂的 v 友能帮我节省个看源码的时间。
1
EvineDeng 249 天前 1
命令行不知道怎么操作,但键盘不是一般都带有功能键么?我是 Arch Linux KDE Wayland ,我的禁用触摸板功能键在 F9 上,我就是按 Fn+F9 就行了。
|
2
EvineDeng 249 天前
kcmutils 包中有个命令 kcmshell6 (如果是 plasma 6 的话),可能对你有帮助。
|
3
zhuisui 249 天前
xinput list-props
控制 Device Enabled 属性 |
4
zhuisui 249 天前
然后考虑到 xinput 是 X11 专有,那直接搜 wayland replacement 就是了,搜到了这个 https://discuss.kde.org/t/how-to-access-libinput-properties-in-wayland-for-an-external-touchpad/11730/2
|
5
EvineDeng 249 天前
发现触摸板的配置实际上是~/.config/.kcminputrc 这个文件,直接修改这个文件是不行的,文档了解 kwriteconfig6 (如果是 KDE6 的话)可以配置,单个 group 还好,直接像这样 kwriteconfig6 --file kcminputrc --group Keyboard --key NumLock 0 就行,但触摸板是 group 套 group ,暂时没在文档中看到多重 group 时怎么写命令。OP 要是知道了也可以分享出来。
|
7
wniming OP @EvineDeng 能帮忙试一下你笔记本的 Fn + F9 的 scan code 吗?用 evtest 可以看,我笔记本的 f9 是 “下一曲” 那个按钮,如果知道哪个 scan code 是 kde 默认用来启用禁用触摸板的,我通过 udevadm 重新映射一下就可以了。
另外我的启用禁用触摸板的配置文件是 ~/.config/kcminputrc ,这个配置文件手动修改后有什么命令可以让修改生效吗?我试了 kwriteconfig5 是不行的。 我在这个帖子里找到一个方法也能实现我的需求: https://unix.stackexchange.com/questions/531866/how-can-i-disable-an-input-device evtest --grab /dev/input/event0 > /dev/null 直接用这个命令把触摸板的事件拦截。 |
8
wniming OP |
9
EvineDeng 249 天前
下一曲上一曲静音这种媒体播放控制属于 Consumer Control ,是有键码的,触摸板开关这个不属于什么设备,找不到键码的,我以前很早就试过了。kwriteconfig 以后如何生效我也没找到。
|
10
mokiki 248 天前 via Android
不知道你的原始痛点是什么,不过 kde 可以设置插入鼠标后禁用触摸板
|
11
wniming OP @mokiki 痛点是我用的这个 m2 的 macbook air 的触摸板太大了,很容易在打字时误触,macos 应该是有什么特殊的优化所以不影响,asahi linux 团队没能把触摸板的使用体验优化到和 macos 一样,所以我就是想在接着鼠标时禁用触摸板,刚才查了一下发现 kde 的这个选项以前有但是因为 Wayland 不支持所以已经删掉了。
我现在就只能是接着鼠标时用 #8 楼那个命令去拦截触摸板输入,不接鼠标时把这个命令 kill 掉来实现。 |
12
zhuisui 246 天前
试试 dbus-send --print-reply --dest=org.kde.kded5 /modules/kded_touchpad org.kde.touchpad.disable
或许 wayland 要改其中部分参数 l 来自 https://www.reddit.com/r/kde/comments/dnx4dh/comment/hhp457g/?utm_source=share&utm_medium=web2x&context=3 |
13
wniming OP @zhuisui #12
不管用: d@d-macbookair:~$ dbus-send --print-reply --dest=org.kde.kded5 /modules/kded_touchpad org.kde.touchpad.disable method return time=1711970281.666579 sender=:1.143 -> destination=:1.273 serial=599 reply_serial=2 d@d-macbookair:~$ d@d-macbookair:~$ echo $? 0 d@d-macbookair:~$ d@d-macbookair:~$ 我现在就用 evtest 那种方式其实就够了,搞了一个 systemd 服务来跑 evtest ,通过启动和停止服务来启用和禁用触摸板,效果很好: root@d-macbookair:~# cat /etc/systemd/system/event0.service [Unit] [Service] ExecStart=sh -c 'evtest --grab /dev/input/event0 > /dev/null' [Install] WantedBy=default.target |