RawInput & extended keys



  • Hallo zusammen,

    ich versuche gerade Tastatureingaben per RawInput auszuwerten. Wenn allerdings NumLock deaktiviert ist, erhalte ich für die extended keys (arrows, end, home usw.) 42 als VKey und 255 als Scancode. Prüft man das ganze mit einem Keyboard Hook ändern sich natürlich die KeyCodes nicht, im Vergleich zu aktiviertem NumLock aber es wird das Extended- Flag gesetzt. Nur leider dringt diese Information nicht bis in den WM_INPUT handler durch, die Tasten werden komplett mit 255 maskiert. Ich hab jetzt IMO schon sämtliche RAWINPUT- Strukturen durchsucht aber werde einfach nicht fündig. Wär schön wenn jemand dazu eine Idee hätte.

    :xmas1:


  • Mod

    Kontrolliere mal RI_KEY_E0 und RI_KEY_E1. IMHO sind das die Flags für Extended.

    Steht auch als Kommentar von einem Nutzer in der Beschreibung.
    Die Flags werden hier von MS nicht anständig beschreiben.
    http://msdn.microsoft.com/en-us/library/ms645575(VS.85).aspx



  • Das Flag wird gesetzt nur der Scancode bleibt immer derselbe (255). Hab mich da wohl etwas unglücklich ausgedrückt. Ich hab jetzt aber entdeckt, das daß nur für GetInputData gilt. GetInputBuffer gibt in diesem Fall, und nur in diesem, 1 zurück und man findet dann auch den entsprechenden Scancode. Das Verhalten ist mir aber ziemlich schleierhaft. Auch die Funktionsbeschreibung scheint fehlerhaft. Glaubt man der MSDN und ruft GetInputBuffer mit pData = NULL auf sollte in nSize eigentlich die Größe in Bytes für pData stehen. Setzte ich diese Größe ein (mit pData != NULL) erhalte ich einen Fehler (122, nicht genügend Speicher), setze ich jedoch die Größe der RAWINPUTSTRUKTUR ein klappts. Weiter können ja offensichtlich auch mehrere RAWINPUT Strukturen zurückgegeben werden oder versteckt sich da ein spezielles Verhalten der MFC? (Mir wärs lieb, wenn ich mich darauf verlassen könnte dass immer nur eine RAWINPUT- Struktur zurückgegeben wird)


  • Mod

    Mit der MFC hat das gar nichts zu tun, wieso denkst Du das? Das ist pure WinAPI.



  • Wieder da, musste mal ein paar Tage in den Schnee :xmas1: :xmas2:

    Tja mir gehen langsam die Optionen aus. Ich lese oft, daß WM_INPUT besser (bugfreier) in PreTranslateMessage behandelt werden sollte aber was macht das für einen Unterschied für die API?


Anmelden zum Antworten