gtk - 如何在任何语言布局中将 GTK 键盘事件键转换为英语?
问题描述
我想在我的 GTK-3 应用程序中使用键盘快捷键(如 Ctrl+Z/Ctrl+C/Ctrl/V 等)。对于不同的键盘布局,我得到不同的键盘事件。例如,我的键盘有英文和俄文布局,所以我的俄文键“Я”位于“Z”。世界上有很多种语言。如何使应用程序适用于任何语言?
现在我以这种方式仅翻译 russin 键盘的键码:
func main_event_listener(event *gdk.Event){
eventObject := &gdk.EventKey{event}
key := eventObject.KeyVal()
state := eventObject.State()
key, state = GTK_TranslateKeyLayoutEnglish(key, state)
if state == gdk.GDK_CONTROL_MASK {
if key == gdk.KEY_z {
//Ctrl+Z
}
if key == gdk.KEY_c {
//Ctrl+C
}
if key == gdk.KEY_v {
//Ctrl+V
}
} else {
if key == gdk.KEY_F5 {
//F5
}
if key == gdk.KEY_Delete {
//Delete
}
}
}
func GTK_TranslateKeyLayoutEnglish(key uint, state uint) (uint, uint) {
key2 := key
state2 := state
if state2 > 8192 { //RUSSIAN Ctrl 8196 == English Ctrl 4
state2 -= 8192
}
switch key {
case gdk.KEY_Cyrillic_ya: //RUSSIAN 'я'
key2 = gdk.KEY_z
case gdk.KEY_Cyrillic_ef: //RUSSIAN 'ф'
key2 = gdk.KEY_a
case gdk.KEY_Cyrillic_che: //RUSSIAN 'ч'
key2 = gdk.KEY_x
case gdk.KEY_Cyrillic_es: //RUSSIAN 'с'
key2 = gdk.KEY_c
case gdk.KEY_Cyrillic_em: //RUSSIAN 'м'
key2 = gdk.KEY_v
//etc
}
return key2, state2
}
我期望更好地实现 GTK_TranslateKeyLayoutEnglish() 函数
解决方案
推荐阅读
- python - 给定一个字符串 s,在列表 ["a", "e", "i", "o", "u"] 中找到包含最多元音的 k 个元素的子串
- python - Spotify Verificaition - 通过脚本捕获重定向 url 的验证码
- groovy - 如何通过 groovy 调度脚本设置测试步骤的状态?
- javascript - 如何在 JavaScript 中检查值是否属于 Map 类型?
- scala - 在产生特定值之前,如何重复执行 Zio 计划?
- bash - 意外标记 `(' 附近的 Bash shell 语法错误
- javascript - 通过 useSelector 反应原生 useCallback 改变状态
- excel - VBA 日期存储为时间而不是 MM/DD/YY
- ada - 无法在 GNAT Studio 上设置快捷键
- kotlin-multiplatform - 导入 GoogleWebRTC pod 失败:找不到模块“GoogleWebRTC”