Для меня все вышеперечисленные ответы являются неудовлетворительными, так как они ограничивают то, какие комбинации я могу использовать как пользовательские ярлыки, или на какие действия я могу нацелиться, или они требуют слишком много работы для чего-то, что должно быть простым.
Мое решение заключается в использовании AutoHotkey для “перевода” моих желаемых комбинаций клавиш в существующие ярлыки, которые Outlook 2016 (или Excel 2016, или то, что у вас есть) ожидает для этих действий.
Так что, например, всякий раз, когда я выбираю электронное письмо и нажимаю [Ins], я хочу, чтобы оно было помечено как прочитанное, поэтому у меня есть скрипт AutoHotkey, который заменит его на [Ctrl-Enter]. Или всякий раз, когда я нажимаю [Ctrl-f], я хочу перейти в окно поиска (d'oh!), но Outlook ожидает [Ctrl-e] для этого, поэтому у меня есть скрипт, посылающий его [Ctrl-e]. Скрипт выглядит так:
SetTitleMatchMode RegEx
#IfWinActive - Outlook$
Ins::Send ^{Enter}
^f::Send ^e
#IfWinActive
“#IfWinActive” гарантирует, что эти конкретные замены нажатия клавиш применяются только тогда, когда заголовок активного окна ends со строкой “ - Outlook” (конец помечен знаком доллара, что работает, потому что я включил режим сравнения строк, основанный на регулярных выражениях, выше). Тогда я отключаю определение заголовка активного окна с пустым #IfWinActive в конце.
Также, как только #IfWinActive попадает, я точно знаю, какое окно получит ключи, которые я посылаю, так что мне не нужно делать ничего особенного, кроме простого “Send <keys>” в ответ на каждое реальное нажатие клавиши, которая должна быть заменена.