Theseus 模组文档
API 参考 / 只读视图、场景、音频与文本

InputEvent


输入事件抽象(宿主把内核输入转换为该事件)。模组在 Scene#handleInput(InputEvent) 中收到它,并转发给聚焦的输入组件(如 TextField 的 handleInput)。

方法速览

方法用途
keyCode()键码(与 java.awt.event.KeyEvent 一致)
type()事件类型
text()提交文本(仅 TEXT_INPUT 有效)
mouseX() / mouseY()鼠标逻辑坐标(仅鼠标事件有效)
mouseButton()鼠标按钮(1 = 左键)
shiftDown() / ctrlDown()事件发生时的修饰键状态

keyCode()

java
int keyCode();

行为:键码,与 java.awt.event.KeyEvent 键码一致;文本事件(TEXT_INPUT)与鼠标事件中恒为 0。 示例:

java
if (event.keyCode() == java.awt.event.KeyEvent.VK_ENTER) { submit(); }

type()

java
InputType type();

行为:事件类型,见 InputType。宿主当前对模组场景只派发 KEY_PRESSED、TEXT_INPUT 与三种鼠标事件(不派发 KEY_HELD / KEY_RELEASED)。 示例:

java
if (event.type() != InputType.KEY_PRESSED) return false;

text()

java
default String text();

行为:系统输入法/键盘提交的文本,仅 TEXT_INPUT 有效,其余事件返回空串。宿主按字符逐个派发(每个字符一个事件,text() 长度为 1)。 示例:

java
if (event.type() == InputType.TEXT_INPUT) {
    field.typeString(event.text());
}

mouseX()

java
default int mouseX();

行为:鼠标事件的 X,坐标为场景渲染空间的逻辑坐标(1280×720,宿主已从画布像素换算);键盘与文本事件恒为 -1。 示例:

java
int x = event.mouseX();

mouseY()

java
default int mouseY();

行为:鼠标事件的 Y(逻辑坐标);键盘与文本事件恒为 -1。 示例:

java
int y = event.mouseY();

mouseButton()

java
default int mouseButton();

行为:鼠标按钮,1 = 左键;键盘与文本事件返回 0。 示例:

java
if (event.mouseButton() == 1) { /* 左键 */ }

shiftDown()

java
default boolean shiftDown();

行为:事件发生时 Shift 是否按下(宿主填充),供输入组件区分「移动光标」与「扩展选区」;默认 false。 示例:

java
field.keyPressed(event.keyCode(), event.shiftDown(), event.ctrlDown());

ctrlDown()

java
default boolean ctrlDown();

行为:事件发生时 Ctrl 是否按下(宿主填充),供输入组件识别 Ctrl+C/X/V/Z/Y/A 组合;默认 false。 示例:

java
if (event.ctrlDown()) { /* 快捷键分支 */ }

完整签名

java
public interface InputEvent {
    int keyCode();
    InputType type();
    default String text();
    default int mouseX();
    default int mouseY();
    default int mouseButton();
    default boolean shiftDown();
    default boolean ctrlDown();
}

线程:源码未声明额外线程约束(宿主在渲染线程同步派发)。

性能:源码未标注额外性能约束(不可变事件对象)。

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