| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen | 
	
	
		| Autor | Nachricht | 
	
		| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 13.03.2017, 23: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: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 14.03.2017, 06: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: 1283
 Wohnort: Ruhrpott
 
 | 
			
				|  Verfasst am: 14.03.2017, 11:58    Titel: |   |  
				| 
 |  
				| Bei mir ist es genau umgekehrt: 
 Minus Tastatur: 0C
Möglicherweise hängt das von den Betriebssystemeinstellungen (Tastatur - Ländercode) oder der verwendeten Hardware (PC / Laptop) ab.Minus 10er: 0C
 Plus Tastatur: 0D
 Plus 10er: 4E
 
 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: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 14.03.2017, 15: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 14.03.2017, 23: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: 4711
 Wohnort: ~/
 
 | 
			
				|  Verfasst am: 15.03.2017, 00: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, 13: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: 1048
 Wohnort: Niederbayern
 
 | 
			
				|  Verfasst am: 15.03.2017, 23: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!
 
 
 Das mit der Konfigurierung, wäre eine Abhilfe für das Problem. Ob ich das programmiere, weiß ich noch nicht? 	  | 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. | 
 
 Vielen herzlichen Dank an alle für die Infos!
 
 Gruß
 ALWIM
 _________________
 SHELL SHUTDOWN -s -t 05
 |  | 
	
		| Nach oben |  | 
	
		|  | 
	
		|  |