Bei Tastendruck gleichzeitig andere Taste gedrückt halten

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

I3lackJ4ck
Posts: 3
Joined: 04 Aug 2017, 18:05

Bei Tastendruck gleichzeitig andere Taste gedrückt halten

04 Aug 2017, 18:17

Hallo liebe Community,

wie ihr seht bin ich total neu hier und auch was das scripten angeht ein totaler Neuling.

Ich weiß einfach nicht wie es geht. Also ich will, dass wenn ich eine beliebige Numpad Taste (1-9) drücke, dass gleichzeitig dann die i - Taste gedrückt wird, aber nicht nur gedrückt sondern gehalten wird, sprich z.b. für 3-10 Sekunden. Am besten wärs natürlich wenn ich das für jede Kombination ändern und einstellen kann. Sprich z.b. beim drücken von Numpad 1 wird die i-Taste 3 Sekunden gedrückt/gehalten und bei Numpad 5 für 6 Sekunden usw.
Ist das überhaupt möglich so wie ich mir das vorstelle?

Vielen Dank schonmal im voraus für eure Hilfe!
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

05 Aug 2017, 04:28

Was du suchst sind Remaps: https://ahkde.github.io/docs/misc/Remap.htm
Zudem brauchst du einen betimmten Modifikator aus dieser Liste: https://ahkde.github.io/docs/Hotkeys.htm#Symbols
Recommends AHK Studio
I3lackJ4ck
Posts: 3
Joined: 04 Aug 2017, 18:05

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

07 Aug 2017, 04:43

Soooo Danke erstmal für deine Hilfe! Ich bin gut weit gekommen. Im Moment schaut das Script so aus:

Code: Select all

Numpad1::
Send, {i down}{sleep 240}{i up}
return
Numpad2::
Send, {i down}{sleep 240}{i up}
return
Numpad3::
Send, {i down}{sleep 240}{i up}
return
Numpad4::
Send, {i down}{sleep 240}{i up}
return
Numpad5::
Send, {i down}{sleep 240}{i up}
return
Numpad6::
Send, {i down}{sleep 240}{i up}
return
Numpad7::
Send, {i down}{sleep 240}{i up}
return
Numpad8::
Send, {i down}{sleep 240}{i up}
return
Numpad9::
Send, {i down}{sleep 240}{i up}
return
bedeutet er hält immer wenn ich eine Numpad taste 1-9 drücke für jeweils 4 Sekunden die i-Taste gedrückt. Ich habe es für jede Numpad taste einzeln gemacht, da ich die Zeitintervalle noch ändern werde.
Jetzt habe ich nurnoch ein Problem und zwar will ich, dass das Gleiche auch bei Strg+Numpad1-9 und Alt+Numpad1-9 so funktioniert. Und das bekomme ich einfach nicht hin.
Sprich ich drücke Strg+Numpad1 gleichzeitig und dann soll auch wieder für eine bestimmte Zeit die i-Taste gehalten werden. Ich weiß einfach nicht wie Strg/alt mit dem Numpad kombinieren muss, so dass es das Script versteht.

Vielen Dank im voraus für eure Hilfe!
just me
Posts: 9450
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

07 Aug 2017, 07:40

Moin,
I3lackJ4ck wrote:bedeutet er hält immer wenn ich eine Numpad taste 1-9 drücke für jeweils 4 Sekunden die i-Taste gedrückt.
Mitnichten!

Es bedeutet z.B.:

Wenn Numpad1 gedrückt wird, werden
  1. die Taste i gedrückt und gehalten,
  2. 240 Mal die Taste Sleep gesendet (die ist auf Deiner Tastatur offenbar nicht vorhanden / mit einer Funktion verbunden, sonst würde sich Dein Rechner 240 Mal 'schlafen legen'),
  3. die Taste i gelöst.
Merke: Die Send Anweisung simuliert Tastatureingaben, die Sleep Anweisung pausiert das Skript.

Zum Thema Strg/Alt solltest Du Dir noch einmal nnnik's Link zu den 'Modifikatoren' ansehen.
I3lackJ4ck
Posts: 3
Joined: 04 Aug 2017, 18:05

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

07 Aug 2017, 09:27

Hallo,

danke erstmal für deine Antwort!
just me wrote: Es bedeutet z.B.:

[*]240 Mal die Taste Sleep gesendet (die ist auf Deiner Tastatur offenbar nicht vorhanden / mit einer Funktion verbunden, sonst würde sich Dein Rechner 240 Mal 'schlafen legen'),

[*]die Taste i gelöst.[/list]Merke: Die Send Anweisung simuliert Tastatureingaben, die Sleep Anweisung pausiert das Skript.
Ich habe den Code jetzt mal geändert und nun scheint es genauso zu funktionieren wie zuvor, anscheinend aber mit dem richtigen Timer so wie du meintest. Siehe Code unten. Danke!
Bedeutet für mich, dass ich zuvor letztlich den gleichen Effekt hatte, aber nicht korrekt gecodet wurde, denn ich habe in dieser Zeit unnötig 240mal die sleep taste gedrückt, anstatt einfach (240 tastenanschläge~~4 Sekunden) die taste zu halten und das Skript zu pausieren.

