1

在 JavaFX(实际上是 ScalaFX)应用程序中,我想允许用户通过一系列键盘键调用命令。无论当前的键盘布局(语言)如何,这些命令都应该可以工作。例如,用户可能正在输入泰语(ภาษา),然后想要通过按“Escape”而不是“S”(或“:”然后按“w”,vim 样式)来保存。

我发现 KeyEvents 为非英语(非 ASCII?)字符提供了未定义的键码。

这段代码:

onKeyPressed = (k: KeyEvent) => {
  println("text: " + k.text + "  " + "code name: " + k.code.name)
}

给出:

text: a  code name: A  
text:   code name: Alt          << Alt + Shift switches from English to Hebrew
text:   code name: Shift  
text: ש  code name: Undefined  

按 A 时,将语言更改为希伯来语并再次按下。

我该如何克服这个问题?无论语言如何,我如何知道按下了哪个键?

类似的未回答问题:JavaFX KeyEvent 和重音字符

4

1 回答 1

0

getCharacter()将为您提供后面的 unicode 字符KeyEvent

与键类型事件关联的 Unicode 字符。例如,对于通过按 SHIFT + 'a' 生成的键类型事件,char 将具有值“A”。对于按键按下和按键释放事件,char 始终为 CHAR_UNDEFINED。

于 2014-10-25T01:06:45.903 回答