V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
wniming
V2EX  ›  Linux

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

  •  
  •   wniming · 273 天前 · 1335 次点击
    这是一个创建于 273 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    13 条回复    2024-04-01 19:18:33 +08:00
    EvineDeng
        1
    EvineDeng  
       273 天前   ❤️ 1
    命令行不知道怎么操作,但键盘不是一般都带有功能键么?我是 Arch Linux KDE Wayland ,我的禁用触摸板功能键在 F9 上,我就是按 Fn+F9 就行了。
    EvineDeng
        2
    EvineDeng  
       273 天前
    kcmutils 包中有个命令 kcmshell6 (如果是 plasma 6 的话),可能对你有帮助。
    zhuisui
        3
    zhuisui  
       273 天前
    xinput list-props

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

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

    我现在就只能是接着鼠标时用 #8 楼那个命令去拦截触摸板输入,不接鼠标时把这个命令 kill 掉来实现。
    zhuisui
        12
    zhuisui  
       270 天前
    试试 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
        13
    wniming  
    OP
       270 天前
    @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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2723 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 14:39 · PVG 22:39 · LAX 06:39 · JFK 09:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.