5 votos

Los enlaces de teclas de TextEdit modificados en DefaultKeyBinding.dict han dejado de funcionar

He personalizado los enlaces de edición de texto en ~/Library/KeyBindings/DefaultKeyBinding.dict pero todos ellos dejaron de funcionar en TextEdit.app cuando actualicé a Lion. Siguen funcionando bien en otras aplicaciones Cocoa como Safari.

Los enlaces por defecto del sistema como ^F para moveForward: trabajar como siempre.

¿Alguien más que utilice DefaultKeyBinding.dict ha notado esto? ¿Hay alguna forma de arreglarlo o alguna otra forma de personalizar los enlaces de teclas en TextEdit?

2 votos

Las combinaciones de teclas personalizadas me funcionan normalmente en TextEdit. ¿Has probado a sustituir tu DefaultKeyBinding.dict por algo como {"a"=(insertText:,"test");} ?

0 votos

@LauriRanta gracias; saber que era el único con el problema hizo que por fin lo investigara bien.

9voto

Gareth Simpson Puntos 5905

El problema era que había movido el archivo DefaultKeyBinding.dict a otro lugar por motivos de control de versiones y había hecho un enlace simbólico a él.

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

Así que, oops, lección aprendida. No hagas un enlace simbólico con los archivos de configuración de tu sistema.

1 votos

Gracias a fcuk por su respuesta. Estaba reinstalando completamente mi cuenta de usuario porque pensaba que Pages/Keynote tenían alguna configuración de usuario oculta que los mantenía bloqueados en una versión más antigua de mi DefaultKeyBinding.dict . Al igual que usted, yo había controlado la versión después de ese cambio. Todavía tengo que controlar la versión de la configuración de mi cuenta de usuario, que están repartidos en directorios y archivos a través de mi ~ /home. Parecía que los enlaces simbólicos a los archivos en un userettings proyecto eran la respuesta. En su lugar, controlaré las versiones de toda mi casa, .gitignore todos los archivos por defecto, y la lista blanca de los archivos que quiero.

2voto

RonK Puntos 101

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

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 utilizarlo sólo hay que sustituir FILE_PATH_IN_SCM=${BASE_DIR}/.configurations/DefaultKeyBinding.dict con la ubicación del archivo en su repositorio Git.

Si nunca creaste un git hook antes (este fue mi primero) - necesitas colocar este código:

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

No te olvides de correr chmod +x <your-git-repo>/.git/hooks/pre-commit para que sea ejecutable.

Después, 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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X