gosu does not properly handle shifts that result in non-alphabetic characters when dealing with X; this is because XConvertCase only works for alphabetic characters. I also added a test case but it depends on the command line to xdotool; this dependency could be replaced using rubys ffi, possibly