Linux kde wayland 怎么用命令启用和禁用触摸板?

41 天前
 wniming

昨天晚上我研究了 2 个小时没找到,如果是 gnome 的话直接用 gsettings 设置就可以了,xfce 也可以用 xinput 来设置,但 kde 这个网上完全没相关的资料,想在深入源码研究之前先请教一下看有没有懂的 v 友能帮我节省个看源码的时间。

1013 次点击
所在节点    Linux
13 条回复
EvineDeng
40 天前
命令行不知道怎么操作,但键盘不是一般都带有功能键么?我是 Arch Linux KDE Wayland ,我的禁用触摸板功能键在 F9 上,我就是按 Fn+F9 就行了。
EvineDeng
40 天前
kcmutils 包中有个命令 kcmshell6 (如果是 plasma 6 的话),可能对你有帮助。
zhuisui
40 天前
xinput list-props

控制 Device Enabled 属性
zhuisui
40 天前
然后考虑到 xinput 是 X11 专有,那直接搜 wayland replacement 就是了,搜到了这个 https://discuss.kde.org/t/how-to-access-libinput-properties-in-wayland-for-an-external-touchpad/11730/2
EvineDeng
40 天前
发现触摸板的配置实际上是~/.config/.kcminputrc 这个文件,直接修改这个文件是不行的,文档了解 kwriteconfig6 (如果是 KDE6 的话)可以配置,单个 group 还好,直接像这样 kwriteconfig6 --file kcminputrc --group Keyboard --key NumLock 0 就行,但触摸板是 group 套 group ,暂时没在文档中看到多重 group 时怎么写命令。OP 要是知道了也可以分享出来。
wniming
40 天前
@EvineDeng 谢谢老哥,笔记本不在身边,回去我试一下,我那个是 Fedora Asahi Remix ,不知道会不会和 arch linux 有区别。
wniming
40 天前
@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
直接用这个命令把触摸板的事件拦截。
wniming
40 天前
@zhuisui #4 老哥你搜索能力真强,但是这个链接里的解决方案要自己写代码调用 D-Bus 才能实现,还是有些麻烦。

铜币没了发送不了感谢了,这里手动感谢一下:)
EvineDeng
40 天前
下一曲上一曲静音这种媒体播放控制属于 Consumer Control ,是有键码的,触摸板开关这个不属于什么设备,找不到键码的,我以前很早就试过了。kwriteconfig 以后如何生效我也没找到。
mokiki
40 天前
不知道你的原始痛点是什么,不过 kde 可以设置插入鼠标后禁用触摸板
wniming
40 天前
@mokiki 痛点是我用的这个 m2 的 macbook air 的触摸板太大了,很容易在打字时误触,macos 应该是有什么特殊的优化所以不影响,asahi linux 团队没能把触摸板的使用体验优化到和 macos 一样,所以我就是想在接着鼠标时禁用触摸板,刚才查了一下发现 kde 的这个选项以前有但是因为 Wayland 不支持所以已经删掉了。

我现在就只能是接着鼠标时用 #8 楼那个命令去拦截触摸板输入,不接鼠标时把这个命令 kill 掉来实现。
zhuisui
37 天前
试试 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
wniming
37 天前
@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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX