Rofi 键位与鼠标绑定完全指南:从默认快捷键到自定义绑定(rofi-keys)
Rofi 键位与鼠标绑定完全指南从默认快捷键到自定义绑定rofi-keys【免费下载链接】rofiRofi: A window switcher, application launcher and dmenu replacement项目地址: https://gitcode.com/gh_mirrors/ro/rofirofi不仅是一个窗口切换器、应用启动器与 dmenu 替代品其全部键盘与鼠标交互都可以被用户完全覆写既可以在命令行上用-kb-*参数临时指定也可以写进配置文件永久生效。本文以仓库文档 mkdocs/docs/1.7.3/rofi-keys.5.markdown 为主体结合 source/keyb.c 等源码实现系统讲解 rofi 的键位绑定语法键名、键码、多键、释放触发、全部默认键盘/鼠标绑定的含义以及如何通过-list-keybindings与配置系统排查与验证绑定帮助你打造完全符合个人习惯的 rofi 交互体验。绑定机制总览键盘与鼠标皆可覆写rofi 的核心交互模型是动作Action 绑定Binding每一个用户操作如接受条目删除前一个字符切换模式都对应一个固定名称的绑定项例如kb-accept-entry、kb-remove-char-back。rofi 支持覆写其中任意一个键盘或鼠标绑定默认值定义在源码的绑定表中见 source/keyb.c#L46-L387 中的rofi_bindings[]数组文档与rofi -list-keybindings输出的正是这张表的镜像。绑定分为两大类键盘绑定Keyboard Bindings名称以kb-开头作用于输入框、列表与全局交互鼠标绑定Mouse Bindings名称以ml-列表滚动与me-条目点击开头作用于列表视图。在源码层面这两类绑定共用同一个注册与触发框架setup_abe()把每个绑定注册为可配置项source/keyb.c#L416-L423parse_keys_abe()在启动时解析并注册到 nk-bindings 绑定引擎source/keyb.c#L450-L509按键命中后由binding_check_action/binding_trigger_action回调source/keyb.c#L425-L438转发给视图层执行。设置绑定的四种语法1. 命令行参数每个绑定项都对应一个同名命令行选项-{bindingname}rofi -show run -kb-accept-entry ControlShiftspace启动 rofi 的 run 模式并将接受当前条目的快捷键改为ControlShiftspace。2. 配置文件同样可以在配置文件中永久设置rofi 配置文件是 rasi 格式默认位于~/.config/rofi/config.rasi仓库内置模板见 doc/default_configuration.rasiconfiguration { kb-accept-entry: ControlShiftspace; }配置块内以绑定名: 绑定字符串;的形式书写语法与命令行保持一致。3. 用键名或键码指定按键按键既可以按名称书写如Return、space、ISO_Left_Tab、KP_Enter也可以用方括号包裹的键码指定configuration { kb-accept-entry: ControlShift[65]; }[65]表示键盘码 65对应 Space 键。查找键码的一个简便方法是使用xev(1)工具运行xev后在窗口中按下目标按键终端输出中的keycode值即为所需键码。4. 多个按键与释放触发多键绑定一个动作可以绑定多个按键用英文逗号分隔configuration { kb-accept-entry: ControlShiftspace,Return; }这样ControlShiftspace与Return都能接受条目。释放触发默认情况下 rofi 在按键按下时触发动作若希望在释放时触发在绑定字符串前加!configuration { kb-accept-entry: !ControlShiftspace,Return; }注意此处的!作用于整条绑定字符串——源码中parse_keys_abe()先以逗号为分隔符逐段调用nk_bindings_add_binding()source/keyb.c#L458-L465因此上例中Return仍按默认的按下触发只有ControlShiftspace变为释放触发。5. 解除绑定如果某个默认绑定干扰了你的工作流可以将绑定值设为空字符串来彻底取消configuration { kb-clear-line: ; }这也是源码中部分绑定本身即为空的用法——例如kb-row-tab的默认绑定在 source/keyb.c#L163-L167 中就是空串它的职责被拆分给了kb-element-next。源码视角绑定如何被注册与触发要理解上述语法的由来可以沿着 rofi 启动路径看一遍绑定生命周期source/rofi.c#L1148-L1152 附近注册为配置项setup_abe()遍历rofi_bindings[]把每个绑定的name注册为xrm_String类型的配置选项绑定字符串成为可被命令行/配置文件覆写的变量source/keyb.c#L416-L423。解析绑定启动早期调用parse_keys_abe(bindings)source/rofi.c#L1271它会读取可能已被用户覆写的绑定字符串按逗号拆分后逐个注册进 nk-bindings 引擎若某个按键被重复注册会收集错误信息并提示执行rofi -list-keybindings查看当前绑定列表source/keyb.c#L466-L476。触发动作按键命中后binding_trigger_action调用视图层的rofi_view_trigger_action()source/view.c#L1386对于鼠标绑定rofi_view_check_action()会先通过widget_find_mouse_target()判断鼠标是否落在对应的列表视图/条目区域内source/view.c#L1355-L1384保证滚动与点击动作只发生在鼠标悬停的组件上。用-list-keybindings验证当前绑定命令行选项-list-keybindings会打印当前生效的全部键位绑定列表后退出source/rofi.c#L355-L356 与 source/rofi.c#L1289-L1291rofi -list-keybindings在终端下输出会带颜色高亮对应 source/keyb.c#L397-L414 的abe_list_all_bindings()。这是排查为什么我的按键没生效的第一工具——它展示的正是rofi_bindings[]表中合并用户覆写后的最终值。键盘绑定完整参考以下为 1.7.3 版本文档mkdocs/docs/1.7.3/rofi-keys.5.markdown收录的全部键盘绑定及其默认值。表中内容与源码 source/keyb.c#L46-L347 中的rofi_bindings[]定义一致。剪贴板与粘贴绑定名功能默认键kb-primary-paste粘贴主选择区primary selectionControlV,ShiftInsertkb-secondary-paste粘贴剪贴板Controlv,Insert注现行版本文档 doc/rofi-keys.5.markdown 额外提供kb-secondary-copyControlc复制当前选中内容到剪贴板源码对应 source/keyb.c#L55-L58。光标移动绑定名功能默认键kb-move-front跳到行首Controlakb-move-end跳到行尾Controlekb-move-word-back光标后退一个单词Altb,ControlLeftkb-move-word-forward光标前进一个单词Altf,ControlRightkb-move-char-back光标后退一个字符Left,Controlbkb-move-char-forward光标前进一个字符Right,Controlf文本删除绑定名功能默认键kb-clear-line清空输入行Controlwkb-remove-word-back删除前一个单词ControlAlth,ControlBackSpacekb-remove-word-forward删除后一个单词ControlAltdkb-remove-char-forward删除后一个字符Delete,Controldkb-remove-char-back删除前一个字符BackSpace,ShiftBackSpace,Controlhkb-remove-to-eol删除到行尾Controlkkb-remove-to-sol删除到行首Controlu现行版本另提供kb-transpose-charsControlt交换光标前两个字符见 doc/rofi-keys.5.markdown 与 source/keyb.c#L111-L114。接受与提交绑定名功能默认键kb-accept-entry接受当前条目Controlj,Controlm,Return,KP_Enterkb-accept-custom将输入文本作为命令执行ssh/run 模式ControlReturnkb-accept-custom-alt同上备用组合ssh/run 模式ControlShiftReturnkb-accept-alt执行备选的接受命令ShiftReturnkb-delete-entry从历史中删除条目ShiftDeletekb-row-select将选中条目设为输入文本Controlspace模式切换与补全绑定名功能默认键kb-mode-next切换到下一个模式ShiftRight,ControlTabkb-mode-previous切换到上一个模式ShiftLeft,ControlISO_Left_Tabkb-mode-complete对当前模式启动补全Controll列表导航绑定名功能默认键kb-row-left移到上一列ControlPage_Upkb-row-right移到下一列ControlPage_Downkb-row-up选择上一个条目Up,Controlp,ISO_Left_Tabkb-row-down选择下一个条目Down,Controlnkb-row-tab移到下一行若没有下一行则接受若没有更多则切到下一模式Tabkb-page-prev上一页Page_Upkb-page-next下一页Page_Downkb-row-first跳到第一个条目Home,KP_Homekb-row-last跳到最后一个条目End,KP_End1.7.3 文档中kb-row-up默认值含ISO_Left_Tab。在现行版本中Tab与ISO_Left_Tab被拆分到独立的kb-element-nextTab与kb-element-prevISO_Left_Tabkb-row-tab默认置空见 source/keyb.c#L163-L175。另外现行版本还新增kb-entry-history-upControlUp与kb-entry-history-downControlDown用于在输入框历史中上下翻动source/keyb.c#L332-L339。显示与排序切换绑定名功能默认键kb-screenshot对 rofi 窗口截图AltSkb-ellipsize循环切换显示数据的省略模式Altperiodkb-toggle-case-sensitivity切换大小写敏感grave,dead_gravekb-toggle-sort切换排序Altgrave现行版本还为匹配器matcher增加了kb-matcher-upSuperequal选择下一个匹配器与kb-matcher-downSuperminus选择上一个匹配器见 source/keyb.c#L340-L347。退出绑定名功能默认键kb-cancel退出 rofiEscape,Controlg,Controlbracketleft源码中该绑定的默认值还包含MouseSecondary右键退出见 source/keyb.c#L212-L215。自定义键kb-custom-1 ~ kb-custom-19kb-custom-N系列用于触发第 N 个自定义动作供模式如脚本模式 doc/rofi-script.5.markdown或-kb-custom-N与自定义脚本配合使用。默认绑定为绑定名默认键绑定名默认键kb-custom-1Alt1kb-custom-11Altexclamkb-custom-2Alt2kb-custom-12Altatkb-custom-3Alt3kb-custom-13Altnumbersignkb-custom-4Alt4kb-custom-14Altdollarkb-custom-5Alt5kb-custom-15Altpercentkb-custom-6Alt6kb-custom-16Altdead_circumflexkb-custom-7Alt7kb-custom-17Altampersandkb-custom-8Alt8kb-custom-18Altasteriskkb-custom-9Alt9kb-custom-19Altparenleftkb-custom-10Alt0可以看到 11~19 号使用Alt加键盘上排符号名exclam、at、numbersign、dollar、percent、dead_circumflex、ampersand、asterisk、parenleft覆盖了 Shift 组合后的上排字符源码见 source/keyb.c#L216-L291。快速选择kb-select-1 ~ kb-select-10kb-select-N直接选中列表中的第 N 行默认使用SuperWindows 键组合绑定名默认键绑定名默认键kb-select-1Super1kb-select-6Super6kb-select-2Super2kb-select-7Super7kb-select-3Super3kb-select-8Super8kb-select-4Super4kb-select-9Super9kb-select-5Super5kb-select-10Super0源码见 source/keyb.c#L292-L331。鼠标绑定完整参考列表滚动ml-*绑定名功能默认键ml-row-left移到上一列ScrollLeftml-row-right移到下一列ScrollRightml-row-up选择上一个条目ScrollUpml-row-down选择下一个条目ScrollDown对应源码中的SCOPE_MOUSE_LISTVIEW作用域条目source/keyb.c#L349-L370即这些绑定只在鼠标位于列表视图区域时生效。条目点击me-*绑定名功能默认键me-select-entry选中悬停的条目MousePrimaryme-accept-entry接受悬停的条目MouseDPrimaryme-accept-custom以自定义动作接受悬停条目ControlMouseDPrimary对应SCOPE_MOUSE_LISTVIEW_ELEMENT作用域source/keyb.c#L372-L386绑定只在鼠标落在具体条目元素上时触发。鼠标按钮标识符MouseDButton现行版本文档 doc/rofi-keys.5.markdown 给出了鼠标按钮命名规范可以绑定以下按钮Primary鼠标主键左键单击Secondary鼠标次键右键单击Middle中键单击Forward前进键Back后退键ExtraN第 N 个附加键取决于鼠标支持。标识符按如下规则构造MouseDButton其中D表示可选的双击标记Button为按钮名。例如MouseDPrimary表示鼠标左键双击——这正是me-accept-entry的默认绑定单击只选中MousePrimary双击才接受。结合!前缀还可以绑定释放时触发的鼠标动作源码中对点击按下/释放/双击的默认映射定义在 source/keyb.c#L390-L395 的mouse_default_bindings[]。实战定制你自己的 rofi 键位场景一改掉与系统冲突的粘贴键默认kb-primary-paste占用ControlV如果与终端模拟器冲突可改为rofi -show run -kb-primary-paste ControlShiftV或写入配置文件持久化configuration { kb-primary-paste: ControlShiftV; }场景二让 run 模式输入即执行把回车改成直接执行输入内容跳过列表选择并给备选命令加上另一组键configuration { kb-accept-entry: Controlj,Return; kb-accept-custom: ControlReturn; kb-accept-custom-alt: ControlShiftReturn; }场景三解除不想要的默认绑定例如不希望kb-delete-entryShiftDelete误删历史条目configuration { kb-delete-entry: ; }场景四用自定义键配合脚本模式在脚本模式doc/rofi-script.5.markdown中kb-custom-1等绑定会把动作以ROFI_RETV形式传给脚本可在配置中重映射configuration { kb-custom-1: Control1; kb-custom-2: Control2; }修改后运行rofi -list-keybindings确认新值生效再结合xev查键码即可完全掌控 rofi 的每一个交互动作。相关文档键盘与鼠标绑定总览现行版doc/rofi-keys.5.markdownrofi 主手册doc/rofi.1.markdown主题与界面定制doc/rofi-theme.5.markdown脚本模式使用kb-custom-*与ROFI_RETVdoc/rofi-script.5.markdown终端启动器doc/rofi-sensible-terminal.1.markdown默认配置模板doc/default_configuration.rasi绑定核心实现source/keyb.c【免费下载链接】rofiRofi: A window switcher, application launcher and dmenu replacement项目地址: https://gitcode.com/gh_mirrors/ro/rofi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

QQ好友和QQ群恢复全攻略:官方路径、时间窗口与避坑指南

QQ好友和QQ群恢复全攻略:官方路径、时间窗口与避坑指南

简介:这是一份针对QQ好友与群误删、被踢场景的实用恢复指南,适合普通用户与QQ联系人管理需求者阅读。文档整理了三种主流恢复途径:通过“我的中心”恢复三个月内主动删除的好友、利用消息管理器找回已删除联系人、以及借助官方好友恢复系统批…

2026/9/21 1:26:48 阅读更多 →
CompTIA Security+ SY0-701备考指南:从五大域到实战排查

CompTIA Security+ SY0-701备考指南:从五大域到实战排查

简介:这是一份面向信息安全从业者与备考者的 CompTIA Security SY0-701 完整参考书,定位为刷题与系统复习两用的学习资料。全书围绕最新考纲,覆盖网络安全、恶意代码、社会工程学与密码攻击、安全评估与测试、应用安全、密码学与 PKI&#xf…

2026/9/21 1:26:48 阅读更多 →
Creatify Boreal视频广告生成实战:文生视频与图生视频工作流拆解

Creatify Boreal视频广告生成实战:文生视频与图生视频工作流拆解

1. 视频广告生成赛道的格局变化与Boreal的切入点视频广告的制作成本一直是中小团队最头疼的问题。一条15秒的信息流广告,从脚本、拍摄、剪辑到后期,传统流程走下来少说三到五天,外包报价动辄几千到几万。即便是有了AI辅助,大多数团…

