У меня есть этот код до сих пор с помощью autohotkey (.ahk)

!k::SendInput,{UP}
!j::SendInput,{LEFT}
!æ::SendInput,{RIGHT}
!l::SendInput,{DOWN} 

который правильно отображает мои клавиши со стрелками на j, k, l, æ соответственно. (æ клавиша; клавиша на английских клавиатурах)

Это работает как талисман, за исключением того факта, что я не могу удерживать «ctrl +alt +j» для интанса, чтобы перейти к следующему слову слева, как и я, если я использую «ctrl +arrowKeyLeft».

Мне нужно, чтобы это работало и со смещением, чтобы выделить буквы слева. То, что происходит сейчас, просто ничего, поэтому я должен сказать сценарию, что он должен как-то выделить текст на «shift +alt +(j, k, l, æ)», но я не смог найти способ сделай это только сейчас. Любая помощь, лайки или предложения о том, как это сделать, очень ценится. Заранее спасибо.

1 ответ1

0

Следуя мысли в комментарии @ NextInLine, что-то вроде приведенного ниже может быть отправной точкой, но кажется, что с Windows и этими комбинациями клавиш происходит нечто забавное, поэтому текущий сценарий действует как выделение целой строки вместо за слово. Возможно, тестирование в вашей системе приведет к другому поведению.

В основном скрипт выполняет следующие действия:

  1. Убедитесь, что состояние клавиш Ctrl и Alt равно True (нажато).
  2. Если это правда, зациклите включенный код 20 раз
  3. Внутри цикла, подождите, пока j будет нажата в течение 2 секунд. При нажатии выполните {Alt up} {Ctrl down} {Shift down} {LEFT}
  4. Разорвать петлю, если не обнаружена клавиша j.

Код:

 ^!j::
 {
      if (GetKeyState("Ctrl", "P")) AND (GetKeyState("Alt", "P"))
        { 
        Loop, 20
        {
        KeyWait, j, D T2
        if (GetKeyState("j", "P"))
          {
          SendInput, {Alt up}{Ctrl down}{Shift down}{LEFT}
          }
        else
        {
          break
        }
        }
      SendInput, {Ctrl up}{Shift up}
      return
        }
    }

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