Вы можете использовать AutoHock для этого. Основной скрипт переключения:
x = 0
RCtrl::
if x {
SendInput {Ctrl up}
x = 0
} else {
SendInput {Ctrl down}
x = 1
}
return
Установите Autohotkey
Сохраните скрипт где-нибудь как файл .ahk
Запустите его, дважды щелкнув (открыв) файл .ahk
Если вы хотите, чтобы он запускался при запуске, добавьте его в папку запуска меню «Пуск»
Вы можете заменить SendInput
Ctrl
на LCtrl
если хотите, чтобы он специально «держал» левую управляющую клавишу. Это не чувствительно к регистру, кстати.
Если вы не хотите устанавливать Autohotkey, вот отдельный исполняемый файл, описанный выше, который я сгенерировал с помощью функции компиляции Autohotkey. Используйте его так же, как .ahk
был описан выше. Используйте на свой риск.
Чтобы заблокировать левую клавишу управления, когда управление заблокировано:
x = 0
RCtrl::
if x {
SendInput {Ctrl up}
x = 0
} else {
SendInput {Ctrl down}
x = 1
}
return
*$LCtrl::
if (!x) {
SendInput {LCtrl down}
}
return
*$LCtrl up::
if (x && !GetKeyState("Ctrl")) {
SendInput {Ctrl down}
} else if (!x) {
SendInput {LCtrl up}
}
return
Да ... это сложно. Чтобы удержание клавиши работало как обычно, необходимо подключить и пропустить события как вниз, так и вверх. Модификатор неблокирования (~
) не может быть использован, потому что нам нужно блокировать в определенных случаях. Что еще хуже, нажатие Alt
+ Ctrl
делает что-то странное, когда блокирующая клавиша заблокирована, но ... вещи ломаются, когда она отпускается. GetKeyState
проверяет, работает ли он, когда он должен быть выключен, и устанавливает его в выключенное состояние, если оно не так. Да, сложно.
Вероятно, было бы проще просто сбросить состояние блокировки при отпускании левой клавиши управления. Ах хорошо.