3

Я хочу сопоставить Ctrl+Left to Home и Ctrl+Right to End, и я использую AutoHotkey, мой скрипт просто так:

^Left::Home
^Right::End

Однако, когда генерируются ключи Home и End, они интерпретируются как Ctrl+Home и Ctrl+End, потому что я удерживаю клавишу Ctrl для их генерации. Как отключить клавишу Ctrl или любую клавишу-модификатор при переназначении клавиш?

2 ответа2

4

Похоже, вы можете просто использовать Отправить:

^Left::Send {Home}
^Right::Send {End}

;Doesn't work with Shift, so we can add that manually:

+^Left::Send +{Home}
+^Right::Send +{End}

;You can add any other modifier keys you need to work.

Похоже, что при использовании команды « Отправить» временно отменяются все уже удерживаемые клавиши-модификаторы, поэтому они не будут влиять на вывод команды «Send», если только вы специально не используете {Blind} для сохранения уже удерживаемых клавиш-модификаторов.

Формат a::b используется для переназначения ключей и сохраняет любые модификаторы, удерживаемые в нажатом состоянии. (На самом деле он использует Send {Blind}.)

2

Пытаться:

^Left::
KeyWait Control
Home
Return

^Right::
KeyWait Control
End
Return

Если вам просто нужен какой-то код для этого, и он не должен быть autohotkey, AuotIt должен работать:

HotKeySet("^{LEFT}", "Home")
HotKeySet("^{RIGHT}", "End")
HotKeySet("{ESC}", "Terminate")

While 1
    Sleep(100)
WEnd

Func Home()
    Send("{HOME}")
EndFunc

Func End()
    Send("{END}")
EndFunc

Func Terminate()
    Exit 0
EndFunc

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