Issue #2758💬 RespondidoAbierto el 7 de mayo de 2020por mattdeighReacciones 0

Keymaster no desvincula las pulsaciones de teclas.

Respuesta rápidapor artf

me pregunto si el comando de desvincular en Keymaster estaba pensado para manejar una tecla individual en lugar de varias en caso de retroceso, pero copiar/pegar/deshacer/rehacer funciona correctamente. Bueno, funciona con otros keymaps, así que diría que maneja esa opción, pero no tengo ni idea de qué está mal con 'r...

Lee la respuesta completa abajo ↓

Pregunta

Esto es reproducible en el sitio de demostración que ejecuta '''0.16.12'''.

En la consola, ejecuta ''editor. Keymaps.removeAll()''' e intenta eliminar un componente. Elimina el componente, y no creo que deba hacerlo. Parece que los otros mapas de teclas se desvinculan bien.

No estoy seguro de si esto es un problema de grapesjs o keymaster. Me di cuenta de esto cuando estaba añadiendo un keymap personalizado para las teclas de flecha y no se limpiaba cuando llamaban a '''editor.destroy()'.

Me di cuenta de que podía desasignar el comando de borrar así:

editor. Keymaps.keymaster.unbind('retroceso');
editor. Keymaps.keymaster.unbind('delete');

Me pregunto si el comando de desvincular en Keymaster estaba pensado para manejar una tecla individual en lugar de varias en el caso de retroceso, pero que copiar/pegar/deshacer/rehacer funcionan correctamente.

Parece que una solución sencilla podría ser separar la cadena de ''keymap.keys' aquí y desvincular las teclas individualmente. También he notado que Keymaster no se ha actualizado en un tiempo, así que quizá valga la pena cambiarlo. Estoy dispuesto a abrir un PR por esto.

Respuestas (3)

artf15 de mayo de 2020

me pregunto si el comando de desvincular en Keymaster estaba pensado para manejar una tecla individual en lugar de varias en caso de retroceso, pero copiar/pegar/deshacer/rehacer funciona correctamente.

Bueno, funciona con otros keymaps, así que diría que maneja esa opción, pero no tengo ni idea de qué está mal con 'retroceder, eliminar' (con 'eliminar, retroceso' incluso aparece un error ???)

Parece que una solución sencilla podría ser partir la cadena keymap.keys aquí y desvincular las teclas individualmente

De acuerdo, pero ¿qué pasa con tu caso de 'estaba añadiendo un mapa de teclas personalizado para las teclas de flecha'? ¿Funciona con el split? La publicidad es muy bienvenida :)

También he notado que Keymaster no se ha actualizado en un tiempo, así que quizá valga la pena cambiarlo

Sí, yo también lo he notado, pero probablemente eso requiera algo de trabajo. ¿Ya conoces alguna buena alternativa?

mattdeigh15 de mayo de 2020

Hombre... He revisado Keymaster y esa función de desvincular maneja varias teclas, así que el problema debe estar en otro sitio. No noté nada llamativo cuando miré. No aparecen errores cuando intento desvincular la tecla.

Estoy usando GrapesJS en una app de una sola página, así que necesito destruir GrapesJS y volver a encenderlo sin que el navegador se recargue. Así fue como encontré el error al principio. Cuando destruyes, reinicias y usas las teclas de borrar o de retroceder, la llamada de regreso se llama al objeto editor original y no al nuevo, que genera un error.

Estoy ejecutando esto antes de llamar a '''editor.destroy()''' y parece funcionar bien. No tengo ni idea de por qué Keymaster no funciona. '''javascript teclas const = 'arriba, abajo, izquierda, derecha, shift+arriba, shift+abajo, shift+izquierda, shift+derecha, shift + derecha, retroceso'; keys.split(/, ?/).forEach((key) => { this.editor.Keymaps.keymaster.unbind(key); });


No he usado ningún plugin de mapeo de teclas antes, pero estaría más que contento abriendo un PR. ¿Te va bien el método de separar cuerdas? Parece que Keymaster hace lo mismo que yo estaba haciendo.
artf15 de mayo de 2020

¿Te va bien el método de separar las cuerdas?

Claro, veamos si funciona

Preguntas y respuestas relacionadas

Continúa investigando con debates sobre temas similares.

Plugins de pago que cumplen con este problema

Seleccionado por temas clave y relevancia de etiquetas para ayudarte a enviar más rápido.

Ver todos los plugins

Cargando recomendaciones de plugins de pago...

Opción gratuita

Consulta los plugins de código abierto de GrapesJS en GitHub O haz una búsqueda rápida en nuestro catálogo gratuito.

Explora plugins gratuitos →
Opción premium

Los plugins premium incluyen soporte, actualizaciones regulares y funciones listas para producción — ahorrando días de trabajo de integración.

Explora plugins premium →

Explorar categorías de plugins

Ve directamente a las páginas de categorías de plugins en el marketplace.