gpt4 book ai didi

java - 如何发布仅包含键盘字符(无修饰符)的 SWT 键事件?

转载 作者:行者123 更新时间:2023-11-30 03:43:50 25 4
gpt4 key购买 nike

是否可以发布包含焦点小部件应接收的字符的 Key 事件?

我想制作一个简单的弹出键盘,它生成 Key 事件,并且我想让弹出键盘在键映射方面完全独立于物理键盘。

我目前看到的是,当我将字符设置为 '(' 而不生成 Shift 事件时,我得到一个 '8' (我有一个德语键盘,其中 '(' 是 Shift+8)。我假设在使用不同的键盘,“(”将再次显示为其他内容。

有什么办法可以绕过映射吗?

我当前的代码:

private void postKey(Key key) {
if(shift) {
Event ke = new Event();
ke.type = SWT.KeyDown;
ke.keyCode = SWT.SHIFT;
refWidget.getDisplay().post(ke);
}

Event ke = new Event();
ke.type = SWT.KeyDown;
ke.character = shift ? key.shifted[0] : key.normal[0];
refWidget.getDisplay().post(ke);

ke.type = SWT.KeyUp;
refWidget.getDisplay().post(ke);

if(shift) {
Event ev = new Event();
ev.type = SWT.KeyUp;
ev.keyCode = SWT.SHIFT;
refWidget.getDisplay().post(ev);
}
}

最佳答案

SWTBot wiki 有一个页面 keyboard layouts

如果您坚持使用 Display-post(),那么您需要知道当前的键盘布局并将按键映射到字符 (shift + 8 -> '('),就像您已经观察到的那样。您也许可以重用或采用 SWTBot 中的相关类(SWTKeyboardStrategyKeyboardLayout)。

作为替代方案,该页面列出了使用 AWT Robot 来模拟击键的 AWTKeyboardStrategy,这可能值得尝试。

附注:如果您必须发布 Shift+x 键事件,您可以在 stateMask 中指定 Shift 键,如下所示:

    Event ev = new Event();
ev.type = SWT.KeyUp;
ev.stateMask = SWT.SHIFT;
ev.keyCode = ...

关于java - 如何发布仅包含键盘字符(无修饰符)的 SWT 键事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26232694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com