按键检测(KeyHelper)
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 底层键盘轮询辅助类 |
| 源码 | squeek.wailaharvestability.helpers.KeyHelper(22 行) |
| 注册的按键绑定 | 无 |
| 配置项 | 无 |
| 调用点 | 无 |
概述
KeyHelper 提供两个静态方法,直接轮询 LWJGL 的 Keyboard 状态,用于判断修饰键是否按下。
⚠️ 本 fork 中这两个方法没有任何调用点。 源码里除
KeyHelper自身之外,没有任何类引用KeyHelper、isCtrlKeyDown或isShiftKeyDown。它是上游遗留代码。
两个方法
| 方法 | 判定键位 |
|---|---|
isCtrlKeyDown() |
Keyboard.KEY_LCONTROL 或 Keyboard.KEY_RCONTROL |
isShiftKeyDown() |
Keyboard.KEY_LSHIFT 或 Keyboard.KEY_RSHIFT |
macOS 的特殊处理
isCtrlKeyDown() 内含一段 macOS 兜底:
boolean isCtrlKeyDown = Keyboard.isKeyDown(Keyboard.KEY_LCONTROL) || Keyboard.isKeyDown(Keyboard.KEY_RCONTROL);
if (!isCtrlKeyDown && Minecraft.isRunningOnMac)
isCtrlKeyDown = Keyboard.isKeyDown(Keyboard.KEY_LMETA) || Keyboard.isKeyDown(Keyboard.KEY_RMETA);
即在 macOS 上按住 Command(⌘) 也算 Ctrl。源码注释解释了原因:GuiScreen#isCtrlKeyDown 在 Mac 上只认 OPTION 键(⌥),不认 Command,与 Windows/Linux 的行为不一致。
isShiftKeyDown() 没有这段兜底。
与真正热键的区别
| 要素 | KeyHelper |
真正的按键绑定 |
|---|---|---|
| 注册 | 无 | ClientRegistry.registerKeyBinding |
| 配置文件写入 | 无 | 写入 options.txt |
| 可在设置界面改键 | 否 | 是 |
| 冲突检测 | 无 | 有 |
| 用户可见性 | 不可见 | 可见 |
因此本模组没有任何用户可配置的按键,keybinding 维度在源码中不存在对应的注册内容。
相关条目
- WailaHandler 插件与提示栏组装 - 提示栏的实际"隐藏条件"是玩家潜行(
player.isSneaking()),与本类的 Shift 轮询无关 - WAILA 采集选项 - 6 个"仅潜行时显示"开关所依赖的判定