Las combinaciones de teclas TextEdit modificadas en DefaultKeyBinding.dict dejaron de funcionar

Tengo enlaces de edición de texto personalizados en ~/Library/KeyBindings/DefaultKeyBinding.dict pero todos dejaron de funcionar en TextEdit.app cuando actualicé a Lion. Todavía funcionan bien en otras aplicaciones de Cocoa como Safari.

Los enlaces predeterminados del sistema como ^Fpara moveForward:trabajar como de costumbre.

¿Alguien más que usa DefaultKeyBinding.dict ha notado esto? ¿Hay alguna forma de solucionarlo o de personalizar las combinaciones de teclas en TextEdit?

Las combinaciones de teclas personalizadas funcionan normalmente para mí en TextEdit. ¿Ha intentado reemplazar su DefaultKeyBinding.dict con algo como {"a"=(insertText:,"test");}?
@LauriRanta gracias; saber que yo era el único con el problema me hizo finalmente investigarlo adecuadamente.

Respuestas (2)

El problema era que había movido el archivo DefaultKeyBinding.dict real a otro lugar para fines de control de versiones y lo había enlazado.

La mayoría de las aplicaciones estaban cargando el archivo a través del enlace simbólico, pero TextEdit (y, resulta que, un par de otras aplicaciones que pensé que simplemente no admitían combinaciones de teclas) deben hacer algo diferente y no lo vieron.

Entonces, ups, lección aprendida. No haga enlaces simbólicos a los archivos de configuración de su sistema.

Gracias fcuk por tu respuesta. Estaba reinstalando por completo mi cuenta de usuario porque pensé que Pages/Keynote tenía alguna configuración de usuario oculta que los mantenía bloqueados en una versión anterior de mi DefaultKeyBinding.dict . Al igual que tú, tuve la versión controlada después de ese cambio. Todavía necesito controlar la versión de la configuración de mi cuenta de usuario, que se distribuye en directorios y archivos en mi ~/home. Parecía que los enlaces simbólicos a archivos en un proyecto de configuración de usuario eran la respuesta. En su lugar, controlaré la versión de toda mi casa, .gitignoraré todos los archivos de forma predeterminada y agregaré a la lista blanca los archivos que quiero.

Yo mismo tuve el mismo problema con el enlace simbólico de este archivo, pero no quería ceder a esta limitación, así que creé un git pre-commithook para actualizar ~/Library/KeyBindings/DefaultKeyBinding.dict cada vez que se confirmara mi versión.

Aquí está el código (para 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 usarlo, todo lo que necesita hacer es reemplazarlo FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dictcon la ubicación del archivo en su Repositorio Git.

Si nunca antes creó un git hook (este fue el primero), debe colocar este código en:

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

No olvide ejecutar chmod +x <your-git-repo>/.git/hooks/pre-commitpara que sea ejecutable.

Luego, cada confirmación que involucre este archivo mostrará algo como:

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