Alt + Shift + буква в AutoHotKey

Вопрос или проблема

В AutoHotKey это работает отлично

RAlt & a::Send {U+00E4} ; RightAlt + a -> ä

Теперь я хочу сопоставить заглавную версию этой буквы, т.е. RightAlt + RightShift + a -> Ä

Я пробовал это, но ничего не работает

RAlt & RShift & a::Send {U+00C4} ; RightAlt + RightShift + a -> Ä
>!>+a::Send {U+00C4}

Как я могу сопоставить оба варианта

  • RightAlt + a -> ä
  • RightAlt + RightShift + a -> Ä

Используйте RAlt & a для горячей клавиши, а затем проверьте состояние RShift.

RAlt & a::
GetKeyState,isRShiftDown,RShift,P
IfEqual,isRShiftDown,D
    Send {U+00C4}
else
    Send {U+00E4}
return

Другой вариант:

RAlt & a::
If GetKeyState("RShift","P")=1
    Send {U+00C4}
else
    Send {U+00E4}
return

В обоих случаях установка режима P вместо значения по умолчанию означает, что будет проверяться, удерживается ли физическая клавиша, независимо от того, какое состояние считает за ней ОС. То есть, если какой-то другой скрипт удерживает RShift, но сама клавиша не удерживается, то эти команды отправят {U+00E4}.

Если вы используете AutoHotkey v2.0:

#Requires AutoHotkey v2.0

RAlt & a::
{
    if GetKeyState("RShift", "P") = 1
        Send "{U+00C4}"
    else
        Send "{U+00E4}"
}

Пользовательские комбинации утверждает

Комбинации из трех или более клавиш не поддерживаются.

и

Для стандартных модификаторов нормальные горячие клавиши обычно работают так же хорошо или лучше, чем “пользовательские” комбинации. Например, <+s:: рекомендуется вместо LShift & s::

Также попробуйте

>!a::Send {U+00E4} ; RightAlt + a -> ä
>!>+a::Send {U+00C4} ; RightAlt + RightShift + a -> Ä

Вместо отправки юникодов вы можете использовать Текстовый режим:

>!a::Send {text}ä
>!>+a::Send {text}Ä

Ответ или решение

В AutoHotkey можно настроить сочетания клавиш для отправки специфических символов, таких как ä и Ä, с использованием комбинаций клавиш Alt и Shift. Для реализации вашей задачи, вам необходимо создать два сочетания клавиш: одно для малой буквы ä и другое для заглавной Ä.

Вот как можно это сделать:

  1. Сочетание клавиш для ä (малая буква):

    RAlt & a::Send {U+00E4} ; Правый Alt + a -> ä
  2. Сочетание клавиш для Ä (большая буква):

    Ниже приведен способ проверки состояния клавиши RightShift при нажатии RightAlt + a. Если RightShift нажата, будет отправлено символ Ä, в противном случае – символ ä.

    RAlt & a::
    GetKeyState, isRShiftDown, RShift, P
    IfEqual, isRShiftDown, D
       Send {U+00C4} ; Если RightShift нажат, отправляется Ä
    else
       Send {U+00E4} ; Если RightShift не нажат, отправляется ä
    return

Этот подход позволяет обрабатывать нажатия правого alt и правого shift без использования комбинированных сочетаний, которые не поддерживаются в AutoHotkey.

Альтернативный вариант

Также можно использовать более компактный вариант:

RAlt & a::
If GetKeyState("RShift", "P") = 1
    Send {U+00C4} ; Отправляем Ä, если RightShift нажат
else
    Send {U+00E4} ; Отправляем ä, если RightShift не нажат
return

Для AutoHotkey v2.0

Если вы используете AutoHotkey v2.0, то код будет незначительно отличаться:

#Requires AutoHotkey v2.0

RAlt & a::
{
    if GetKeyState("RShift", "P") = 1
        Send "{U+00C4}" ; Отправляем Ä
    else
        Send "{U+00E4}" ; Отправляем ä
}

Дополнительные рекомендации

Также можно использовать "текстовый режим" вместо отправки юникодов:

>!a::Send {text}ä ; Правый Alt + a -> ä
>!>+a::Send {text}Ä ; Правый Alt + RightShift + a -> Ä

Заключение

Теперь у вас есть полное решение для настройки сочетаний клавиш в AutoHotkey для удобного ввода символов ä и Ä с использованием правого Alt и правого Shift. Попробуйте предложенные варианты кода и выберите тот, который наилучшим образом соответствует вашим требованиям.

Оцените материал
Добавить комментарий

Капча загружается...