Los atajos de teclado de los servicios son un poco diferentes de los atajos específicos de las aplicaciones o de todo el sistema, aunque pueden gestionarse utilizando defaults read
y defaults write
.
La forma más fácil que he encontrado para resolver este tipo de cosas es:
defaults read > /tmp/a
Cambie el atajo de teclado manualmente usando las Preferencias del Sistema
defaults read > /tmp/b
diff /tmp/[ab]
Para el caso específico de los atajos de teclado para Servicios, en OS-X 10.8 los dominios importantes son "com.apple.ServicesMenu.Services" y "pbs". Tienes que mirar el com.apple.ServicesMenu.Services domain para obtener la información necesaria para crear una entrada en el dominio pbs.
Por ejemplo:
El CFVendedServices
llave de com.apple.ServicesMenu.Services
para "Unarchive to Current Folder es:
{
NSBundleIdentifier = "cx.c3.theunarchiver";
NSBundlePath = "/opt/homebrew-cask/Caskroom/the-unarchiver/3.9.1/The Unarchiver.app";
NSKeyEquivalent = { };
NSMenuItem = {
default = "The Unarchiver/Unarchive To Current Folder";
};
NSMessage = unarchiveToCurrentFolderWithPasteboard;
NSPortName = "The Unarchiver";
NSSendTypes = (
NSFilenamesPboardType
);
NSUUID = <be1910e8 cb1a3475 90854bc5 09f0c0ab>;
},
Para crear un atajo de teclado para ello, la tecla pbs NSServices se construye a partir del NSBundleIdentifier, NSMenuItem y NSMessage. Ejemplo:
defaults read pbs
{
"cx.c3.theunarchiver - The Unarchiver/Unarchive To Current Folder - unarchiveToCurrentFolderWithPasteboard" = {
"enabled_context_menu" = 1;
"enabled_services_menu" = 1;
"key_equivalent" = "@~^u";
};
"org.vim.MacVim - MacVim/New MacVim Buffer Here - newFileHere" = {
"key_equivalent" = "@~^v";
};
};
}
Desafortunadamente, el dominio pbs está construido como diccionarios anidados que no pueden ser manejados por defaults write
como estos casos más simples para otros atajos de teclado. Necesitarás leer toda la tecla NSServicesStatus, insertar tu nueva entrada y volver a escribirla:
defaults write pbs NSServicesStatus '{
"com.cocoatech.PathFinder - Path Finder/Show Info - getInfoInPathFinderService" = {
"key_equivalent" = "@~^$i";
};
"cx.c3.theunarchiver - The Unarchiver/Unarchive To Current Folder - unarchiveToCurrentFolderWithPasteboard" = {
"enabled_context_menu" = 1;
"enabled_services_menu" = 1;
"key_equivalent" = "@~^u";
};
"org.vim.MacVim - MacVim/New MacVim Buffer Here - newFileHere" = {
"key_equivalent" = "@~^v";
};
}'
También puede ser necesario forzar a las pbs a limpiar su caché:
/System/Library/CoreServices/pbs -flush