Seite 1 von 2

KeyboardInkey() in PB3.30

Verfasst: 17.08.2007 10:58
von Groudon
Gibt es so in PB3.30 was ähnliches wie KeyboardInkey() ???

Verfasst: 17.08.2007 11:07
von STARGÅTE
du müsstest mit API abreiten:

Code: Alles auswählen

Procedure.s GetKeyName(Asc)
 Name$=Space(255)
 GetKeyNameText_(MapVirtualKey_(Asc,0)*$10000,name$,255)
 ProcedureReturn Name$
EndProcedure
Procedure GetKey()
 For n=8 To 255
  If GetAsyncKeyState_(n) = -32767 : r=n : EndIf ; Pressed!
 Next n
 ProcedureReturn r
EndProcedure
Repeat
 Delay(10)
 x = GetKey() 
 If x : Debug GetKeyName(x) : EndIf
ForEver

Verfasst: 17.08.2007 13:09
von Groudon
hä, kapier ich nicht

Verfasst: 17.08.2007 13:15
von Kaeru Gaman
gabs da keine keyboard-lib in der 3.30?
...da muss man doch nicht unbedingt ne API-lösung nehmen, nur ein workaround.

Verfasst: 17.08.2007 18:40
von STARGÅTE
ja klar, man kann mit KeyboardPushed() die Tasten alles einzeln abfragen, oder besser mit KeyboardReleased(), aber dann ist ja das prob das der nachfolgende KeyboardReleased() NULL ergibt -.-

Verfasst: 17.08.2007 18:43
von Fluid Byte
Nicht nur das. Dann hat die Tastatur automatsich QWERTY Format. Nur KeyboardInkey() berücksichtigt "non-konforme" Tastaturen. Mann kann das Keyboardlayout zwar verändern das ist dann aber Windows only.

Verfasst: 18.08.2007 12:53
von Groudon
ich kapier gar nichts

Verfasst: 18.08.2007 13:15
von Kaeru Gaman
aaalso

1) es gibt kein KeyboardInkey in der 3.30

2) wenn du nur bestimmte tasten z.b. für die steuerung abfragen willst,
nimmst du KeyboardPushed()

3) wenn du ein keyboard zur texteingabe im screen realisieren willst,
kannst du das API-workaround benutzen, das STARGÅTE oben gepostet hat.


@STARGÅTE
habs mir jetzt erst mal genau angesehen...
du benutzt 248 GetAsyncKeyState_() calls? das ist doch wahnsinn.
schau dir mal GetKeyboardState_() an.
wenn du in der lage bist, die Keynames auszulesen (1.proc),
dann kannst du auch mit dem kompletten table,
den dir GetKeyboardState_() liefert etwas anfangen... ;)

Verfasst: 18.08.2007 13:34
von STARGÅTE
Das war auch nicht von mir, sondern aus dem CodeArchiv.

Ich selber benutze ja meine selbstgebauten ScreenStringGadgets :wink:, habe ich ja schon mal gepostet (wo dann auch verschiedene Sonder Funktionen gehen (ALT+#Nr))

Verfasst: 18.08.2007 14:50
von Groudon
Ich brauch das so oder so nit mehr ich benutz einfach

Code: Alles auswählen

If KeyboardPushed(KeyID) And KeyboardPushed(KeyID)
copysprite(1,0)
EndIf
kann man den thead schließen