Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Multikey Problem?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 13.03.2017, 23:48    Titel: Multikey Problem? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 14.03.2017, 06:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 14.03.2017, 11:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 14.03.2017, 15:37    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 14.03.2017, 23:44    Titel: Antworten mit Zitat

Mit
Code:
MULTIKEY(&h4A)
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. verwundert Kopf schütteln

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 15.03.2017, 00:26    Titel: Antworten mit Zitat

In der Hilfe stehen nur die offiziell unterstützten Tasten; was die anderen Tasten machen, kann sie ja nicht wissen. lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 15.03.2017, 13:05    Titel: Antworten mit 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.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1037
Wohnort: Niederbayern

BeitragVerfasst am: 15.03.2017, 23:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz