Seite 1 von 1
tasten abfragen und settings setzen
Verfasst: 28.05.2005 18:32
von diGGa
ich weiss nich komm grad nich weiter. hab n programm das man mit tasten steuern kann und mach dazu auch ein settings-programm das die virtual codes in eine datei schreibt.
ich versuche schon die ganze zeit das man einfach in ein stringgadget reinklicken kann und ne taste drücken kann um dann den vK zu kriegen.. oder halt irgendnen code womit ich jede taste abfragen kann^^ ich find jetz nix... mag jemand von euch profis mir nich eben sagen wie das geht ich peils nich^^
Verfasst: 29.05.2005 17:57
von diGGa
hier nochmal genauer
von euch würde ich mich freuen wenn ihr mir nen tipp geben könntet wie ich durch tastendrücken die vk der gedrückten taste im settingsbereich bekomme

momentan versuche ich es so:
Code: Alles auswählen
Case #STRING_PLAY
If EventType() = #PB_EventType_Focus
For I=1 To 255
If GetAsyncKeyState_(I)
MessageRequester("debug","Key " + Str(I) + " has been pressend")
EndIf
Next
EndIf
funzt aber nich^^ gibt immer mouse zurück und wenn ich stattdessen EventType_change nehme, gibt er einmal mauszurück und dann die gedrückte taste, wobei da dann auch nur abc etc gehen und f10 zB nich...
vielleicht muss ich einfach n anderes gadget nehmen?
Verfasst: 29.05.2005 19:10
von Jake
Hallo diGGa,
die Profis hier im Forum sind wohl schon im Sommerurlaub es antwortet wohl keiner deshalb versuche ich dir mal zu helfen.
Ich kenne zum Abfragen von Tasten nur einen Weg. Wenn man ein Menu erstellt kann man doch mit AddKeyboardShortcut einen Tastaturbefehl hinzufügen. Abgefragt werden die dann mit #PB_Event_Menu.
Alos so mache ich das:
Code: Alles auswählen
Select Event
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_F1
EndSelect
EndSelect
Das Beispiel Fragt die Taste F1 ab alle anderen Tasten findest du in der Hilfe unter AddKeyboardShortcut aber ich weiß nicht ob mann die Tasten auch abfragen kann wenn man den Shortcut vorher nicht gesetzt hat? Geht bestimmt nicht.
Dann kenne ich nur noch KeyboardInkey aber den habe ich selbst auch noch nicht benutzt.
Verfasst: 29.05.2005 19:18
von Leo
So?
Code: Alles auswählen
OpenWindow(0,0,0,640,480,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"key")
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = #True
EndSelect
If EventwParam() <> 0
Debug EventwParam()
EndIf
Until Quit = #True
Verfasst: 29.05.2005 19:47
von Andreas21
Code: Alles auswählen
Virtual-Key Codes
The following table shows the symbolic constant names, hexadecimal values, and keyboard equivalents for the virtual-key codes used by the Microsoft Windows operating system. The codes are listed in numeric order.
Symbolic constant name Value (hexadecimal) Mouse or keyboard equivalent
VK_LBUTTON 01 Left mouse button
VK_RBUTTON 02 Right mouse button
VK_CANCEL 03 Control-break processing
VK_MBUTTON 04 Middle mouse button (three-button mouse)
¾ 05-07 Undefined
VK_BACK 08 BACKSPACE key
VK_TAB 09 TAB key
¾ 0A-0B Undefined
VK_CLEAR 0C CLEAR key
VK_RETURN 0D ENTER key
¾ 0E-0F Undefined
VK_SHIFT 10 SHIFT key
VK_CONTROL 11 CTRL key
VK_MENU 12 ALT key
VK_PAUSE 13 PAUSE key
VK_CAPITAL 14 CAPS LOCK key
¾ 15-19 Reserved for Kanji systems
¾ 1A Undefined
VK_ESCAPE 1B ESC key
¾ 1C-1F Reserved for Kanji systems
VK_SPACE 20 SPACEBAR
VK_PRIOR 21 PAGE UP key
VK_NEXT 22 PAGE DOWN key
VK_END 23 END key
VK_HOME 24 HOME key
VK_LEFT 25 LEFT ARROW key
VK_UP 26 UP ARROW key
VK_RIGHT 27 RIGHT ARROW key
VK_DOWN 28 DOWN ARROW key
VK_SELECT 29 SELECT key
¾ 2A Original equipment manufacturer (OEM) specific
VK_EXECUTE 2B EXECUTE key
VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later
VK_INSERT 2D INS key
VK_DELETE 2E DEL key
VK_HELP 2F HELP key
VK_0 30 0 key
VK_1 31 1 key
VK_2 32 2 key
VK_3 33 3 key
VK_4 34 4 key
VK_5 35 5 key
VK_6 36 6 key
VK_7 37 7 key
VK_8 38 8 key
VK_9 39 9 key
¾ 3A-40 Undefined
VK_A 41 A key
VK_B 42 B key
VK_C 43 C key
VK_D 44 D key
VK_E 45 E key
VK_F 46 F key
VK_G 47 G key
VK_H 48 H key
VK_I 49 I key
VK_J 4A J key
VK_K 4B K key
VK_L 4C L key
VK_M 4D M key
VK_N 4E N key
VK_O 4F O key
VK_P 50 P key
VK_Q 51 Q key
VK_R 52 R key
VK_S 53 S key
VK_T 54 T key
VK_U 55 U key
VK_V 56 V key
VK_W 57 W key
VK_X 58 X key
VK_Y 59 Y key
VK_Z 5A Z key
VK_LWIN 5B Left Windows key (Microsoft Natural Keyboard)
VK_RWIN 5C Right Windows key (Microsoft Natural Keyboard)
VK_APPS 5D Applications key (Microsoft Natural Keyboard)
¾ 5E-5F Undefined
VK_NUMPAD0 60 Numeric keypad 0 key
VK_NUMPAD1 61 Numeric keypad 1 key
VK_NUMPAD2 62 Numeric keypad 2 key
VK_NUMPAD3 63 Numeric keypad 3 key
VK_NUMPAD4 64 Numeric keypad 4 key
VK_NUMPAD5 65 Numeric keypad 5 key
VK_NUMPAD6 66 Numeric keypad 6 key
VK_NUMPAD7 67 Numeric keypad 7 key
VK_NUMPAD8 68 Numeric keypad 8 key
VK_NUMPAD9 69 Numeric keypad 9 key
VK_MULTIPLY 6A Multiply key
VK_ADD 6B Add key
VK_SEPARATOR 6C Separator key
VK_SUBTRACT 6D Subtract key
VK_DECIMAL 6E Decimal key
VK_DIVIDE 6F Divide key
VK_F1 70 F1 key
VK_F2 71 F2 key
VK_F3 72 F3 key
VK_F4 73 F4 key
VK_F5 74 F5 key
VK_F6 75 F6 key
VK_F7 76 F7 key
VK_F8 77 F8 key
VK_F9 78 F9 key
VK_F10 79 F10 key
VK_F11 7A F11 key
VK_F12 7B F12 key
VK_F13 7C F13 key
VK_F14 7D F14 key
VK_F15 7E F15 key
VK_F16 7F F16 key
VK_F17 80H F17 key
VK_F18 81H F18 key
VK_F19 82H F19 key
VK_F20 83H F20 key
VK_F21 84H F21 key
VK_F22 85H F22 key
VK_F23 86H F23 key
VK_F24 87H F24 key
¾ 88-8F Unassigned
VK_NUMLOCK 90 NUM LOCK key
VK_SCROLL 91 SCROLL LOCK key
¾ 92-B9 Unassigned
¾ BA-C0 OEM specific
¾ C1-DA Unassigned
¾ DB-E4 OEM specific
¾ E5 Unassigned
¾ E6 OEM specific
¾ E7-E8 Unassigned
¾ E9-F5 OEM specific
VK_ATTN F6 Attn key
VK_CRSEL F7 CrSel key
VK_EXSEL F8 ExSel key
VK_EREOF F9 Erase EOF key
VK_PLAY FA Play key
VK_ZOOM FB Zoom key
VK_NONAME FC Reserved for future use.
VK_PA1 FD PA1 key
VK_OEM_CLEAR FE Clear key
Win32 API Help

Die Tasten Code sind in Hex angegeben.
Verfasst: 29.05.2005 20:45
von diGGa
andreas und jake hier habt glaub ich nich ganz verstanden was ich will.. ich will nich alle tasten vom keybard dahinschreiben deshalb such ich etwas das alle tasten abfragt.
If EventwParam() <> 0
Debug EventwParam()
EndIf
gibt schonmal was zurück ich guck mal..
//
na das funzt nich... bekomm dann massenzahlen zurück 34564356 sowas
Verfasst: 30.05.2005 00:25
von Danilo
@diGGa:
Ich weiß zwar nicht so richtig was Du willst, aber vielleicht
hilft Dir das als Anfang:
Code: Alles auswählen
;
; Virtual Key Checker
;
; by Danilo, 2005/05/30, german forum
;
Global oldStringProc
Dim keystates.b(255)
NewList keynames.s()
#dontcare = (1<<25) ; DO NOT distinguish between left and right keys, for example LEFT-SHIFT and RIGHT-SHIFT
;#dontcare = 0 ; distinguish between left and right keys
Procedure UpdateImage()
GetKeyboardState_(keystates())
If StartDrawing(ImageOutput())
For i = 0 To 255
x = i%16
y = i/16
b.b = keystates(i)
If b & %10000000
Box(18+x*40,21+y*20,39,19,$FFFFFF)
DrawingMode(1)
FrontColor($00,$00,$FF)
Locate(23+x*40,23+y*20)
DrawText("$"+RSet(Hex(i),2,"0"))
Else
Box(18+x*40,21+y*20,39,19,$000000)
EndIf
Next i
StopDrawing()
EndIf
SetGadgetState(1,ImageID())
EndProcedure
Procedure KeyStateChanged(lParam,up)
Name$ = Space(1024)
GetKeyNameText_(lParam|#dontcare,Name$,1024)
Name$ = Trim(Name$)
If Name$
Name$="'"+Name$+"'"
ForEach keynames()
If keynames()=Name$
If up
DeleteElement(keynames(),1)
Else
found=1
EndIf
Break
EndIf
Next
If found=0 And up=0
LastElement(keynames())
AddElement(keynames())
keynames()=Name$
EndIf
EndIf
ForEach keynames()
A$+keynames()+" + "
Next
If A$
A$ = Left(A$,Len(A$)-3)
EndIf
SetGadgetText(0,A$)
EndProcedure
Procedure StringCallback(hWnd,Msg,wParam,lParam)
If Msg = #WM_CHAR Or Msg = #WM_SYSCHAR
ProcedureReturn 0
ElseIf Msg = #WM_KEYDOWN Or Msg = #WM_SYSKEYDOWN
KeyStateChanged(lParam,0)
UpdateImage()
ProcedureReturn 0
ElseIf Msg = #WM_KEYUP Or Msg = #WM_SYSKEYUP
KeyStateChanged(lParam,1)
UpdateImage()
ProcedureReturn 0
EndIf
ProcedureReturn CallWindowProc_(oldStringProc,hWnd,Msg,wParam,lParam)
EndProcedure
If CreateImage(0,660,343)=0
MessageRequester("ERROR","Cant create image!"):End
EndIf
If StartDrawing(ImageOutput())
DrawingMode(1|4)
FrontColor($FF,$FF,$00)
For i = 0 To 15
Locate(34+i*40,2)
DrawText(Hex(i))
Locate(2,23+i*20)
DrawText(Hex(i))
For x = 0 To 15
Box(17+x*40,20+i*20,41,21)
Next x
Next i
StopDrawing()
EndIf
OpenWindow(0,0,0,680,393,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Virtual Key Checker")
CreateGadgetList(WindowID())
StringGadget(0,10,10,660,20,"")
ImageGadget(1,10,40,660,343,ImageID())
oldStringProc = SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@StringCallback())
SetFocus_(GadgetID(0))
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
Hoffe das ist so ungefähr in die Richtung von dem was Du brauchst.
Verfasst: 30.05.2005 13:45
von diGGa
ja das triffts so etwa.
ich will halt das wenn man n string_gadget markiert hat und dann ne taste drückt, mir dieser tasten code zurückgegeben wird damit ich das in ne datei speichern kann