Autohotkey presione más tiempo para mayúsculas

Autohotkey presione más tiempo para mayúsculas

Quiero presionar una tecla por más tiempo para presionarla con mayúsculas

Esto es lo que probé:

$a::                                              
KeyWait, a, T0.7                              
If ErrorLevel                               
  send +{a}
Else 
  send {a} 
Return

Envía Aa cuando la clave está activa y lo quiero en general (para todas las claves, sin reescribir un código para cada clave).

Respuesta1

Presione una tecla por más de 0,7 segundos para presionarla con mayúsculas:

#UseHook                                ; install the keyboard hook to activate hotkeys not supported in the operating system
; create a string of the keys you want be shifted:
keys := "1,2,3,4,a,b,c,d,SC01B,SC02B"   ; SC01B = scan code of "#"    SC02B = "+"
Loop, parse, keys, `,                   ; retrieves substrings (fields) from the string "keys" one at a time based on the delimiter ","
Hotkey, %A_Loopfield%, pressedkey       ; creates a hotkey of the retrieved field
return


pressedkey:                             ; A_ThisHotkey: the most recently executed hotkey
KeyWait, %A_ThisHotkey%, T0.7           ; wait 0.7 seconds for the key to be released              
If ErrorLevel                           ; the key has not yet been released after 0.7 seconds
{                   
  KeyWait, %A_ThisHotkey%                ; wait for the key to be released     
  if (SubStr(%A_ThisHotkey%, 1, 2) = SC) ; substring: starting position=1 (first character), Length=2 (characters)
    Send +{%A_ThisHotkey%}
  else
    Send +%A_ThisHotkey%
}
else                                     ; the key has been released before the 0.7 seconds limit
{ 
  if (SubStr(%A_ThisHotkey%, 1, 2) = SC) 
    Send {%A_ThisHotkey%}
  else
    Send %A_ThisHotkey%
}
return

EDITAR:

#UseHook  
keys := "1,2,3,4,a,b,c,d,SC01B,SC02B"
Loop, parse, keys, `,  
Hotkey, %A_Loopfield%, pressedkey 
return

pressedkey:
KeyWait, %A_ThisHotkey%, T0.7
If ErrorLevel 
{                   
  KeyWait, %A_ThisHotkey% 
   Send +{%A_ThisHotkey%}
}
else
    Send {%A_ThisHotkey%}
return 

Respuesta2

Presionar más MAYÚSCULAS fue una buena idea, pero hubo problemas al escribir, así que cambié el objetivo del guión, que era mi objetivo principal "escribir solo números mientras se presiona más tiempo"Como no tengo un teclado numérico en mi teclado, este fue mi código final:

por supuesto un agradecimiento especial ausuario3419297

; AutoHotkey Version: 1.x
; Language:       English
; Platform:       Win9x/NT
; Author:         fayssal.Z
; credits to:
;           Great thanks to user3419297 , the whole code made by him 
; Script Function:
;   easy way to write numbers by pressing longer on symbols (no shift or capslock required)
;

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

#UseHook

keys := "sc02,sc03,sc04,sc05,sc06,sc07,sc08,sc09,sc0A,sc0B,sc0C,sc0D"   
   Loop, parse, keys, `,
   Hotkey, %A_Loopfield%, pressedkey
return

pressedkey:
    KeyWait, %A_ThisHotkey%, T0.3                              
      If ErrorLevel
         {                   
          KeyWait, %A_ThisHotkey%
      If (SubStr(%A_ThisHotkey%, 1, 2) = SC)
         Send +{%A_ThisHotkey%}
     Else
         Send +%A_ThisHotkey%
         }
    Else 
         { 
    If (SubStr(%A_ThisHotkey%, 1, 2) = SC) 
         Send {%A_ThisHotkey%}
    Else
         Send %A_ThisHotkey%
        }
return

información relacionada