Golang中的位掩码问题,还是GoGTK3的问题?
Golang中的位掩码问题,还是GoGTK3的问题? 我正在尝试在使用 key-press-event 的 GTK 应用程序中检测控制键何时被按下。这个页面似乎大致展示了如何做到这一点(使用 C 语言):
https://developer.gnome.org/gtk3/stable/checklist-modifiers.html
这是我目前拥有的代码,但它不起作用。我开始怀疑我在第 5 行(keyEvent.KeyVal() & modifiers)进行位掩码操作的方式不正确。在 Go 中是这样进行位掩码操作的吗?或者可能是我没有正确理解 C 代码……
// Connect to the key press event
win.Connect("key-press-event", func(window *gtk.Window, event *gdk.Event) {
keyEvent := gdk.EventKey{Event: event}
modifiers := uint(gtk.AcceleratorGetDefaultModMask())
isControlPressed := (keyEvent.KeyVal()&modifiers == gdk.GDK_CONTROL_MASK)
if isControlPressed {
fmt.Printf("Control is pressed")
}
})
更多关于Golang中的位掩码问题,还是GoGTK3的问题?的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
我仍然不知道应该如何操作,但我知道这一行代码存在严重问题:
modifiers := uint(gtk.AcceleratorGetDefaultModMask())
它导致了其他非常奇怪的问题(https://github.com/gotk3/gotk3/issues/542)。
因此我现在要关闭这个问题,因为它似乎与 Go 和位掩码无关。这很可能是一个 gogtk3 的问题,或者更可能是我使用方式有误。
更多关于Golang中的位掩码问题,还是GoGTK3的问题?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


