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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.