Locale-specific keys plus modifier keys issue
kristomu opened this issue · 4 comments
While editing objects on a non-US computer on Linux, the editor seems to ignore Shift for keys that have been redefined by locale. For instance, on a Scandinavian keyboard, the less than and greater than keys are at the bottom left - no shift gives less-than and Shift plus the key gives greater-than.
Pressing they key alone gives less-than, as expected, but holding Shift does nothing: the key still comes out as less-than instead of greater-than. This in effect makes it impossible to type certain characters in the editor without using Ctrl+A. E.g. on the same type of keyboard, Shift+(the key to the right of 0) gives a question mark, and the key alone gives a +; object editing will always output + regardless of whether Shift is active at that moment.
^ This was fixed in #29 --kvance
Keys that have no analog in English do nothing, e.g. æ doesn't register at all. It'd be nice to have it output 91h (without shift) and 92h (with), but I guess that's a bit of a different issue and more of a feature request than a bug :-)
Leaving this open as the feature request would still be nice to have
If it may be of help, my Linux FreePascal port of asiekierka's recconstruction has a cp437 to Unicode table, here: https://github.com/kristomu/linux-reconstruction-of-zzt/blob/master/src/unicode.pas. C++ code here: https://github.com/kristomu/linux-reconstruction-of-zzt/blob/cport/csrc/unicode.h and https://github.com/kristomu/linux-reconstruction-of-zzt/blob/cport/csrc/unicode.cxx.
I just fixed a bug in the C++ code. The Unicode token corresponding to the last CP437 point should be 0xA0, not 0x20, otherwise the reverse mapping (Unicode to CP437) will make every Unicode space into a CP437 0xFF point.
All done!