The X server usually generates both press and release events whenever an autorepeating key is held down. If an XKB-aware client enables the DetectableAutorepeat per-client option for a keyboard, the server sends that client a key release event only when the key is physically released. For example, holding down a key to generate three characters without detectable autorepeat yields:
Press -> Release -> Press -> Release -> Press -> Release
If detectable autorepeat is enabled, the client instead receives:
Press-> Press -> Press -> Release
Note that only clients that request detectable autorepeat are affected; other clients continue to receive both press and release events for autorepeating keys. Also note that support for detectable autorepeat is optional; servers are not required to support detectable autorepeat, but they must correctly report whether or not it is supported.
titanous
changed the title
exp/shiny: key repeats reported as release + press
x/exp/shiny: key repeats reported as release + press
Jan 9, 2017
Yeah, it's a bug in the x11driver, although if fixing this involves XKB's DetectableAutorepeat, as @as suggested, then it's not going to be trivial. The xgb library that we use says, in https://github.com/BurntSushi/xgb/blob/master/doc.go: "XKB is the only extension that intentionally does not work... due to its complexity and my current mental incapacity to test it."
What did you do?
This program opens an x/exp/shiny window and reports key presses:
What did you expect to see?
According to https://github.com/golang/mobile/blob/master/event/key/key.go#L50, key repeats should report key.DirNone. So when pressing and holding down a key for a while, I expect to see:
What did you see instead?
Holding down a key results in repeated Release/Press events:
What version of Go are you using (
go version
)?go version go1.7.1 linux/amd64
What operating system and processor architecture are you using (
go env
)?The text was updated successfully, but these errors were encountered: