在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键,将语言改为希伯来语并再次按下。
我如何克服这个问题?我怎么知道哪个键被按下了?
答案 0 :(得分:0)
getCharacter()
会为您提供KeyEvent
后面的unicode角色:
与键入事件关联的unicode字符。对于 例如,char将具有值&#34; A&#34;对于生成的键类型事件 按SHIFT +&#39; a&#39;。对于按键和键释放事件,char 总是CHAR_UNDEFINED。