2017-06-16 2 views
0

Vorgesehen Hotkey-Funktion: Zeichen Capitalize wenn Taste länger als 0,2 Sekunden gedrücktLang drücken = Capitalize

Problem Auftretende: Wenn in einer schnellen Art und Weise "VBNM" in einer Reihe eingeben (was bedeutet, dass ich Drücken Sie die nächste Taste, während Sie die vorherige Taste gedrückt halten), dann gibt AHK nur x-mal die Taste aus, die zuerst gedrückt wurde, was hier zu "vvvv" führt.

, dass der Code ist. Bitte helfen Sie mir (y) :-)

$y:: 
$x:: 
$c:: 
$v:: 
$b:: 
$n:: 
$m:: 
    key := SubStr(A_ThisHotkey, 2) 
    ;MsgBox, %key% ;it recognizes/shows all keys pressed correctly, 
    ;but in the end it prints just x-times the key that was pressed first 
    ;whereby x is the number of keys pressed very quickly in a row 

    KeyWait, %key%, T0.2 ;Long press = capitalize 
    If ErrorLevel 
     SendInput +%key%  
    Else 
     SendInput %key%   
Return 

Antwort

0

Versuch:

$y:: 
$x:: 
$c:: 
$v:: 
$b:: 
$n:: 
$m::keyFunc(SubStr(A_ThisHotkey, 2)) 

keyFunc(key) { 
    KeyWait, %key%, T0.3 ;Long press = capitalize 
    SendInput % ErrorLevel ? Format("{:U}", key) : key 
Return 
} 
+0

Glücklich Ihre Antwort zu hören! Dein Skript macht einen Unterschied. Die Eingabe von „VBNM“ führt nicht in „ww“ mehr, sondern in „mnbv“, so dass es jedes Zeichen senden, sondern nur in der falschen Reihenfolge. Den Code in eine separate Funktion zu setzen, war die Lösung. Durch das Hinzufügen von "critical" werden die Zeichen wieder in die richtige Reihenfolge gebracht, und jetzt scheint es zu funktionieren. Zwei Dinge sind noch nicht ganz befriedigend: Erstens, deutsche Umlaute schreiben, Sondertasten oder Zahlen, aber ich habe es gelöst. Zweitens, drücken Sie eine Taste zu lang und es wird nicht nur die Großbuchstaben ausgegeben, sondern auch die Normale, zum Beispiel "Oo". – EssenceBlue

1

So endlich dieser Code, neben der kleinen Unannehmlichkeit beim Halten der Taste viel zu lang, was zum Beispiel zu funktionieren scheint "Oo".

;For normal characters ...... 
$x:: 
$c:: 
$v:: 
$b:: 
$n:: 
$m::keyFunc(SubStr(A_ThisHotkey, 2)) 
keyFunc(key) { 
    Critical 
    KeyWait, %key%, T0.3 ;Long press = capitalize 
    SendInput % ErrorLevel ? Format("{:U}", key) : key 
Return 
} 

;For special characters ...... 
$2:: 
$3:: 
$4:: 
$5:: 
$6:: 
$7:: 
$8:: 
$9:: 
$sc01A:: ;ü 
$sc027:: ;ö 
$sc028:: ;ä 
$sc00C:: ;ß 
$sc033:: ;, 
$sc034:: ;. 
$sc035:: ;- 
$sc01B:: ;+ 
$sc02B:: ;# 
$sc00D:: keyFunc2(SubStr(A_ThisHotkey, 2)) 
keyFunc2(key) { 
    Critical 
    KeyWait, %key%, T0.3 ;Long press = capitalize 
    If ErrorLevel 
     SendInput +{%key%} 
    Else 
     SendInput {%key%} 
Return 
} 
Verwandte Themen