Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kurm_de
Anmeldungsdatum: 11.03.2006 Beiträge: 4
|
Verfasst am: 20.03.2006, 11:22 Titel: mehrfach Tasten betätigungen (zwei Tasten gleichzeitig) |
|
|
hi,
ich habe mir gerade in der "Monster-FAQ" unter "Tastatureingaben" den Beitrag "Wie kann ich Mehrfach-Tastenbetätigungen abfragen?" durchgelesen.
Und habe dann unter "Antwort 4" das 2. Prgramm ausprobiert. Es funktioniert auch soweit ganz gut, also ich kann zwei Tasten gleichzeit drücken und somit etwas über den Bildschirm hin und her bewegen.
Allerdings bleibt manchmal eine Taste hängen, also nicht an der Tastatur, die ist ok.
Es ist so: wenn ich z.b. nach rechts lenke(rechte pfeiltaste drücke) und dann schnell nach links lenke(für ein paar ms sind dann beide Tasten gedrückt) und dann alles loslasse, dass dann die rechte Pfeiltaste sich so verhält als wäre sie gedrückt.
In dem Beitrag wurde dieses Problem auch beschrieben, bisher habe ich aber keine Lösung gefunden.
Deshalb frage ich hier mal: hat jemmand eine Lösung für das Problem, oder sollte ich die Tastaturabfrage ganz anders programmieren?
Vieleicht liegt es auch an meinem Notebook, dass ist ein sehr altes mit 20MHz und ganz wenig RAM.
Viele Grüße kurm_de |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 20.03.2006, 12:39 Titel: |
|
|
ja das ist ein problem der arbeitsgeschwindigkeit. Die abgefragte Variable ändert immer ihren wert wenn sich etwas an der tastatur ändert. wenn du jetzt zwei tasten gleichzeitig loslässt kann es passieren, dass sich die variable so schnell ein zweites mal ändert, dass die erste änderung von dem programm nicht aufgezeichnet wird und die taste bleibt hängen. Das andere wann tasten hängenbleiben können ist bei den Pfeiltasten, da musst du bisschen drumrum tricksen, sprich es gibt zwei release-werte für eine taste, das hängt soweit ich weiß mit numlock zusammen. Die zweiten Werte musst du dann eben separat abfangen und verarbeiten.
ich weiß jetzt nicht in wie weit du dieses system was dahintersteckt verstanden hast deswegen baller ich dich jetzt erstmal nicht mit der lösung zu die du zweifellos dann nicht verstehen würdest, mach einfach mal ein programm in etwa wie dieses hier, das sollte dir vielleicht ein wenig helfen:
Code: | CLS
DO
locate 1,1
print "INP(&H60):......";inp(&h60);" "
print "INP(&H60)-180:..";inp(&h60)-180;" "
LOOP UNTIL INKEY$=CHR$(27) |
_________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
Infection 93 gesperrt
Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
Verfasst am: 10.05.2006, 14:52 Titel: |
|
|
Also ich würde es so versuchen:
[code]
cls
MainLoop:
if INKEY$ = "a" and INKEY$ = "b" then print "A und B": END
goto MainLoop
[/code]
Ich benutze statt DO LOOP den GOTO Befehl, weil dann der PC schneller auf Tastendruck reagiert. |
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 10.05.2006, 15:19 Titel: |
|
|
Also mit INKEY$ kannst du das vergessen
INKEY$ liefert nur einen Wert ab, nicht zwei. MisterD's Methode ist sicherlich die funktionierendere.
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
Infection 93 gesperrt
Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
|
Nach oben |
|
|
jb
Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 10.05.2006, 15:22 Titel: |
|
|
Na, wie soll den INKEY$ *gleichzeitig* "A" und "B" sein?
jb _________________ Elektronik und Programmieren |
|
Nach oben |
|
|
Infection 93 gesperrt
Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
|
Nach oben |
|
|
Lutz Ifer Grillmeister
Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 10.05.2006, 15:37 Titel: |
|
|
-edit-
zu langsam, alles schon gesagt worden... _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
|
Infection 93 gesperrt
Anmeldungsdatum: 11.03.2006 Beiträge: 377 Wohnort: Egal, dort wo ein PC ist.
|
Verfasst am: 17.05.2006, 16:54 Titel: |
|
|
@MiserD
Die adressen &H60, &H61 und &H62 sind adressen, mit denen man auf die driver A B und C zugreifen kann.
Steht alles im Buch:
'Programmierung von personalen computern der typen IBM PC, XT und AT'
Richtig geiles buch über hardware! _________________ Meine Homepage:
www.infection93.org
Und das Forum von mir und King01:
www.infection93.bboard.de |
|
Nach oben |
|
|
MisterD
Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 17.05.2006, 17:09 Titel: |
|
|
wer wollte das wissen? oO Treiber A B und C sagt sowieso nix aus, vielleicht könntest du dich mit dem posten von so nem käse n bisschen zurückhalten?.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
|
|