Вопрос: Когда нажата кнопка блокировки, пробел возвращает знак подчеркивания


В основном, я ищу: когда CapsLock Я хочу Космос вернуться _ и я хочу сдвиг + Космос вернуться ,

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

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


4
2018-05-03 14:37


Источник




Ответы:


Сценарий 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 является не активные:

    • Космос вставляет пробел.

    • сдвиг + Космос вставляет подчеркивание.

  • Если CapsLock активен:

    • Космос вставляет подчеркивание.

    • сдвиг + Космос вставляет пробел.

Если ты хочешь Космос вести себя нормально, когда CapsLock является не active, просто исключите первый блок.

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

  1. Скачать и установите последнюю версию.

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

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

  4. Если вы хотите, скопируйте сценарий (или ссылку на него) в Startup папка.

Как это работает:

  • +Space:: ... return исполняет ... когда сдвиг + Космос нажата.

    +Space:: ... return исполняет ... когда Космос (без модификаторов).

  • state := GetKeyState("CapsLock", "T") проверяет, CapsLock активен.

    • Если это, state является true и блок после if state выполняется.

    • Если это не так, state является false и блок после else выполняется.

  • SendPlay X вставляет символ (последовательность) X,

    Вы не можете использовать Send здесь, так как это вызовет сценарий рекурсивно, что приведет к бесконечному циклу.

  • return завершает скрипт в текущей точке.

    Второй return является необязательным, первое - нет. Без последнего, сдвиг + Космос может вызвать и то и другое блоки для выполнения.


11
2018-05-03 14:54



@kentcdodds: вы должны замещать предыдущий скрипт с этим. - Dennis
Как вы думаете, вы можете отредактировать ответ, чтобы удалить часть с закрытием капота и сдвинуть + пробел вставить подчеркивание? Часть моей проблемы заключается в том, что у меня ленивый мизинец, поэтому, когда я разговариваю или печатаю обычно, я случайно вставляю символ подчеркивания. Поэтому, в основном, я хочу нормальную функциональность, когда блокировка крышки отключена. Благодарю. - kentcdodds
Я несколько раз пробовал сценарий с несколькими вариантами, и, похоже, он просто полностью отключил функциональность моего ключевого слова ... - kentcdodds
@kentcdodds: Я пробовал обе версии (с и без первого блока), и они работают нормально. Закройте AutoHotKey полностью и загрузите только этот новый скрипт, чтобы убедиться, что старый скрипт больше не работает. Они не будут работать вместе. - Dennis