Hallo,
wie die Beschreibung oben schon erahnen lässt. Möchte ich die KeyRepeat Funktion bei Tastatureingaben für mein Fenster abstellen.
Jemand eine Idee wie das zu machen ist?
Gruss TFT
KeyRepeat Funktion für ein Fenster abstellen
- tft
- Beiträge: 605
- Registriert: 08.09.2004 20:18
- Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
- Wohnort: Dachsen
- Kontaktdaten:
KeyRepeat Funktion für ein Fenster abstellen
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Re: KeyRepeat Funktion für ein Fenster abstellen
Hallo tft,
ich bin mir auch noch nicht ganz sicher, aber es müsste evtl. über die Registry (HKEY_CURRENT_USER\Control Panel\Accessibility\...) gehen.
Du meinst doch garantiert die Windows-Anschlagverzögerung, oder ?
Ok!
Es sollte über diese API gehen:
https://docs.microsoft.com/en-us/window ... etersinfow
und mit dieser Structure:
https://docs.microsoft.com/en-us/window ... filterkeys
über Set_FilterKeys
Hier eine mögliche Lösung: (geht bei mir)
Für Unwissende:
Damit wird beim gedrückten Halten einer Taste diese nicht mehr wiederholt.
ich bin mir auch noch nicht ganz sicher, aber es müsste evtl. über die Registry (HKEY_CURRENT_USER\Control Panel\Accessibility\...) gehen.
Du meinst doch garantiert die Windows-Anschlagverzögerung, oder ?
Ok!
Es sollte über diese API gehen:
https://docs.microsoft.com/en-us/window ... etersinfow
und mit dieser Structure:
https://docs.microsoft.com/en-us/window ... filterkeys
über Set_FilterKeys
Hier eine mögliche Lösung: (geht bei mir)
Code: Alles auswählen
Structure tagFILTERKEYS
cbSize.l
dwFlags.l
iWaitMSec.l
iDelayMSec.l
iRepeatMSec.l
iBounceMSec.l
EndStructure
Global FILTERKEYS.tagFILTERKEYS
FILTERKEYS\cbSize = SizeOf(tagFILTERKEYS)
FILTERKEYS\dwFlags = 127 ;= On / 126 = Off (Windows 10)
FILTERKEYS\iWaitMSec = 0
FILTERKEYS\iDelayMSec = 0
FILTERKEYS\iRepeatMSec = 0
SystemParametersInfo_(#SPI_SETFILTERKEYS, SizeOf(tagFILTERKEYS), @FILTERKEYS, #SPIF_UPDATEINIFILE)
Damit wird beim gedrückten Halten einer Taste diese nicht mehr wiederholt.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- tft
- Beiträge: 605
- Registriert: 08.09.2004 20:18
- Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
- Wohnort: Dachsen
- Kontaktdaten:
Re: KeyRepeat Funktion für ein Fenster abstellen
Hallo,
ich werde das mal ausprobieren, ich habe mir .. weil ich gerade im Flow bin mit diesen Zeilen geholfen.
ich werde das mal ausprobieren, ich habe mir .. weil ich gerade im Flow bin mit diesen Zeilen geholfen.
Code: Alles auswählen
#NoKeyRepeat = 1075838977
If EventWindow() = #MainWindow
Select Event
Case #WM_KEYDOWN ; Taste wurde gedrückt
;Repeat unterdrückung
If EventlParam()<>#NoKeyRepeat
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Re: KeyRepeat Funktion für ein Fenster abstellen
Schön,Schön, viele Wege führen zum Ziel, wenn man es dann doch genauer kennt.
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
- hjbremer
- Beiträge: 822
- Registriert: 27.02.2006 22:30
- Computerausstattung: von gestern
- Wohnort: Neumünster
Re: KeyRepeat Funktion für ein Fenster abstellen
ich weiß zwar nicht wozu man es braucht
aber gut zu wissen, eines Tages vielleicht doch
vielen Dank für die Info
aber gut zu wissen, eines Tages vielleicht doch
vielen Dank für die Info
Purebasic 5.70 x86 5.72 X 64 - Windows 10
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
- tft
- Beiträge: 605
- Registriert: 08.09.2004 20:18
- Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
- Wohnort: Dachsen
- Kontaktdaten:
Re: KeyRepeat Funktion für ein Fenster abstellen
Hallo
@ ccode_new : Da meine Lösung eher unzuverlässig funktioniert. Habe ich diese eingebaut. Läuft tip top.
jetzt muss ich nur noch den Wert vorher Speichern, damit ich beim verlassen des Programms den Orginal
Zustand wider herstelle.
Gibt es nicht die Möglichkeit das auf ein Bestimmtes Fenster zu begrenzen.?
Gruss TFT
@ ccode_new : Da meine Lösung eher unzuverlässig funktioniert. Habe ich diese eingebaut. Läuft tip top.
jetzt muss ich nur noch den Wert vorher Speichern, damit ich beim verlassen des Programms den Orginal
Zustand wider herstelle.
Gibt es nicht die Möglichkeit das auf ein Bestimmtes Fenster zu begrenzen.?
Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak
Re: KeyRepeat Funktion für ein Fenster abstellen
Das ganze gehört zu den Windows Bedienungshilfe - Einstellungen.tft hat geschrieben:Gibt es nicht die Möglichkeit das auf ein Bestimmtes Fenster zu begrenzen.?
Ich hätte hier einen kleinen Trick:
Code: Alles auswählen
Structure tagFILTERKEYS
cbSize.l
dwFlags.l
iWaitMSec.l
iDelayMSec.l
iRepeatMSec.l
iBounceMSec.l
EndStructure
Global DefaultValues.tagFILTERKEYS
Procedure GetKeyRepeatState(*Filter.tagFILTERKEYS)
*Filter\cbSize = SizeOf(tagFILTERKEYS)
If *Filter <> 0
SystemParametersInfo_(#SPI_GETFILTERKEYS, *Filter\cbSize, *Filter, #SPIF_UPDATEINIFILE)
EndIf
EndProcedure
Procedure SetKeyRepeatState(*Filter.tagFILTERKEYS, state.b)
Protected FILTERKEYS.tagFILTERKEYS
If *Filter <> 0
If state = 1
GetKeyRepeatState(*Filter)
FILTERKEYS\cbSize = SizeOf(tagFILTERKEYS)
FILTERKEYS\dwFlags = 126
FILTERKEYS\iWaitMSec = *Filter\iWaitMSec
FILTERKEYS\iDelayMSec = *Filter\iDelayMSec
FILTERKEYS\iRepeatMSec = *Filter\iRepeatMSec
FILTERKEYS\iBounceMSec = *Filter\iBounceMSec
SystemParametersInfo_(#SPI_SETFILTERKEYS, FILTERKEYS\cbSize, @FILTERKEYS, #SPIF_UPDATEINIFILE)
Else
FILTERKEYS\cbSize = SizeOf(tagFILTERKEYS)
FILTERKEYS\dwFlags = 127
FILTERKEYS\iWaitMSec = 0
FILTERKEYS\iDelayMSec = 0
FILTERKEYS\iRepeatMSec = 0
; FILTERKEYS\iBounceMSec = 0
SystemParametersInfo_(#SPI_SETFILTERKEYS, FILTERKEYS\cbSize, @FILTERKEYS, #SPIF_UPDATEINIFILE)
EndIf
EndIf
EndProcedure
Procedure IsActive(win_id)
Protected hWnd
hWnd = GetForegroundWindow_()
If hWnd = win_id
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Global mywin.i, set_flag = #False
mywin = OpenWindow(#PB_Any, 0, 0, 600, 400, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If mywin
EditorGadget(0, 10, 10, 580, 380)
Repeat
If IsActive(WindowID(mywin)) = #True And GetActiveGadget() = 0 And set_flag = #False
Debug "Aktiv"
GetKeyRepeatState(@DefaultValues)
;Debug DefaultValues\dwFlags
SetKeyRepeatState(@DefaultValues, 0)
set_flag = #True
ElseIf IsActive(WindowID(mywin)) = #False And set_flag = #True
Debug "Inaktiv"
SetKeyRepeatState(@DefaultValues, 1)
;Debug DefaultValues\dwFlags
set_flag = #False
EndIf
Delay(20)
Until WindowEvent() = #PB_Event_CloseWindow
SetKeyRepeatState(@DefaultValues, 1)
End
EndIf
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat