Cree/edite rápidamente atajos de teclado para los elementos del menú

Actualmente, si quiero vincular un nuevo método abreviado de teclado a un elemento del menú, necesito pasar por un proceso algo tedioso de muchos pasos:

  1. Abra Preferencias del sistema, luego Panel de teclado, luego Accesos directos de aplicaciones
  2. Haga clic en el +botón
  3. Encuentra la aplicación en el menú.
  4. Olvidé el nombre exacto del elemento del menú que quiero enlazar
  5. Regrese a la otra aplicación, busque el elemento del menú, recuerde exactamente cómo se llama
  6. Regrese a Preferencias del sistema y escríbalo en el campo
  7. Escriba el acceso directo deseado y haga clic en "Agregar"
  8. Al probarlo, descubra que de alguna manera lo escribí mal y dedique un par de minutos a solucionar los pasos 5 a 7

Para algo tan simple como vincular un atajo de teclado a un elemento del menú, creo que debería haber una manera muy fácil de lograrlo en unos dos segundos.

¿Hay algún tipo de secuencia de comandos o aplicación que pueda usar para administrar fácilmente los atajos de teclado de una aplicación?

Sería igualmente feliz con algo parecido a cualquiera de estos:

  • Una pequeña aplicación de script/fondo a la que puedo llamar, que me pide que seleccione un elemento del menú y escriba el atajo deseado
  • Un programa algo más grande que enumerará y me permitirá editar cada elemento del menú y/o combinación de teclas dentro de una aplicación determinada
Algunas aplicaciones lo hacen internamente, generalmente las que tienen medio millón de opciones, Photoshop y Cubase son dos que me vienen a la mente de inmediato. Por lo demás, está tu método de ejemplo.
Me imagino que esto no sería terriblemente difícil de programar: estas configuraciones parecen estar almacenadas en claves NSUserKeyEquivalents en las listas de preferencias de cada aplicación (o la de Apple Global Domain, para accesos directos establecidos globalmente). Puede ver fácilmente todos los enlaces existentes con defaults find NSUserKeyEquivalents, y escribirlos no es muy diferente.
Acabo de probar ese comando: ni siquiera cubre los cambios en las preferencias del sistema de mi teclado, deja pasar la miríada que tengo en pshop y cubase.
@Tetsujin ¡Bueno, por supuesto, no cubre los cambios realizados de manera patentada! Solo estoy hablando de la funcionalidad nativa para esto; esos son un poco irrelevantes. Aunque es extraño que no incluya todos sus enlaces en las Preferencias del sistema... funciona bien para mí. ¿Lo estás ejecutando con los permisos adecuados?
Tenía una lista de exactamente 4 elementos usando ese comando [todos 'verdaderos']. Mi lista de preferencias reales está en las docenas, excluyendo aquellas aplicaciones particulares con funcionalidad integrada, que se muestran solo en esas aplicaciones.
@Tetsujin Eso es realmente extraño, ¡ninguno de ellos debería ser booleano! Esto es lo que me devuelve: cl.ly/k24a
por 'verdadero' quise decir que eran valores no estándar reconocidos reales, no booleanos. Lo siento.
Oh por favor. Necesito este. Yo sufro de esto todo el tiempo. Como nota al margen, BetterTouchTool le permite una mayor flexibilidad, ya que puede usar comodines, seleccionar el enésimo elemento del menú y establecer el mismo acceso directo a varios elementos del menú (en caso de que cambien según el estado), pero desafortunadamente el proceso de agregar los accesos directos es No es mucho más corto.

Respuestas (1)

Aquí está el AppleScript para ello:

on run

tell application "System Events"
    set theActiveApp to name of 1st process whose frontmost is true
end tell

set theApplicationID to id of application theActiveApp
set theMenuItem to text returned of (display dialog "Enter menu item name" default answer "Example: New Window")
set theShortcut to text returned of (display dialog "Enter shortcut (use these: ⌘=@,  ⌥=~,  ⇧=$,  ^=^)" default answer "Example: @$1")

do shell script "defaults write " & quoted form of theApplicationID & " NSUserKeyEquivalents -dict-add " & quoted form of (quote & theMenuItem & quote) & " " & quoted form of (quote & theShortcut & quote)

end run

Por lo tanto, obtiene el identificador de la aplicación actual y luego agrega el nombre del elemento de menú y el acceso directo según sea necesario. ¡Incluso puede hacer clic en la barra de menú de la aplicación sin que desaparezca la ventana emergente!

Sin embargo, tenga en cuenta que esto es simplemente una versión rudimentaria de lo que quería; solo agrega entradas. Si comete un error, puede corregirlo manualmente (y es posible que no aparezca en las Preferencias del sistema). Además, por último, no parecía funcionar en Automator o Script Editor, pero funcionó bien para Finder. En cuanto a los dos anteriores, agrega las entradas, pero por alguna razón no aparecen en las Preferencias del sistema y no se pueden usar, incluso después de reiniciar la aplicación. No sé por qué pero bueno, al menos es algo ;)