4

По сути, я ищу следующее: когда CapsLock включен, я хочу, чтобы Space возвращал _ и я хочу, чтобы Shift + Space возвращал ,

Подробно: Это своего рода продолжение этого вопроса, который я задал о переназначении клавиш Shift + Пробел, чтобы они стали подчеркиванием (_). Я получил отличный ответ, но нашел его немного сложным, особенно когда у меня ленивый мизинец, который не любит вовремя нажимать клавишу Shift, чтобы я нажал клавишу пробела. Так что теперь мне интересно , если кто - нибудь знает о решении сделать так , Пробел может переназначить , чтобы подчеркнуть , когда CapsLock включен. И, что еще лучше, если CapsLock включен, и я нажму комбинацию Shift + Space, это приведет к появлению символа пробела. Имеет ли это смысл? Идите и попросите разъяснений.

О, кстати, решение вопроса, который я задал ранее, может сделать это. Это называется AutoHotKey. Если это сработает, то я полностью доволен этим! Спасибо!

2 ответа2

11

Скрипт 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 не активен, просто удалите первый блок.

Как пользоваться:

  1. Загрузите и установите последнюю версию.

  2. Сохраните приведенный выше скрипт как underscore.ahk , используя ваш любимый текстовый редактор.

  3. Дважды щелкните файл, чтобы запустить скрипт.

  4. При желании скопируйте скрипт (или ссылку на него) в папку « 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 приведет к выполнению обоих блоков.

0
$Space::
state := GetKeyState("CapsLock", "T")
if state
    Send _
else
    Send {Space}
return        

Приведенный выше ответ также не работает для меня. Это сработало однако.

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