Maus- und Tastatureingaben sichtbar machen

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Maus- und Tastatureingaben sichtbar machen

31 Oct 2017, 17:34

Bei Youtube-Bildschirm-Anleitungen ist es nicht immer einfach zu sehen bzw. zu zeigen, was denn gerade eingegeben wird.
Deshalb hier der Versuch dies sichtbar zu machen (die aktuelle Version: https://github.com/Grrdi/WatchUserInput ... master.zip).

Code: Select all

Run, KeyBoardIn.ahk,,,EinzeltasteNowID
OnExit,Schluss
Loop
{
	L:=A_Space A_Space A_Space
	R:=A_Space A_Space A_Space
	if(GetKeyState("LButton"))
		L:="◄"
	if(GetKeyState("RButton"))
		R:="►"
	MouseGetPos,X,Y
	kveraendert:=false
	k:=
	FileRead,k,EinzeltasteNow.txt
	if not ErrorLevel
	{
		FileDelete,EinzeltasteNow.txt
		vomKeyboard= .%A_Tab%⌨ %kaaaa%%kaaa%%kaa%%ka%%k% ⌨
		LastCharTime:=A_TickCount
		kveraendert:=true
		kaaaa:=kaaa
		kaaa:=kaa
		kaa:=ka
		ka:=k
	}
	if(vomKeyboard<>"" AND A_TickCount-LastCharTime > 2000)
	{
		k:=
		ka:=
		kaa:=
		kaaa:=
		kaaaa:=
		vomKeyboard:=
		kveraendert:=true
	}
	if(A_TimeIdle>4000)
	{
		ToolTip
	}
	if (xalt<>x or yalt<>y or lalt<>l or ralt<>r or kveraendert)
	{
		ToolTip,%L%█%R%%vomKeyboard%
	}
	xalt:=x
	yalt:=y
	lalt:=l
	ralt:=r
}
LShift & RShift::
Schluss:
Process,Close,%EinzeltasteNowID%
ExitApp
mit dem ganz oben aufgerufenen Hilfsskript KeyBoardIn.ahk

Code: Select all

Loop, 26
	Transform, Strg%A_Index%, Chr,% A_Index ; Speichert das Zeichen für STRG+A bis Z in die Variable Strg1 bis Strg26.

Loop
{
	Einzeltaste:=
	Input, Einzeltaste,M V L1, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}{Enter}{Return}{Esc}
	Loop,26
	{
	if (Einzeltaste = Strg%A_Index%)
		Einzeltaste:="STRG " chr(A_index+64)	
	}
	If (InStr(ErrorLevel, "EndKey:") and Einzeltaste="")
	{
		StringReplace,Einzeltaste,ErrorLevel,EndKey:
		Einzeltaste:=A_Space Einzeltaste A_Space
	}
	FileAppend,%Einzeltaste%,EinzeltasteNow.txt
}
Verbesserte Versionen oder Tipps wilkommen!

PS. die Unicode Zeichen Linke und Rechte Sprechblase sowie ein Mausbild wurde von der Forumssoftware abgelehnt.
Sie wurden durch ◄ , ► und █ ersetzt.
Last edited by Gerdi on 02 Nov 2017, 08:10, edited 1 time in total.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Maus- und Tastatureingaben sichtbar machen

01 Nov 2017, 06:46

Moin,

ich hätte zwei Anmerkungen:

Eingabepuffer:
Es ist bestimmt nicht schneller, sieht aber viel 'eleganter' aus, wenn Du dafür ein Array nutzt.

Behandlung Strg+A - Strg +Z:
Mit der M Option gibt die Input Anweisung für diese Kombinationen jeweils 1 Zeichen. Die ASCII-Werte dieser Zeichen sind 1 - 26. Statt der zwei Schleifen kannst Du deshalb

Code: Select all

