JavaFX - 获取非ASCII字符的KeyEvent

时间:2014-10-15 21:23:11

标签: java javafx keyboard-events scalafx

在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 and accented characters

1 个答案:

答案 0 :(得分:0)

getCharacter()会为您提供KeyEvent后面的unicode角色:

  

与键入事件关联的unicode字符。对于   例如,char将具有值&#34; A&#34;对于生成的键类型事件   按SHIFT +&#39; a&#39;。对于按键和键释放事件,char   总是CHAR_UNDEFINED。