Ja, bei mir kommt auch 111 aka VK_DIVIDE raus, aber nach ShortCutToText kommt auch wieder Umsch+- raus,
selbst wenn ich die Konvertierung ohne das Shift mach, also nur '-'.
Der erste Teil (Alt/Ctrl/Shift) wird mit der Sprache übersetzt, mit welcher dein Programm kompiliert wurde.
(oder, wenn du mit Packages arbeites, dann auch der Systemsprache, falls eine passende Sprachdatei der
RTL/
VCL-BPLs mitgeliefert wurde)
Aber die restlichen Zeichen sind "binär" hart kodiert.
Früher, in den alten Delphis mit
ANSI, da hängt es von der Systemsprache ab, aber im
Unicode sollte es da keine Probleme mehr geben.
Welche Delphi-Version nutzt du? (vor Delphi 2009 war es
ANSI)
Das Tastaturlayout hat nur Einfluss auf die Umrechnung von ScanCode der Tastatur zum VirtualKeyCode.
Und die VirtualKeyCodes sind überall gleich, womit dann die ShortCut-Funktionen arbeiten.
Aber ja wenn das Tastaturlayout im Windows nicht zu Tastatur passt, dann kommt natürlich im Windows/Programm nicht das an, was aufgedruckt wurde.
[EDIT]
ShortCutToText geht doch über den ScanCode (
VCL.Menus.GetSpecialName >
MapVirtualKey und
GetKeyNameText), womit doch das Tastaturlayout einen Einfluß hat,
aber obwohl das Layout bei mir stimmt, ebenso das falsche Ergebnis, allerdings nur aus Richtung der Tastatur.
VK zu SC und Zurück müsste "eigentlich" stimmen, selbst mit dem falschen Layout, so lange das Zeichen irgendwo auf der Tastatur drauf ist.
Im US-Layout steht da unten /? wo bei uns -_ liegt.
http://kbd-intl.narod.ru/english/
Ich hab auch keine Ahnung, warum die Entwickler hier über den ScanCode gehn, anstatt direkt in ein Char umzuwandeln, mit MapVirtualKey+MAPVK_VK_TO_CHAR,
wobei dort dann aus 111 korrekt ein '/' wird, anstatt dem falschen '-' aus MapVirtualKey+GetKeyNameText. (umgekehrt sollte es dann wohl auch passen)