我目前正在使用 HaxeUI 库开发一个应用程序。在我的应用程序中,我正在创建TextInput
基于 OpenFL 的TextField
. 不幸的是,在为 Windows 或 Neko 编译时,这些字段不允许使用Ctrl+ V、Ctrl+C或Ctrl+等基本功能A。
结果,我觉得我可以自己扩展TextInput
类,它只使用KeyboardEvent.KEY_DOWN
事件来检测这些特定功能。以下是我的实现的相关片段:
class SmartTextInput extends TextInput {
public function new() {
super();
this.addEventListener(KeyboardEvent.KEY_DOWN, performPress);
}
private function performPress(e:KeyboardEvent):Void {
if(e.ctrlKey) {
trace("CTRL PRESSED!");
switch(e.keyCode) {
case Keyboard.V: trace("PASTE!");
}
}
}
}
看起来如果我按Ctrl然后V,它应该打印出"CTRL PRESSED!"
and "PASTE!"
。但是,我只得到"CTRL PRESSED!"
,所以它不起作用。事实上,经过一番激烈的测试,我发现如果Ctrl按住按钮,则KeyboardEvent.KEY_DOWN
不会注册除Alt和键之外的任何其他按键Shift。也就是说,除非先按下,否则无法同时检测Ctrl和V保持;但是,由于通常先按下,这对我不起作用。 VCtrl
有没有办法可以在 OpenFL for Windows中注册Ctrl+之类V的操作?TextField
或者至少,有没有一种方法可以检测到的顺序按键Ctrl,然后是V?我已经尝试过CtrlonKEY_DOWN
和Von KEY_UP
,但它对实际使用的响应速度不够快。
我正在使用 OpenFL 3.6.0、Lime 2.9.0 和 HaxeUI 1.8.17。需要注意的是,HaxeUI 需要 OpenFL Legacy。在非传统的 OpenFL 中,我能够让Ctrl+V工作得很好。