Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 14.03.2017, 00:48 Titel: Multikey Problem? |
|
|
Beim Testen viel mir ein Problem mit Multikey auf!
Und zwar:
Code: | IF MULTIKEY(&h0C) THEN ... |
Sollte das nicht die Minus-Taste sein? Bei meiner PC-Tastatur, passiert gar nichts wenn ich die Minustaste auf der 10er-Tastatur drücke!!! Jedoch funktioniert
Code: | IF MULTIKEY(&h4E) THEN ... |
erstaunlicherweise extrem gut! Taste wird erkannt, sobald ich diese drücke. Ist das ein Bug? Wie kann ich die Minus-Taste per Multikey auslesen/drücken?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 14.03.2017, 07:21 Titel: |
|
|
MULTIKEY liefert nicht einen bestimmten Tastenwert, sondern tatsächlich eine bestimmte Taste. Die Minus-Taste auf der normalen Tastatur (neben dem Punkt) hat einen anderen Scancode-Wert als die auf dem Zehnerblock; genauso hat z. B. die "normale" 1 einen anderen Wert als die auf dem Zehnerblock oder die linke Shift-Taste einen anderen als die rechte Shift-Taste.
Wobei ich mir nicht sicher bin, ob die Scancodes des Zehnerblocks von FreeBASIC richtig erkannt werden, da dort nur die DOS-Scancodes umgesetzt werden (die anderen Tasten sind nicht vereinheitlicht; können sich von Plattform zu Plattform unterscheiden). Die Werte werden, soweit ich mich erinnere, nur bis 127 interpretiert, danach geht es wieder bei 0 los. Es ist daher möglich, dass ein höherer Wert (etwa die Minustaste des Ziffernblocks) dadurch zufällig mit demselben Wert interpretiert wird wie die Plustaste des Ziffernblocks. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1213 Wohnort: Ruhrpott
|
Verfasst am: 14.03.2017, 12:58 Titel: |
|
|
Bei mir ist es genau umgekehrt:
Minus Tastatur: 0C
Minus 10er: 0C
Plus Tastatur: 0D
Plus 10er: 4E Möglicherweise hängt das von den Betriebssystemeinstellungen (Tastatur - Ländercode) oder der verwendeten Hardware (PC / Laptop) ab.
Die tatsächlichen Multikey - Werte lassen sich mit diesem kleinen Prgrammschnippsel ermitteln: Code: | Do
Cls
For x As Integer = 0 To 255
If MultiKey(x) Then
Print x, Hex(x,2)
EndIf
Next
Sleep 100
Loop |
Eine andere Möglichkeit, eine gedrückte Taste (einschließlich der Maustasten) eindeutig zu identifizieren, ist die Verwendung der WinAPI - Funktion GetKeyState: Code: | #Include "windows.bi"
Do
Cls
For x As Integer = 0 To 255
If GetKeyState(x) < 0 Then
Print x, Hex(x,2)
EndIf
Next
Sleep 100
Loop |
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 14.03.2017, 16:37 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Möglicherweise hängt das von den Betriebssystemeinstellungen (Tastatur - Ländercode) oder der verwendeten Hardware (PC / Laptop) ab. |
Das vermute ich auch. ich habe dieselben Werte wie du außer die Plus-Taste auf der normalen Tastatur, da erhalte ich 00. Außerdem bekomme ich unter Linux immer auch alle um 128 verschobenen Werte zusätzlich geliefert, also z. B. Minus-Taste 0C sowie 8C (und 10C usw.) _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 15.03.2017, 00:44 Titel: |
|
|
Mit funktioniert die Minustaste bei mir. Wirklich komisch, vor allem da dieses Zeichen nicht mal in der Hilfe drin steht!
Des is scho bläd, so wos.
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 15.03.2017, 01:26 Titel: |
|
|
In der Hilfe stehen nur die offiziell unterstützten Tasten; was die anderen Tasten machen, kann sie ja nicht wissen.
Aber vielleicht schaue ich einmal, dass ich deutlicher hervorheben, dass "Nicht-Standard-Tasten" ggf. keine brauchbaren Ergebnisse liefern. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 15.03.2017, 14:05 Titel: |
|
|
Es wurde ja schon mehrfach erwähnt, aber um es noch einmal klipp und klar zu sagen: Multikey liefert Scancodes zurück, die je nach Tastaturanordnung verschiedene Bedeutungen haben können. Beispielsweise ist der Scancode für "Z" auf einer deutschen Tastatur identisch zum Scancode für "Y" auf einer US-Amerikanischen Tastatur, da Y und Z auf den Layouts vertauscht sind. Deswegen sollte Multikey nicht einfach blind mit irgendwelchen Konstanten gefüttert werden - der Benutzer des Programms sollte diese selbst konfigurieren können. Wie man das realisieren kann, hat grindstone ja schon in der ersten Antwort angedeutet. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1041 Wohnort: Niederbayern
|
Verfasst am: 16.03.2017, 00:26 Titel: |
|
|
Zitat: | Es wurde ja schon mehrfach erwähnt, aber um es noch einmal klipp und klar zu sagen: Multikey liefert Scancodes zurück, die je nach Tastaturanordnung verschiedene Bedeutungen haben können. Beispielsweise ist der Scancode für "Z" auf einer deutschen Tastatur identisch zum Scancode für "Y" auf einer US-Amerikanischen Tastatur, da Y und Z auf den Layouts vertauscht sind. Deswegen sollte Multikey nicht einfach blind mit irgendwelchen Konstanten gefüttert werden - der Benutzer des Programms sollte diese selbst konfigurieren können. Wie man das realisieren kann, hat grindstone ja schon in der ersten Antwort angedeutet. |
Das ist mir schon klar, nur wäre es besser, wenn alles auf jedem Rechner gleich wäre!
Zitat: | der Benutzer des Programms sollte diese selbst konfigurieren können. Wie man das realisieren kann, hat grindstone ja schon in der ersten Antwort angedeutet. | Das mit der Konfigurierung, wäre eine Abhilfe für das Problem. Ob ich das programmiere, weiß ich noch nicht?
Vielen herzlichen Dank an alle für die Infos!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
|
|