just me wrote:Zum Thema Strg/Alt solltest Du Dir noch einmal nnnik's Link zu den 'Modifikatoren' ansehen.
Genau diesen link hab ich mir bereits angesehen und bereits mit den ^ und ! gearbeitet, aber irgendwie hat es dann nichtmehr funktioniert, aber jetzt scheint es zumindest teilweise zu funktionieren. Das schaut jetzt so aus:

Code: Select all

Numpad1::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad2::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad3::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad4::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad5::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad6::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad7::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad8::
Send, {i down}
sleep 4000
send, {i up}
return
Numpad9::
Send, {i down}
sleep 4000
send, {i up}
return

!Numpad1::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad2::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad3::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad4::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad5::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad6::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad7::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad8::
Send, {i down}
sleep 4000
send, {i up}
return
!Numpad9::
Send, {i down}
sleep 4000
send, {i up}
return

^Numpad1::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad2::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad3::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad4::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad5::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad6::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad7::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad8::
Send, {i down}
sleep 4000
send, {i up}
return
^Numpad9::
Send, {i down}
sleep 4000
send, {i up}
return
Im Prinzip immer das Gleiche, nur dass eben in der wiederholung das gleiche für Strg+Numpad und Alt+Numpad definiert wird.
Ein Problem hab ich jetzt noch. Windows erkennt jetzt nun jedes mal wenn ich Strg+NumpadX oder Alt+NumpadX eingebe auch ein normale Eingabe von NumpadX. Ich will aber nur dass es bei Eingabe der Kombination von z.b. Strg+Numpad2 auch nur das tut und nicht auch das normale Numpad2 sowie das alt numpad irgendwie eingiebt. Keine Ahnung warum er das überhaupt tut. Ich gebe doch nur Befehle für die taste i eigentlich. Vielleicht liegt es auch am Programm, aber das Programm erkennt anscheinend alles richtig, wenn ich nur NumpadX eingebe, sobald ich aber Alt oder Strg+NumpadX eingebe, führt er die Befehle von den jeweils anderen Alt/Strg NumpadX kombinationen auch aus. Wenn das Skript nicht läuft funktioniert alles einwandfrei.

Tut mir Leid falls ich hier falsche Dinge gesagt habe, aber ich kenne mich leider noch garnicht damit aus und versuche mein bestes das zu verstehen! Vielen Dank für eure Hilfe!
just me
Posts: 9450
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

08 Aug 2017, 01:12

I3lackJ4ck wrote:Ein Problem hab ich jetzt noch. ...
Würdest Du das bitte etwas genauer beschreiben? In Deinem Beispiel wird für alle Hotkeys mit oder ohne Modifikator eine identische Aktion ausgelöst. Was meinst Du mit "... sobald ich aber Alt oder Strg+NumpadX eingebe, führt er die Befehle von den jeweils anderen Alt/Strg NumpadX kombinationen auch aus"?
Wenn das Skript nicht läuft funktioniert alles einwandfrei.
Wenn das Skript nicht läuft, tut es auch nichts. ;)
Rohwedder
Posts: 7624
Joined: 04 Jun 2014, 08:33
Location: Germany

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

08 Aug 2017, 23:29

Hallo,
ich glaube du willst, daß beim Drücken des Hotkeys seine ursprüngliche Funktion nicht versteckt wird.
Einfach vor jedem Hotkey eine Tilde ~ schreiben. Also:

Code: Select all

~Numpad1::
Send, {i down}
sleep 4000
send, {i up}
return
~Numpad2::
Send, {i down}
sleep 4000
send, {i up}
return
usw.

Mit einer Funktion geht das aber auch etwas kürzer:

Code: Select all

~Numpad1::Drücke_i(4000)
~Numpad2::Drücke_i(4000)
~Numpad3::Drücke_i(4000)
~Numpad4::Drücke_i(4000)
~Numpad5::Drücke_i(4000)
~Numpad6::Drücke_i(4000)
~Numpad7::Drücke_i(4000)
~Numpad8::Drücke_i(4000)
~Numpad9::Drücke_i(4000)
~!Numpad1::Drücke_i(4000)
~!Numpad2::Drücke_i(4000)
~!Numpad3::Drücke_i(4000)
~!Numpad4::Drücke_i(4000)
~!Numpad5::Drücke_i(4000)
~!Numpad6::Drücke_i(4000)
~!Numpad7::Drücke_i(4000)
~!Numpad8::Drücke_i(4000)
~!Numpad9::Drücke_i(4000)
~^Numpad1::Drücke_i(4000)
~^Numpad2::Drücke_i(4000)
~^Numpad3::Drücke_i(4000)
~^Numpad4::Drücke_i(4000)
~^Numpad5::Drücke_i(4000)
~^Numpad6::Drücke_i(4000)
~^Numpad7::Drücke_i(4000)
~^Numpad8::Drücke_i(4000)
~^Numpad9::Drücke_i(4000)

Drücke_i(Zeit)
{
	Send, {i down}	
	Sleep %Zeit%
	Send, {i up}
}

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Bei Tastendruck gleichzeitig andere Taste gedrückt halten

09 Aug 2017, 04:04

Rohwedder's funktion noch etwas variabler ...

Code: Select all

~Numpad1::sendKey("i",4) ; funktionsaufruf mit angabe des keys und der zeitdifferenz in sekunden 

sendKey(key,time) {
	Send {%key% down}
	Sleep time * 1000
	Send {%key% up}
	}

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: Rohwedder and 37 guests