I have noticed an odd difference in unicode tranlsation in DGA and non-DGA modes. It’s easily reproducible using the checkkeys test program.

When you run checkkeys in non-DGA mode, you can type keys while holding a modifier, like you would when you make a colon (shift-semicolon), and the unicode translation would be set to colon shown in parenthesis. When running checkkeys in DGA mode, as root, when you try to type a colon, the unicode translation is always a semicolon. (you have to exit to see your typing) This is true with other modifiers like control.

I found this out while trying dosbox in DGA. It’s impossible to type a colon. Kind of makes typing ‘c:’ impossible =) so I can’t use it in DGA unless I hack it (which I did) I have tracked down the problem and found that dosbox doesn’t distinguish between DGA and non-DGA. I went an checked the code where SDL sets the SDL_keysym. I found that when calling XKeycodeToKeysym at line 618 in SDL12src/video/x11/SDL_x11events.c doesn’t set xkey->state like it does in non-DGA when trying to type colon in DGA mode. So XLookupString at line 716 doesn’t pull out the translation I want. Does anybody know why there is a difference with DGA and non-DGA? I’m using SDL cvs as of May 1, 2003 right now.