Recientemente estoy aprendiendo electron. He encontrado un problema que quiero escuchar ESC en ambos procesos,
En el proceso principal,
menu.append(new MenuItem({ label: "Hide on Escape", visible: false, accelerator: "Escape", click: (item, window, event) => { if (window.isVisible()) { window.hide(); } } }))En proceso de renderizado,
// on Key press Handler const onKeyDownHandler = (event: React.KeyboardEvent) => { if (isContentEditable && event.key === "Enter") { applyContentEditable(); } else if (event.key === "Enter") { onSelected && onSelected(pair); } else if (event.key === "Delete") { onDelete && onDelete(pair); } else if (event.key === "F2") { setIsContentEditable(true); } else if (event.key === "Escape") { resetContentEditable(); // Stop Renaming and get back to default } }Pero esto no funcionó, la ventana se oculta antes del proceso de renderizado. ¿Cómo puedo dejar de ocultar cuando el proceso de procesamiento lo escucha?
Hay un método event.stopPropagation() que evita más propagación/llamadas en el mismo evento Docs
Y hay event.preventDefault() que se puede usar para detener el manejo predeterminado de Docs
Todavía no entiendo completamente su configuración y lo que está tratando de lograr.
Otra solución es dejar de escuchar la tecla de escape en el proceso principal. Solo escuche en el proceso de renderizado y luego pase el evento manualmente al proceso principal en caso de que también desee realizar alguna acción allí (o al revés, según lo que tenga más sentido para usted).
Para esta aprobación, probablemente esté mirando el módulo electron ipcMain https://www.electronjs.org/docs/latest/api/ipc-main