场景
kubuntu 是集成了 kde plasma 桌面环境的 ubuntu,而且 ked plasma 很适合我,但是有一个问题是
kde 自定义快捷键中不能自定义
鼠标键触发某个操作
默认只支持自定义键盘快捷键触发某个操作,例如可以定义 ctrl + shift + prt
键盘快捷键触发 flameshot gui
命令进行截图
我需要 鼠标点击中键 - 显示活动窗口
,目前在 kubuntu 上只能通过键盘按键 super + w
使用。在我的 mac 上可以直接在设置中设置鼠标快捷键,很方便。而我需要做到一致的体验,在搜索引擎中辗转多个网页,最终找到了好的方案
xbindkeys 和 xdotool
两个开源工具
xbindkeys:监听事件,例如 鼠标中键按下
,然后根据配置文件(~/.xbindkeysrc)执行相应的命令
xdotool:使用命令的方式模拟某个操作,例如键盘按下(super+w)
注:其只适用于 x11 图形平台
确认图形服务使用的 x11
使用 apt 安装
sudo apt install xbindkeys xdotool
编辑配置文件
vim .xbindkeysrc
内容为
"xdotool key --clearmodifiers super+w"
b:2
b:2
前需要有缩进,空格数不限制
--clearmodifiers
参数的作用是在执行键盘操作前清除所有可能已经按下的修饰键,可以防止意外组合
无论你当前按着什么其他键,触发的始终是干净的 Super+W 组合
逻辑很简单
xbindkeys 监听
鼠标中键
,当被按下时,执行xdotool key --clearmodifiers super+w
命令,模拟键盘按键super + w
从而显示 kubuntu 上的所有活动窗口
安装完成、配置文件编写正确后就不再需要手动管理服务了
xbindkeys 文档中提到,xbindkeys 将会在后台以守护进程的方式运行,并且当配置文件发生变化将会自动加载
实际上在系统启动时也会自动运行
综合
为什么选择两个不同的程序?一个单独的程序做完这两件事不是更好吗?
我最初的想法的确是这样,但是能在一个程序中做到这两件事情的开源项目,要么使用 python 开发,运行较为繁琐且本身过重,要么添加了许多我根本不需要的附加功能
xbindkeys 和 xdotool 主要使用 c 语言开发,轻量且高效,并且不附带多余的功能
xbindkeys 进行输入事件的监听,xdotool 模拟输出事件
可能这也和 linux 的理念相符合:单个程序只做一件事情并且做好
评论区