Editar: ¡Ja! ¡Lo descubrí! ¡AppKit siempre ha tenido esta funcionalidad! Solo necesitas ejecutar un comando como este, que escribe un NSUsreKeyEquivalent
con 0x1B
(ASCII ESC, \e
, \033
) como separador entre los títulos en la ruta del título:
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add $'\eShell\eNew Window\eMan Page' '@$m'
...o también puedes simplemente escribir Shell->New Window->Man Page
en el campo "Título del menú" en la configuración del sistema, lo cual hará esto por ti.
fuente: descompila AppKit y busca cadenas "titlepathbased"; llegué a -[NSMenuItem _fetchFreshUserKeyEquivalentInfo]
que menciona r13 = loc_7ff841d3cc10(rbx, @selector(componentsJoinedByString:), "\x1B");
. También se menciona en esta pregunta de la comunidad de Apple. Esto también responde tu pregunta.
Probado en Ventura 13.4 22F66.
RESPUESTA ORIGINAL:
Creo que estás usando la característica "NSUserKeyEquivalents" en AppKit, que Apple llama "Atajos de aplicación". Apple no te permite usar una ruta de menú allí, y cuando varios elementos comparten el mismo nombre, como en Terminal.app, suceden cosas extrañas. Los atajos pueden funcionar la primera vez, pero a partir de la segunda vez, AppKit invocará otro con el mismo nombre (lo que puedes notar al ver que el elemento de la barra de menú parpadea).
AppKit tiene una variable global llamada _hasTitlePathBasedUserKeyEquivalent
, lo que puede indicar que con algo de truco podamos hacer que haga lo que quieres. Hasta entonces, deberías revisar algunas herramientas de productividad de terceros que pueden hackear macOS o invocar el título del menú de forma indirecta.