Vamos a ver si te entendi bien.
Con el siguiente codigo:
Código Delphi
[-]
var
i,j,k: Integer;
begin
Memo1.Clear;
for i:= 0 to 255 do
begin
j:= MapVirtualKey(i,1);
k:= MapVirtualKey(j,2);
if j <> 0 then
begin
if k > 32 then
Memo1.Lines.Add(Format('%.2x = %.2x = %s',[i,j,char(k)]))
else
Memo1.Lines.Add(Format('%.2x = %.2x = ',[i,j]))
end;
end;
end;
Puedo mostrar en un memo una tabla donde la primera columna es el "scan code" (el código correspondiente a una tecla), la segunda es su "Virtual-key code" (como la interpreta el sistema operativo) y la tercera columna es su representación como carácter (si la tiene). Para cada layout esa tabla debería de ser diferente.
¿Es lo que buscabas?