1

Я хочу нажать клавишу дольше, чтобы она была нажата с помощью Shift

Вот что я попробовал:

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

Он отправляет Aa, когда ключ поднят, и я хочу его вообще (для всех ключей, без переписывания кода для каждого ключа).

2 ответа2

0

Нажмите клавишу дольше 0,7 секунды, чтобы нажать ее со сдвигом:

#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

РЕДАКТИРОВАТЬ:

#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 
0

Хорошей идеей было нажатие дольше для UPPERCASE, но при наборе текста были проблемы, поэтому я изменил цель скрипта, которая была моей главной целью - « писать только цифры, нажимая дольше », так как у меня нет цифровой клавиатуры на клавиатуре. это был мой последний код:

Конечно, отдельное спасибо пользователю3419297

; 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .