I'm using XTrackCAD 5.3.1GA on Win11. When I start placing text (e.g. using ctrl + shift + X) I can not enter a decimal dot in the text. I get an "error ping" (as if it's an invalid command) and there is no decimal dot. I can afterwards edit the text via properties and the dot is allowed.
E.g. typing "space = 2.54" becomes "space = 254".
Anonymous
I gave this bug to Claude. See the full analysis below.
The bug is in the Win32 wlib, not in cselect.c or ctext.c, and it isn't really specific to the German layout. The fix is a one-line change in app/wlib/mswlib/mswmisc.c.
I haven't changed anything, and I can't build or test Win32 here.
What happens when you type . with the mouse over the canvas:
up two different kinds of value.
(mswmisc.c:2897). On the way it marks the message as a special key ("extended", bit 24 of lParam) if wParam equals VK_UP, VK_DOWN, VK_RIGHT, VK_LEFT, VK_INSERT or
VK_DELETE. That marking is meant for the number-pad keys on WM_KEYUP, but it is applied to WM_CHAR too.
The same problem hits five other characters, because their codes also equal one of those key codes:
All of these are lost when typed with the cursor over the canvas, on any keyboard layout. A real Delete key is not affected: it produces no WM_CHAR and reaches the
canvas through the WM_KEYUP path.
Proposed fix (mswmisc.c:2898): only mark these keys as special for WM_KEYUP.
After this, typed characters go through as text. The number-pad and real cursor/Ins/Del keys keep working, because they still come in on WM_KEYUP. No real character key
is a Windows "extended" key, so a typed character never carries that mark and the draw window's check at mswdraw.c:1791 treats it as text.
To check on Windows, with the cursor over the canvas:
Last edit: Martin Fischer 2026-10-05