That might or might not be a good idea. GetAsyncKeyState() gets the state of the key at the time of the function call, whereas when doing event processing you usually want the state of the key at the time when the event happened. Since GTK does not work in real time, these two moments might not be simultaneous.
Well currently functions like gdk_device_get_state don’t return the correct mouse state for me at all. So at least they work for me with the given “fix”. So while you are right I think it’s less of an issue than having gdk_device_get_state not work.
Then there’s a bug in gdk_device_get_state() in W32 GDK backend. Or maybe not. That function gets current state of the device, without tying it to any event. Maybe the state it returns is correct at the moment when you are calling it (basically, the same argument as above, only in reverse).