Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » bestimmte tasten auf tastendruck abfragen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
13.09.2007, 14:17 Uhr
~dieschande
Gast


Hallo,

wie kann ich die Tastendrücke für Punkt, Komma, Bindestrich, ALT-GR und ß abfragen. Ich hab schon rumgesucht aber finde nur Erklärungen zu Buchstaben und den Virtual Keys, aber das tuts nicht mit den Tasten die ich gerne abfragen möchte. Hab auch schon Hexcodes probiert aber ich weiss auch nicht so recht wie ich die anwenden soll da es auch nicht zum gewollten Ergebnis führt.

so ist es bis jetzt umgesetzt:


C++:
LRESULT    CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
// ...
//bKeyStorage[256] - so groß ist es

     case WM_KEYDOWN:
     {    
          bKeyStorage[wParam] = TRUE;        
          return 0;    
     }

     case WM_KEYUP:
     {    
          bKeyStorage[wParam] = FALSE;        
          return 0;    
     }
// ...
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.09.2007, 01:07 Uhr
Hans
Library Walker
(Operator)


Hi,

wie Du schon heraus gefunden hast, versendet Windows auch Informationen darüber, ob eine Taste gedrückt wurde, oder auch wieder losgelassen wurde. Nun liefert die Tastatur aber keine ASCII-Codes, sondern sogenannte Scancodes. Jeder Taste, die auf einer Tastatur zu finden ist, ist ein solcher Scancode zugeordnet, und den musst Du abfragen. Zum Thema Scancodes gab es hier im Forum auch schon ein paar Beiträge, die Du Dir mal vornehmen solltest. Da findest Du schon Wege zur Lösung Deines Problems.

Jetzt noch was anderes: ich weis ja nicht, ob Du Deinen Nickname auf Deine Ahnungslosigkeit beziehst, soll mir auch egal sein. Aber ich würde Dir Empfehlen, Dir einen anderen Nickname auszusuchen, falls Du hier öfter Fragen stellen willst.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 14.09.2007 um 01:09 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.09.2007, 04:59 Uhr
~dieschande
Gast


ich habe es jetzt soweit hinbekommen, ausser das mit ALT-GR aber das mach ich später mal.


Zitat von Hans:
Jetzt noch was anderes: ich weis ja nicht, ob Du Deinen Nickname auf Deine Ahnungslosigkeit beziehst, soll mir auch egal sein. Aber ich würde Dir Empfehlen, Dir einen anderen Nickname auszusuchen, falls Du hier öfter Fragen stellen willst.


ich hab habe es mir angewöhnt in programmierforen pro thread mit einem anderen nick zu schreiben weil ich vermeiden will das ich negativ behandelt werde, wenn meine vorherigen threads von vermeintlicher faulheit zeugen. das ist das leid der anfänger die nicht die erfahrung haben, zumteil nicht wissen nach was sie suche müssen. dann wagt man es doch ein thread zu erstellen und bekommt einfach stumpfe antworten wie google oder such mal einfach weiter. wie etwa deine antwort

aber der begriff 'scancodes' hat dann doch was gebracht, aber
www.fun-soft.de/showtopic.php?threadid=10958

dort steht das für das 'ß': 0C 00
wie müsste ich das konkret anwenden? ich hab das jetzt so gemacht:

C++:
if(bKeyStorage[0xDB])
{
// für die Taste ß
}


aber wenn ich auf 'ß' drücke, übersendet Windows eigentlich dieses Û. und für diese Û ist als hexcode das 0xDB angegenben. wenn ich also jetzt auf ß drücke frage ich den hexcode von Û ab und bekomme eine reaktion auf die taste ß.

hat das einen bestimmten grund?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.09.2007, 07:45 Uhr
Tommix



Hallo,

Zitat von ~dieschande:
ich hab habe es mir angewöhnt in programmierforen pro thread mit einem anderen nick zu schreiben weil ich vermeiden will das ich negativ behandelt werde...

Du solltest die Leute, von denen Du Hilfe erwartest, nicht derart hintergehen.
Zu Deiner Frage, Du bekommst mit

C++:
int vKey = VkKeyScan('ß'); // Unicode: VkKeyScan(L'ß')


die Zuordnung von Virual Keys zu bestimmten Zeichen heraus. Das hängt vom jeweiligen Keyboard-Layout ab (die meisten Sprachen kennen sowas wie ß ja gar nicht) und ist deswegen nicht "fest verdrahtet".

Gruß, Tommix


Bearbeitung:

Für das, was Du da machst gibt es übrigens mit GetKeyboardState auch eine fertige Funktion.


Dieser Post wurde am 14.09.2007 um 07:47 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.09.2007, 15:40 Uhr
~dieschande
Gast


danke für die hilfe


aber ich denke hintergehen kann man nicht sagen, vielleicht ist es eher unpersönlich. ich will ja auch keinen verurteilen. aber wenn ich bedenke das ich vielleicht nur, wenns hoch kommt, einmal im monat eine frage poste dann ist das sicherlich kein problem.

und wenn ich selbst mal eine antwort auf eine frage schreibe ist der name unbedeutend, hauptsache dem fragenden ist geholfen und meine antwort ist grundsätzlich nicht falsch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.09.2007, 21:45 Uhr
Hans
Library Walker
(Operator)



Zitat von ~dieschande:

das ist das leid der anfänger die nicht die erfahrung haben, zumteil nicht wissen nach was sie suche müssen. dann wagt man es doch ein thread zu erstellen und bekommt einfach stumpfe antworten wie google oder such mal einfach weiter. wie etwa deine antwort


Hi,

also da hast Du aber was im falschen Hals bekommen. Ich habe geschrieben, das Du hier im Forum suchen sollst, und das Stichwort, nämlich "Scancodes" hab ich Dir auch gegeben. Aber es sollte Dir auch klar sein, das wir nicht immer alles widerholen wollen, wenn wir wissen, das diese oder eine ähnliche Frage hier schon beantwortet wurde.


Zitat von ~dieschande:

aber der begriff 'scancodes' hat dann doch was gebracht,


Ja also hat das Stichwort doch was gebracht.


Zitat:

aber
www.fun-soft.de/showtopic.php?threadid=10958

dort steht das für das 'ß': 0C 00
wie müsste ich das konkret anwenden? ich hab das jetzt so gemacht:

C++:
if(bKeyStorage[0xDB])
{
// für die Taste ß
}




guckst Du auch mal hier...


Zitat:
aber wenn ich auf 'ß' drücke, übersendet Windows eigentlich dieses Û. und für diese Û ist als hexcode das 0xDB angegenben. wenn ich also jetzt auf ß drücke frage ich den hexcode von Û ab und bekomme eine reaktion auf die taste ß.

hat das einen bestimmten grund?

Das dürfte mit den eingestellten Zeichensätzen zusammen hängen.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: