ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Tastaturabfrage systemfreundlich ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
26.03.2004, 16:29 Uhr bubblebobble Posts: 707 Nutzer |
Wie kann man eine Taste auf dem Keyboard systemfreundlich abfragen ? Ich meine nicht IDCMP_RAWKEY oder sowas, ich muss wissen wie lange sie gedrückt ist oder wann sie losgelassen wird. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, Asteroids, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
26.03.2004, 18:19 Uhr thomas Posts: 7717 Nutzer |
Mit IDCMP_RAWKEY bekommst du mit, wann eine Taste gedrückt wird und wann sie losgelassen wird, das sollte doch reichen. Ansonsten schau dir mal die lowlevel.library an, QueryKeys(). Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
26.03.2004, 21:56 Uhr bubblebobble Posts: 707 Nutzer |
Nein, bei IDCMP_RAWKEY bekommst du nur den Anschlag und weiter je nach Einstellungen in den Prefs, (Keyrepeat). Damit kann man aber nix anfangen. Die lowlevel.lib will ich nicht nutzen. Gehts noch irgendwie anders ? -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, Asteroids, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
26.03.2004, 22:04 Uhr AchimStegemann Posts: 112 Nutzer |
Wie wärs mit IDCMP_VANILLAKEY? Gruß Achim [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 02:38 Uhr bubblebobble Posts: 707 Nutzer |
Vanilla key ist das gleiche wie RawKey, nur wird der RawKey über den Tastaturbelegung gemapped. Reagieren tuen aber beide gleich. Es gibt also keine Möglichkeit, die Tastatur abzufragen für ein Spiel, sodass es systemkonform und überall läuft !? (von der lowlevel.library mal abgesehen). Wie ist das z.B. bei Quake gemacht ? -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, Asteroids, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 09:28 Uhr thomas Posts: 7717 Nutzer |
Zitat: Du bekommst einen Key-Down-Event, mehrere Key-Repeat-Events (die du getrost ignorieren kannst) und einen Key-Up-Event. Das reicht vollkommen. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 09:44 Uhr Mad_Dog Posts: 1944 Nutzer |
Was stört Dich an IDCMP_RAWKEY? Wenn Du wissen willst, wie lange die Taste gedrückt wurde, mußt Du eben die Zeit stoppen. Oder meinst Du eine portable Möglichkeit, die Tastatur abzufragen? Also bei OpenGL und GLUT kannst Du Tastatur und Joystickabfrage portabel machen. D.h. Du kannst dann solch ein Programm auf einem anderen Zielsystem neu compilieren, ohne eine Zeile Code zu ändern. Hier mal ein Beispiel für Tastatur/Joystickabfrage mit GLUT: http://us.aminet.net/dev/src/RocketCar12.lha -- http://www.norman-interactive.com [ Dieser Beitrag wurde von Mad_Dog am 27.03.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 10:04 Uhr thomas Posts: 7717 Nutzer |
Hier ist ein Beispiel, wie man es mit RAWKEY machen kann: http://home.t-online.de/home/thomas-rapp/download/KeyJoy.c Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 12:11 Uhr Goos Posts: 69 Nutzer |
Zitat: Beim Quake2-Port wird die Tastatur- sowie die Mausradabfrage auch über IDCMP_RAWKEY gemacht. Gruss Goos [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 12:29 Uhr bubblebobble Posts: 707 Nutzer |
Sicher ? Aber das geht doch gar nicht, da IDCMP_RAWKEY schon aufbereitet ist, also mit KeyRepeat und so. So kann ich niemals herausfinden, ob eine Taste wirklich gerade gedrückt ist oder nicht, zumindest nicht in angemessener zeitlichen Auflösung. Ich habe aber nun eine relativ elegante Lösung gefunden: keyboard.device öffnen. Dann KEB_READMATRIX schicken mit dem Pointer auf 13bytes, die danach als Bitmap den Tasten Status jeder einzelnen Taste im Augenblick enthalten. Die gewünschte Taste oder Tasten kann man dann ganz einfach durch Ausmaskieren oder BTST abfragen. Das sind ca. 10-15 Zeilen zum init, eine Zeile zum Matrix abholen und eine Zeile zum Taste testen und 5 Zeilen zum Freen. Hab das im Asteroids eingebaut. Mals sehen obs überall funzt. -- Thilo Köhler, Author von: HD-Rec, Samplemanager, ArTKanoid, Monkeyscript, Toadies, Asteroids, UDM, TKPlayer, TKUnpacker Homepage: http://www.hd-rec.de [ - Antworten - Zitieren - Direktlink - ] |
27.03.2004, 12:38 Uhr thomas Posts: 7717 Nutzer |
Zitat: Du mußt träumen. Du bekommst sofort, wenn eine Taste gedrückt wird eine Nachricht und sobald sie losgelassen wird wieder. Du bekommst sogar die Uhrzeit mitgeliefert, wann das passiert ist. Das Repeat kannst du getrost ignorieren, habe ich schon gesagt. Schau dir doch mal mein Beispiel an, da wird es genau so gemacht. Gruß Thomas -- Email: thomas-rapp@web.de Home: home.t-online.de/home/thomas-rapp/ [ - Antworten - Zitieren - Direktlink - ] |
29.03.2004, 11:59 Uhr Goos Posts: 69 Nutzer |
Hier den Q2-Codeausschnitt:code:while (imsg = (struct IntuiMessage *)GetMsg(g_pMessagePort)) { sys_msg_time=(imsg->Seconds-inittime)*1000+imsg->Micros/1000; switch(imsg->Class) { case IDCMP_RAWKEY: if ((0x7F & imsg->Code) == 122 || (0x7F & imsg->Code) == 123) { mouse_wheel_used = 1; //18-AUG-02 switch(imsg->Code) { case 0x7A: Key_Event(K_MWHEELUP, true, sys_msg_time, -1); break; case 0xFA: Key_Event(K_MWHEELUP, false, sys_msg_time, -1); break; case 0x7B: Key_Event(K_MWHEELDOWN, true, sys_msg_time, -1); break; case 0xFB: Key_Event(K_MWHEELDOWN, false, sys_msg_time, -1); break; } } if ((imsg->Code)&0x80) Key_Event(MapKey((imsg->Code)&0x7f),false,sys_msg_time, ENCODEKEY(imsg->Code, imsg->Qualifier)); else Key_Event(MapKey(imsg->Code),true,sys_msg_time, ENCODEKEY(imsg->Code, imsg->Qualifier)); break; hoffe der hilft. gruss Goos [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Tastaturabfrage systemfreundlich ? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |