Controlling

[!INFO] Git Commit: 4edacf7 | Updated: 2026-08-05

Controlling 是一个纯客户端的 Forge 1.7.10(GTNH fork)增强 mod,用来改造原版的按键设置界面。 它不注册任何方块、物品、实体,也没有自己的按键——真正的能力来自它对原版 net.minecraft.client.settings.KeyBinding 的 Mixin 补丁:由此让所有按键绑定 (原版的以及其他 mod 注册的)都获得一个额外的修饰键字段,从而支持 Ctrl + G 这类组合键。

主要特性:

  • 组合键:每个按键可附加 Ctrl / Shift / Alt 三选一的修饰键,左键与右键键自动合并为同一逻辑修饰键;
  • 按键搜索:按键列表支持按分类名、按键名、当前键(含修饰键)搜索,命中处高亮;
  • 过滤与排序:只显示未绑定按键、或只显示冲突按键,可按 A→Z / Z→A 排序;
  • 冲突可视化:区分"完全重复"的红色冲突与"同键不同修饰键"的金色轻度冲突;
  • 可视化键盘:浮层面板点选完成绑定,含主板 / 小键盘 / 辅助键三页与修饰键切换按钮, 无需真的去按键盘(面板代码改编自 Keyboard Wizard,MIT 许可);
  • 配置持久化:修饰键以第三字段写入 options.txt 的按键行,与原版两字段格式完全兼容。

与 ModernKeybinding(modid mkb)互斥:同时安装会在启动时抛出 IllegalStateException, 因为 Controlling 已内置组合键支持。

热键列表

  • 组合键绑定 - 附着到每个 KeyBinding 的两个修饰键字段、硬/软冲突判定、options.txt 持久化格式
  • 修饰键枚举 - KeyModifier 全部 4 个取值(None/Ctrl/Shift/Alt)、左右键合并规则与多修饰键同时按下的优先级
  • 输入管线补丁 - 对原版 setKeyBindState / onTick / getIsKeyPressed / isPressed 的注入,以及裸键被兄弟组合键压制的规则
  • 键位搜索与过滤 - DisplayMode(3) / SearchType(4) / SortOrder(3) 全部取值与搜索高亮规则
  • 可视化键盘 - Page(3) 三页键位布局、修饰键按钮、键位颜色状态优先级、lwjgl3ify 标签兼容

游戏设定

  • 控制设置界面 - 接管原版 GuiControls 的按钮 ID 总表、两步确认恢复全部、组合键"延迟到释放才提交"录入流程、1.7.10 混淆成员绕行
  • 公开 API - 其他 mod 读写组合键的 5 个静态方法与 ComboModifier 枚举,含"支持与否一律返回 false/NONE"的错误处理约定