Theseus 模组文档
API 参考 / 事件系统

KeyEvent


全局按键分发时投递:按下 / 抬起 / 长按,type() 为 InputType.KEY_PRESSED / KEY_RELEASED / KEY_HELD。宿主由进程级转播桥(GlobalKeyEventRelay)把内核按键事件同步转译到模组总线,一次订阅跨游玩有效。

方法速览

方法用途
keyCode()按键码(与宿主键位编码一致)
type()输入类型

keyCode()

java
public int keyCode();

行为:返回按键码,与宿主键位编码一致(AWT key code 口径)。

type()

java
public InputType type();

行为:返回输入类型:KEY_PRESSED / KEY_RELEASED / KEY_HELD。转播桥对未知类型直接丢弃。

示例

java
ctx.eventBus().subscribe(KeyEvent.class, event -> {
    if (event.type() == InputType.KEY_PRESSED && event.keyCode() == 0x70) {
        toggleOverlay();
    }
});

完整签名

java
public class KeyEvent extends CancellableEvent {
    public KeyEvent(int keyCode, InputType type);
    public int keyCode();
    public InputType type();
}

行为核验与注意:类型上继承 CancellableEvent,契约语义是「DENY 表示宿主吞掉该次按键、不再向场景 / 模组转发」;但当前宿主实现(GlobalKeyEventRelay)只做转译并 post,不读取返回事件的 isDenied(),因此 DENY 目前不会改变按键分发。需要真正拦截按键请用 LaneInputEvent.Pre(游玩内轨道)或全局快捷键能力(ModContext#hotkeys())。玩家可见、需要改键的快捷键应经全局快捷键注册,不要用本事件实现隐性快捷键。

线程:游戏线程(内核输入分发线程)。

稳定性:2.0 起冻结,2.x 内只增不破。