If (Einzeltaste <> "") && ((A := Asc(Einzeltaste)) < 27)
   Einzeltaste := "Strg+" . Chr(A + 64)
benutzen.
Übrigens:
Input wrote:... Außerdem ist es möglich, dass die M-Option einige Tastenkürzel wie STRG+NACH-LINKS dazu bringen kann, sich während eines Inputs falsch zu verhalten.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Maus- und Tastatureingaben sichtbar machen

01 Nov 2017, 12:53

Danke just me,
Eingabepuffer:
Es ist bestimmt nicht schneller, sieht aber viel 'eleganter' aus, wenn Du dafür ein Array nutzt.
Meinst Du mit Eingabepuffer den Dateiinhalt von EinzeltasteNow.txt
oder meinst Du den Anzeigepuffer ka kaa kaaa oder was ganz anderes?

Deine
Behandlung Strg+A - Strg +Z:
ist viel besser! Somit wird KeyBoardIn.ahk

Code: Select all

Loop
{
	Einzeltaste:=
	Input, Einzeltaste,M V L1, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{AppsKey}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}{Enter}{Return}{Esc}
	If (Einzeltaste <> "") && ((A := Asc(Einzeltaste)) < 27)
		Einzeltaste := "Strg+" . Chr(A + 64)
	If (InStr(ErrorLevel, "EndKey:") and Einzeltaste="")
	{
		StringReplace,Einzeltaste,ErrorLevel,EndKey:
		Einzeltaste:=A_Space Einzeltaste A_Space
	}
	FileAppend,%Einzeltaste%,EinzeltasteNow.txt
}
gibt es eine Alternative zur M-Option?
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Maus- und Tastatureingaben sichtbar machen

02 Nov 2017, 02:30

Moin,
... oder meinst Du den Anzeigepuffer ka kaa kaaa ...?
Genau den.
... gibt es eine Alternative zur M-Option?
Eher nicht. Ich habe allerdings die M-Option vorher nie selbst genutzt und bin erst beim Lesen der Hilfe darauf gestoßen, dass sie Probleme bereiten kann. Einige Anmerkungen in der Hilfe stammen noch aus den 'guten alten' AHK 1.0 Zeiten unter 16-Bit Windows. Es mag also sein, dass sich das in neueren AHK-/OS-Versionen schon erledigt hat.

Hast Du schon versucht, das in ein Skript zu packen? Du könntest die Schleife aus dem ersten Skript in einen Timer umwandeln. Dann wäre der Austausch per Datei überflüssig. Ich weiß allerdings nicht, ob die durch den Timer unterbrochene Input-Anweisung Eingaben 'verpassen' kann.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Maus- und Tastatureingaben sichtbar machen

02 Nov 2017, 06:03

Danke just me,

Code: Select all

CharAnz:=35
Run, KeyBoardIn.ahk,,,EinzeltasteNowID
OnExit,Schluss
k:={}
Loop
{
	L:=A_Space A_Space A_Space
	R:=A_Space A_Space A_Space
	if(GetKeyState("LButton"))
		L:="◄"
	if(GetKeyState("RButton"))
		R:="►"
	MouseGetPos,X,Y
	kveraendert:=false
	kk:=
	FileRead,kk,EinzeltasteNow.txt
	if not ErrorLevel
	{
		k[1]:=kk
		FileDelete,EinzeltasteNow.txt
		c:=
		Loop, % CharAnz
			C.=k[CharAnz+1-A_index]
		vomKeyboard= % A_Tab "⌨ " c " ⌨"
		LastCharTime:=A_TickCount
		kveraendert:=true
		loop, % CharAnz
			k[CharAnz+1-A_index]:=k[CharAnz-A_index]
	}
	if(vomKeyboard<>"" AND A_TickCount-LastCharTime > 2000)
	{
		Loop, % CharAnz
			k[A_index]:=""
		vomKeyboard:=
		kveraendert:=true
	}
	if(A_TimeIdle>4000)
	{
		ToolTip
	}
	if (xalt<>x or yalt<>y or lalt<>l or ralt<>r or kveraendert)
	{
		ToolTip,%L%█%R%%vomKeyboard%
	}
	xalt:=x
	yalt:=y
	lalt:=l
	ralt:=r
}
LShift & RShift::
Schluss:
Process,Close,%EinzeltasteNowID%
ExitApp
Hast Du schon versucht, das in ein Skript zu packen?
Nein, genau wegen der Befürchtung was zu verpassen.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Maus- und Tastatureingaben sichtbar machen

