Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#1

GetKeyboardState für US-Tastatur

  Alt 4. Jul 2013, 07:50
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.
  Mit Zitat antworten Zitat