2017-06-16 3 views
0

Destinée Hotkey Fonction: Capitaliser caractère si la touche enfoncée plus 0,2slong presse = Capitaliser

Survenant Problème: Lorsque vous tapez « vbnm » dans une rangée d'une manière rapide (ce qui signifie que je appuyez sur la touche suivante tout en maintenant la touche précédente enfoncée) alors AHK émet juste x fois la touche qui a été pressée en premier, ce qui donne ici "vvvv".

C'est le code. S'il vous plaît, aidez-moi (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 

Répondre

0

essayer:

$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

Heureux d'entendre votre réponse! Votre script fait une différence. Taper "vbnm" ne signifie plus "vvvv", mais "mnbv", donc chaque caractère est envoyé mais dans le mauvais ordre. Mettre le code dans une fonction séparée était la solution. Ajout de critique remet les caractères en ordre, et maintenant il semble bien fonctionner. Deux choses ne sont toujours pas très satisfaisantes: Premièrement, écrire de l'umlaute allemand, des touches spéciales ou des chiffres, mais je l'ai résolu. Deuxièmement, appuyez sur une touche trop longtemps et il sortira non seulement la lettre en majuscule, mais aussi la lettre normale, par exemple "Oo". – EssenceBlue

1

Donc finalement ce code semble fonctionner, à côté du petit inconvénient lorsque vous tenez la clé beaucoup trop long, ce qui par exemple "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 
}