I just tried this code:
if (ssShift in Shift) or (ssCaps in Shift) then
begin
if not (Key in [VK_0, VK_1, VK_2, VK_3, VK_4, VK_5, VK_6, VK_7, VK_8, VK_9, VK_DELETE, VK_LEFT, VK_RIGHT, VK_HOME, VK_END, VK_BACK]) then
Key := 0;
end
else
begin
if not (Key in [VK_NUMPAD0, VK_NUMPAD1, VK_NUMPAD2, VK_NUMPAD3, VK_NUMPAD4, VK_NUMPAD5, VK_NUMPAD6, VK_NUMPAD7, VK_NUMPAD8, VK_NUMPAD9, VK_DELETE, VK_LEFT, VK_RIGHT, VK_HOME, VK_END, VK_BACK]) then
Key := 0;
end;
and it fails too. Typing fast chars makes them written (any)
also the CapsLock doesn't work with numbers over the letters (numpad works well).