Если есть несколько пунктов контекстного меню с одной и той же горячей клавишей, нажатие этой горячей клавиши переключает между ними, как вы обнаружили. Если горячая клавиша соответствует только одному элементу, нажатие на нее немедленно активирует элемент.
Очевидно, что Windows использует первую букву текста элемента в качестве горячей клавиши. Вы можете переопределить это, поместив амперсанд ( &
) перед буквой, которую вы хотите использовать как горячую клавишу. Однако это должно быть сделано в значении по умолчанию ключа реестра команды, а не имени ключа. На этом изображении я попытался изменить горячую клавишу для «Созерцать» Oи «Правку» для I:
Оба варианта работают так, что приведенная выше конфигурация создает это контекстное меню:
Нажатие Oнемедленно вызывает Созерцание, но нажатие Iничего не делает, хотя никакой другой пункт в моем меню не использует I. Изменение Edit, чтобы иметь имя ключа без амперсанд, но значение по умолчанию Ed&it
заставляет это работать как ожидалось.
Не существует простого способа изменить элементы встроенного контекстного меню, такие как Копировать; они не находятся в реестре и вместо этого создаются Explorer. Возможно, вы сможете написать расширение оболочки, которое использует SetMenuItemInfo
соответствующие информационные структуры меню, чтобы изменить его во время выполнения. Для более старого ответа я написал расширение оболочки для изменения значков встроенных элементов, которые могут быть хорошей отправной точкой.