I found the problem. Your code expects one byte per character, but XLookupString returns an utf-8 character which can have up to 4 bytes. I patched lock.c to support up to 4 bytes, a diff is attached. Of course it's just a dirty hack, detection of non-printable characters is partially disabled, stars are shown for each byte instead of each entered letter, backspace works bytewise instead of character-wise and it may have further shortcomings. But it works for me with umlaut ö in my password.
** Patch added: "lock.c.diff" https://bugs.launchpad.net/ubuntu/+source/xscreensaver/+bug/671923/+attachment/1872657/+files/lock.c.diff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/671923 Title: In XScreensaver unlock screen it is not possible to insert "€" sign -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs