Когда блокировка заглавных букв нажата, пробел возвращает подчеркивание
По сути, я ищу следующее: когда 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
Приведенный выше ответ также не работает для меня. Это сработало однако.