Hi,
Ich habe einen 2D-Scanner an einer
VCL-Anwendung als USB-Gerät. Der Scanner schickt die Virtual Key Codes, die von Windows dann übersetzt werden (nun ja, von der
VCL, aber über die
API).
Nun habe ich das Problem, das die PC z.B. ein kyrillisches Layout haben, aber der Scanner meint, dort wäre eine US-Tastatur. Nun könnte man ja entweder den Scanner oder den PC umkonfigurieren, aber das machen die nicht.
Ich verwende zum korrekten Empfangen diese Routine im OnKeyDown:
Delphi-Quellcode:
function GetCharFromVirtualKey(Key: Word): string;
var
keyboardState: TKeyboardState;
asciiResult: Integer;
begin
GetKeyboardState(keyboardState) ;
SetLength(Result, 2) ;
asciiResult := ToAscii(key, MapVirtualKey(key, 0), keyboardState, @Result[1], 0) ;
case asciiResult of
0: Result := '';
1: SetLength(Result, 1) ;
2:;
else
Result := '';
end;
end;
Das klappt auch, sofern die Tastatur richtig eingestellt ist. wenn nicht, dann eben nicht. Nun meine Frage: Wie kann ich diese Funktion umschreiben, damit nicht das auf dem PC eingestellte Layout verwendet wird (ich vermute, das das so ist), sonder fix das englische Layout (US-EN)?
Danke für Stupser in die richtige Richtung.
Danke für Tips.