02 Nov 2017, 08:59

Schon korrekt, aber:

Arrays haben den Vorteil, dass Du sie nicht 'umschaufeln' musst. Die Methode Array.Push(Value) hängt den in Value übergebenen Wert an das Array an und gibt den Index des angehängten Wertes zurück. Die Methode Array.RemoveAt(1) entfernt den ersten Wert aus dem Array und korrigiert die Indizes der verbliebenen Werte. Sagt Dir das was? :idea:

Um den Inhalt eines Arrays komplett zu löschen reicht ein einfaches

Code: Select all

Array := []
Anschließend hat man wieder ein leeres Array.

Arrays lassen sich mit einer For-Schleife abarbeiten. Die wird nur genau so oft durchlaufen, wie das Array tatsächlich Werte enthält. Das kann etwas Zeit sparen.
Gerdi wrote:Nein, genau wegen der Befürchtung was zu verpassen.
Man kann aber auch nicht völlig ausschließen, dass sich die FileAppend, FileRead und FileDelete Anweisungen der beiden Skripte in die Quere kommen können.
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Maus- und Tastatureingaben sichtbar machen

04 Nov 2017, 03:37

Dein Hinweis
Außerdem ist es möglich, dass die M-Option einige Tastenkürzel wie STRG+NACH-LINKS dazu bringen kann, sich während eines Inputs falsch zu verhalten.
laesst sich bei mir leicht abgewandelt reproduzieren:
  • obiges Skript starten
    Explorer oeffnen
    Datei selectieren
    [F2] zum umbenennen druecken
    mehrfaches betaetigen der Pfeil nach links Taste
ploetzlich ist wieder der Dateiname ohne Extender markiert und die Schreibmarke vor den Punkt gehuepft, wie direkt nach betaetigen von [F2]

PS. Uebertragungsfehler vom einen Skript zum Anderen kommen vor, aber bei mir nur im Zusammenhang mit Tastatur-Dauerfeuer.

Die neueste Version: siehe Git-Link oben
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick
just me
Posts: 9424
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Maus- und Tastatureingaben sichtbar machen

04 Nov 2017, 05:58

Moin,
... mehrfaches betaetigen der Pfeil nach links Taste
Meinst Du hier Strg+PfeilNachLinks? Ansonsten kann sich die M-Option nicht auswirken.

Zur letzten Änderung, auch korrekt, aber schon wieder ein 'aber':
Wenn Du wie in der aktuellen Version den Eingabepuffer nicht rotierst, brauchst Du gar kein Array. Du kannst stattdessen direkt die Variable c verwenden.
Mensch ärgere Dich nicht! ;)
User avatar
Gerdi
Posts: 185
Joined: 03 Aug 2015, 18:48
Location: Germany
Contact:

Re: Maus- und Tastatureingaben sichtbar machen

06 Nov 2017, 05:17

Meinst Du hier Strg+PfeilNachLinks? Ansonsten kann sich die M-Option nicht auswirken.
Danke just me,
wirklich nur die Pfeiltaste. Lies sich allerdings soeben mit der neuen Version nicht mehr reproduzieren.

Neue Version auf Git.
Win 10 Home (x64) and Win 11 Pro N
https://github.com/Grrdi/ZackZackOrdner/archive/master.zip --> get folders on the quick

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 26 guests