Когда блокировка заглавных букв нажата, пробел возвращает подчеркивание
По сути, я ищу следующее: когда CapsLock включен, я хочу, чтобы Space вернулся _ и я хочу, чтобы Shift + Space вернулся ,
Подробно: Это своего рода продолжение этого вопроса, который я задал о переназначении клавиш Shift + Пробел, чтобы они стали подчеркиванием (_). Я получил отличный ответ, но нашел его немного сложным, особенно когда у меня ленивый мизинец, который не любит вовремя нажимать клавишу Shift, чтобы я нажал клавишу пробела. Так что теперь я задаюсь вопросом, знает ли кто-нибудь о решении сделать так, чтобы клавиша пробела могла переназначаться, чтобы подчеркнуть, когда CapsLock включен. И, что еще лучше, если CapsLock включен, и я нажму комбинацию Shift + Space, это заставит космический символ. Имеет ли это смысл? Идите и попросите разъяснений.
О, кстати, решение вопроса, который я задал ранее, может сделать это. Это называется AutoHotKey. Если это сработает, то я полностью доволен этим! Спасибо!
2 ответа
Скрипт AutoHotkey:
+Space::
state := GetKeyState("CapsLock", "T")
if state
SendPlay {Space}
else
SendPlay _
return
Space::
state := GetKeyState("CapsLock", "T")
if state
SendPlay _
else
SendPlay {Space}
return
Что оно делает:
Если CapsLock не активен:
Пробел вставляет пробел.
Shift + Пробел вставки подчеркивания.
Если CapsLock активен:
Космические вставки подчеркивают.
Shift + Пробел вставляет пробел.
Если вы хотите, чтобы Space работал нормально, когда CapsLock не активен, просто удалите первый блок.
Как пользоваться:
Загрузите и установите последнюю версию.
Сохраните приведенный выше скрипт как
underscore.ahk, используя ваш любимый текстовый редактор.Дважды щелкните файл, чтобы запустить скрипт.
Если вы хотите, скопируйте скрипт (или ссылку на него) в
Startupпапка.
Как это устроено:
+Space:: ... returnисполняет...когда нажата Shift + пробел.+Space:: ... returnисполняет...когда нажимается пробел (без модификаторов).state := GetKeyState("CapsLock", "T")проверяет, активен ли CapsLock.Если это,
stateявляетсяtrueи блок послеif stateисполняется.Если это не так,
stateявляетсяfalseи блок послеelseисполняется.
SendPlay Xвставляет символ (последовательность)X,Вы не можете использовать
Sendздесь, так как он будет запускать сценарий рекурсивно, что приводит к бесконечному циклу.returnзавершает скрипт в текущей точке.Второй
returnнеобязательно, первое - нет. Без последнего, Shift + Space приведет к выполнению обоих блоков.
$Space::
state := GetKeyState("CapsLock", "T")
if state
Send _
else
Send {Space}
return
Приведенный выше ответ также не работает для меня. Это сработало однако.