2026/9/21 1:25:47 阅读更多 →

最新新闻

美团数据分析手册拆解:指标体系、SQL与归因实战

美团数据分析手册拆解:指标体系、SQL与归因实战

简介:这份《美团数据分析手册》是一份面向数据分析初级与进阶学习者的业务实战指南,聚焦外卖、到店、酒旅、出行、金融、闪购等核心业务线,系统讲解如何构建指标体系、应用数据分析方法论并支撑业务决策。资源为单个PDF文件,仅1.1…

2026/9/21 2:00:05 阅读更多 →
Vue Router 2 动态路由匹配完全指南:动态段、参数响应与高级匹配模式

Vue Router 2 动态路由匹配完全指南:动态段、参数响应与高级匹配模式

Vue Router 2 动态路由匹配完全指南:动态段、参数响应与高级匹配模式 【免费下载链接】vue-router 🚦 The official router for Vue 2 项目地址: https://gitcode.com/gh_mirrors/vu/vue-router 导读 在 Vue 2 应用中,经常会遇到「一…

2026/9/21 2:00:05 阅读更多 →
BrowserSkill页面读取三件套对比:observe、snapshot、get-html到底该选哪个?

BrowserSkill页面读取三件套对比:observe、snapshot、get-html到底该选哪个?

BrowserSkill页面读取三件套对比:observe、snapshot、get-html到底该选哪个? 【免费下载链接】BrowserSkill Let AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell…

2026/9/21 2:00:05 阅读更多 →
开放数林指数解读:城市公共数据开放与利用的评估逻辑

开放数林指数解读:城市公共数据开放与利用的评估逻辑

简介:2024中国地方公共数据开放利用报告(城市版)由复旦大学数字与移动治理实验室发布,系国家社科基金重大项目阶段性成果,系统评估全国243个地方平台,面向政府、企业及研究机构。报告以“开放数林”为核心理…

2026/9/21 2:00:05 阅读更多 →
数据安全风险评估报告模板实操指南:从资产识别到整改落地

数据安全风险评估报告模板实操指南:从资产识别到整改落地

简介:面向数据安全评估机构、企业安全管理人员及合规咨询顾问的《重要数据安全风险评估报告模板(第一版)》PDF文档,以2024年版模板为底本,完整提供报告封面、声明、基本信息表、报告概述、目录及正文章节的规范结构。正…

2026/9/21 2:00:05 阅读更多 →
个人开发者如何系统攻克工控协议:从Modbus到EtherCAT的实战路线

个人开发者如何系统攻克工控协议:从Modbus到EtherCAT的实战路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 1:59:04 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/20 0:00:46 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/20 0:00:46 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/20 0:00:46 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →