Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

12 Mar 2022, 05:55

Hallo an alle,
derzeit bin ich auf der Suche nach einer Lösung für mein Problem.

Kurze Vorgeschichte:
aufgrund meiner Erkrankung kommt es vor, dass ich beim schnellen Schreiben auf einer Taste „hängen“ bleibe und durch die hohe Wiederholungsrate den Buchstaben öfters schreibe. Das bedeutet, dass ich bei manchen Wörtern mehrfach denselben Buchstaben darin habe. Zum Beispiel: „haaaabe". Das zu korrigieren ist nicht nur zeitaufwendig, sondern auch sehr nervig.

Ausgeschlossenen Lösung:
natürlich kann ich die Wiederholungsrate in Windows anpassen. Jedoch wird dadurch auch die Wiederholungsrate der Backspace Taste verlangsamt. Diese möchte ich aber in alter Manier verwenden können.

Gewünschte Lösung:
ich möchte gerne, dass ein Anschlag wirklich nur ein Anschlag bleibt, selbst wenn ich länger auf der Taste bleibe.
Hier mal ein möglicher Ablauf, wie ich ihn mir vorstellen könnte.
- Taste wird gedrückt
- Buchstabe wird 1x geschrieben.
- Wenn Status der Taste dauerhaft 1, dann schreibe nichts mehr.
- Wenn der Status zwischenzeitlich auf 0 war und wieder auf 1 wechselt, dann schreibe erneut diesen Buchstaben.

Dieses Skript sollte aber nur gewisse Tasten betreffen (zum Beispiel: nur Buchstaben).

Ich habe schon viel mit KeyWait und so rumprobiert, kam aber nie auf einen grünen Zweig.
Ich hoffe, ihr könnt mich auf die richtige Bahn bringen.

Danke für eure Mithilfe.

Gruß Alex
Last edited by Wick3d on 12 Mar 2022, 06:09, edited 1 time in total.
just me
Posts: 9542
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

12 Mar 2022, 06:09

Moin,

für mich hängt das davon ab, wie viele Tasten eine Sonderbehandlung brauchen. Wenn Du nur für wenige Tasten eine schnelle Wiederholungsrate brauchst, könntest Du allgemein die Wiederholungsrate absenken und Dir für die speziellen Tasten Hotkeys anlegen, die die schnelle Wiederholung simulieren. Die eingebaute Wiederholung funktioniert durch mehrfaches Senden eines "Key Down".
Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

12 Mar 2022, 15:18

Hi und danke für deine Antwort.
Die Idee ist gar nicht mal so schlecht, dass ganz aus der anderen Richtung zu betrachten. Jedoch wird spätestens bei der Backspace Taste das Problem sein, dass wenn ich sie einmal betätige, die Taste öfters gesendet wird.
Daher würde ich bevorzugen, die Tasten zu verlangsamen, welche ich zuvor festlegen kann.
Letztendlich geht es mir „nur“ um die Buchstaben.
KHA
Posts: 407
Joined: 21 Aug 2018, 11:11

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

12 Mar 2022, 18:57

Wenn ich es richtig verstehe:

Code: Select all

#NoEnv
#Singleinstance Force

Loop, 26
{
Kleinbuchstabe := Chr(96 + A_Index)
Hotkey, % "$" Kleinbuchstabe , Verzoegern
Hotkey, % "$+" Kleinbuchstabe , Verzoegern
}
Return

Verzoegern:
;Send, % (GetKeyState("Shift", "P")) ? "+" SubStr(A_ThisHotKey,0) : SubStr(A_ThisHotKey,0)
     if GetKeyState("Shift", "P")
     Send, % "+" SubStr(A_ThisHotKey,0)
     Else
     Send, % SubStr(A_ThisHotKey,0)

KeyWait, % SubStr(A_ThisHotKey,0), d
KeyWait, % SubStr(A_ThisHotKey,0)
Return
Rohwedder
Posts: 7732
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

14 Mar 2022, 05:46

Hallo,
oder:

Code: Select all

Loop, 26
{
	T := Chr(96 + A_Index), 
	Hotkey, ~*%T%, Runter
	Hotkey, ~*%T% Up, Rauf
	%T% := 0
}
Return
Runter:
T := SubStr(A_ThisHotkey, 0)
SendInput,% %T%++?"{BS}":
Return
Rauf:
T := SubStr(A_ThisHotkey, 3, 1)
%T% := 0
Return
Wick3d
Posts: 31
Joined: 04 Apr 2014, 03:24

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

14 Mar 2022, 14:25

Hallo ihr beiden,
ich danke euch vielmals für die Vorschläge. Doch ich muss sagen, der 1. Vorschlag gefällt mir besser, da hier kein Zucken von dem Cursor ist. Ich habe lediglich das P bei "if GetKeyState" entfernt, damit es nicht nur auf einen physikalischen Shift-Tastendruck reagiert.

Da ich den Code nicht zu 100 % verstehen, würde ich mich über eine Erklärung darüber freuen (mit Kommentaren dahinter).

Ich danke euch nochmals, denn das trifft genau, was ich mir vorgestellt habe.
just me
Posts: 9542
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Einzelne Buchstabe pro Tastendruck - keine Wiederholungsrate

15 Mar 2022, 05:50

Moin,

ich denke, dass Du GetKeyState() gar nicht brauchst, weil in A_ThisHotkey z.B. für den Buchstaben a entweder $a oder $+a steht. Ein unbedingtes Send, % SubStr(A_ThisHotkey, 2) sollte deshalb zum korrekten Ergebnis führen.

Deine Wunschtasten könntest Du auch in einer Variablen speichern und die dann zeichenweise 'parsen'.
Keys := "abcdefghijklmnopqrstuvwxyzäöü"
Hotkey, $ß , Verzoegern ; Sonderbehandlung, weil es keinen Großbuchstaben gibt
Loop, Parse, Keys
{
Hotkey, $%A_LoopField%, Verzoegern
Hotkey, $+%A_LoopField%, Verzoegern
}

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 2 guests