Java SWT字符到状态掩码和键码

Java SWT字符到状态掩码和键码,java,swt,Java,Swt,我有一个字符,比如说“/”,我希望它被转换成键码和状态掩码: “/”->StateMask=131072,KeyCode=55 是否有一个我不知道的函数可以做到这一点?我假设您试图在文本或类似文本中进行某种验证 首先,一个关于关键事件的小讲座: 国家面具 生成事件时键盘修改键和鼠标遮罩的状态 键码 键入的键的键代码,由SWT类中的键代码常量定义。当事件的字符字段不明确时,此字段包含原始字符的unicode值。例如,键入Ctrl+M或Return都会导致字符“\r”,但键入Return时,keyC

我有一个字符,比如说“/”,我希望它被转换成键码和状态掩码:

“/”->StateMask=131072,KeyCode=55


是否有一个我不知道的函数可以做到这一点?

我假设您试图在文本或类似文本中进行某种验证

首先,一个关于关键事件的小讲座:

国家面具

生成事件时键盘修改键和鼠标遮罩的状态

键码

键入的键的键代码,由SWT类中的键代码常量定义。当事件的字符字段不明确时,此字段包含原始字符的unicode值。例如,键入Ctrl+M或Return都会导致字符“\r”,但键入Return时,keyCode字段也将包含“\r”

在您的情况下,似乎要将输入的字符与/进行比较。在这种情况下,不需要状态掩码和键码。只需执行e.character=='/'。以下是一个例子:

public static void main(String[] args)
{
    final Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new GridLayout(1, false));

    Text text = new Text(shell, SWT.BORDER);
    text.addListener(SWT.Verify, new Listener()
    {
        @Override
        public void handleEvent(Event e)
        {
            if (!(e.character == '/'))
                e.doit = false;
        }
    });

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }
    display.dispose();
}

请注意:在我的机器Windows 7英国键盘布局上,stateMask和keyCode的值分别为0和47。

Hi Baz,谢谢你的回答,很抱歉我太不精确了。在我们的应用程序中,我们实际上是从字符串中计算出状态掩码和键代码,例如Alt+/。这种转换并不总是正确的,所以我正在寻找一个已经在工作的实用程序函数。操作系统上的键码是相同的吗?@matthias你需要它们做什么?我很确定每个字符的键码和状态掩码都取决于键盘布局,正如你在我回答下面的注释中所看到的。因此,一个字符的键码在整个操作系统中不是唯一的?@matthias不确定。我现在不能在这里测试它,但是我得到的斜杠/的值与你在问题中得到的值不同,这让我得出了我的假设。