Ligações de teclas TextEdit modificadas em DefaultKeyBinding.dict parou de funcionar

5

Eu personalizei as ligações de edição de texto em ~ / Library / KeyBindings / DefaultKeyBinding.dict, mas elas pararam de funcionar no TextEdit.app quando atualizei para o Lion. Eles ainda funcionam bem em outros aplicativos do Cocoa, como o Safari.

As ligações padrão do sistema como ^ F para moveForward: trabalhar como de costume.

Alguém mais que usa DefaultKeyBinding.dict percebeu isso? Existe uma maneira de consertá-lo ou de qualquer outra maneira de personalizar as combinações de teclas no TextEdit?

mckeed
fonte
2
Os atalhos de teclado personalizados funcionam normalmente para mim no TextEdit. Você já tentou substituir seu DefaultKeyBinding.dict por algo como {"a"=(insertText:,"test");}?
Lri
@LauriRanta obrigado; sabendo que eu era o único com o problema, consegui finalmente investigá-lo apropriadamente.
mckeed

Respostas:

8

O problema era que eu tinha movido o arquivo DefaultKeyBinding.dict em algum outro lugar para propósitos de controle de versão e linkado simbolicamente a ele.

A maioria dos aplicativos estava carregando o arquivo através do link simbólico, mas o TextEdit (e, na verdade, alguns outros aplicativos que eu achava que simplesmente não suportavam ligações de teclas) devem fazer algo diferente e não o veriam.

Então, oops, lição aprendida. Não crie links simbólicos para os arquivos de configuração do sistema.

mckeed
fonte
Obrigado fcuk pela sua resposta. Eu estava completamente reinstalando minha conta de usuário porque eu pensei que o Pages / Keynote tinha alguma configuração de usuário oculto que os mantinha bloqueados em uma versão mais antiga do meu DefaultKeyBinding.dict . Como você eu tinha versão controlada depois dessa mudança. Eu ainda preciso de controle de versão minhas configurações de conta de usuário, que estão espalhados por diretórios e arquivos em todo o meu ~ /casa. Parecia como links simbólicos para arquivos em um userettings projeto foram a resposta. Em vez disso, vou controlar a versão da minha casa inteira, .gitignore todos os arquivos por padrão e coloque na lista de permissões os arquivos desejados.
Riaz Rizvi
1

Eu mesmo tive o mesmo problema com o symlinking deste arquivo, mas eu não queria ceder a esta limitação, então eu criei um git pre-commit gancho para atualizar ~ / Library / KeyBindings / DefaultKeyBinding.dict sempre que minha versão foi confirmada.

Aqui está o código (para o Git):

#!/bin/bash


if [[ $(git diff --cached --name-only | grep '.configurations/DefaultKeyBinding.dict' | wc -l) -eq 1 ]]; 

then
   FILE_PATH_IN_LIBRARY=~/Library/KeyBindings/DefaultKeyBinding.dict
   BASE_DIR=$(git rev-parse --show-toplevel)
   FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict

   NORMAL=$(tput sgr0)
   BRIGHT=$(tput bold)
   GREEN=$(tput setaf 2)

   printf "${BRIGHT}${GREEN}The file <%s> was modified, updating %s${NORMAL}\n" $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY

   cp $FILE_PATH_IN_SCM $FILE_PATH_IN_LIBRARY
fi

Para usar tudo o que você precisa fazer é substituir FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict com a localização do arquivo no seu repositório Git.

Se você nunca criou um git hook antes (este foi o meu primeiro) - você precisa colocar este código em:

<your-git-repo>/.git/hooks/pre-commit

Não se esqueça de correr chmod +x <your-git-repo>/.git/hooks/pre-commit para torná-lo executável.

Depois todo commit envolvendo esse arquivo mostrará algo como:

The file </Users/myuser/.scripts/.configurations/DefaultKeyBinding.dict> was modified, updating /Users/myuser/Library/KeyBindings/DefaultKeyBinding.dict
RonK
fonte