4

На моем компьютере с Linux моя клавиатура переключается с английского на сербский, когда я держу клавишу Caps Lock. Например, чтобы написать č, все, что мне нужно сделать, - это удерживать Caps Lock и нажать клавишу, где č находится на сербской клавиатуре (в данном случае, это клавиша; на английской клавиатуре). Когда я отпускаю Caps Lock, клавиатура "переключается" обратно на английский, так что если я нажимаю; Я получил ; по желанию. Супер полезно.

Обратите внимание, что я знаю, как изменить раскладку клавиатуры. Я хочу использовать Caps Lock в качестве клавиши-модификатора, чтобы менять язык только во время удержания!

Есть ли способ повторить это поведение в Windows 7 или Windows 8?

Примечание: это иногда называют переключением символов "третьего уровня" (например, нажатие клавиши shift будет вторым уровнем). Я также не привязан к Caps Lock; другие ключи подойдут.

4 ответа4

1

Самый надежный скрипт AutoHotKey из моего тестирования был таким:

*CapsLock::
SetKeyDelay -1   ; If the destination key is a mouse button, SetMouseDelay is used instead.
;send {Blind}{CapsLock DownTemp}
PostMessage, 0x50, 0x02, 1,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST. 0x02 is forward
return

*CapsLock up::
SetKeyDelay -1  ; See note below for why press-duration is not specified with either of these SetKeyDelays.
;send {Blind}{CapsLock Up}
PostMessage, 0x50, 0x04, 1,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST. 0x04 is backward
return

Примечание: вам нужно уже настроить 2 языка ввода на панели управления регионами / языками Windows.

Автономная исполняемая версия здесь.

Чтобы остановить скрипт, щелкните правой кнопкой мыши на H на панели задач и нажмите пауза / выход.

Если вы хотите сохранить функциональность блокировки заглавных букв (то есть: нажатие на нее приведет к включению блокировки заглавных букв и изменению языка, после отмены возврата к предыдущему языку, но оставив заглавные буквы заблокированными), просто удалите их ; символы в начале двух строк send .

Посмотрите, как быстро я набираю это:; č; č; č; č; č; č; č; č

Довольно быстро, а?

1

Вы, вероятно, можете сделать это довольно легко, используя AutoHotKey. Вам нужно будет немного вникнуть в него, если вы раньше не использовали его, но его можно использовать для сопоставления чего-либо с любым ключом.

Смотрите это для переназначения клавиш (удобно, есть запись специально для Caps Lock).

1

Два предыдущих ответа, @Jared и @pleinolijf, могут быть использованы вместе для построения окончательного ответа.

Используя ответ Джареда, вы можете назначить каждую раскладку клавиатуры горячей клавишей.

Используя ответ pleinolijf, вы можете написать скрипт AutoHotkey, который отправит горячую клавишу для переключения на сербский язык при нажатии CapsLock, а затем на английский, когда он будет выпущен.

Без проверки чего-либо, это может быть похоже на:

Capslock::{Serbian-hotkey}
Capslock Up::{English-hotkey}
1

В Windows 7 вы можете установить несколько наложений клавиатуры, выполнив:

Control Panel-> "Clock, Language, and region" -> "Change Keyboards or other input methods" -> "Keyboards and Languages" tab -> "Change Keyboards"

Отсюда вы можете добавить сербскую клавиатуру в список установленных сервисов.

По умолчанию Alt+Shift является комбинацией по умолчанию для переключения между клавиатурами, но вы можете настроить ее на вкладке Advanced Key Settings .

Насколько я знаю, нет опции модификатора третьего уровня, но этот метод позволит вам поменять местами наборы ключей, ввести необходимые символы и снова переключиться обратно.

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