2 votos

Detectar si se pulsa la tecla ctrl

En JavaScript para Automatización (JXA), podemos detectar si el ctrl se presiona la tecla con

ObjC.import("Cocoa")
$.NSEvent.modifierFlags & $.NSControlKeyMask

Si ctrl no se presiona, el retorno será 0 . Si es así, el valor será diferente.

Pero NSControlKeyMask está desaprobado . Encontré NSEventModifierFlagControl pero no puedo hacer que funcione.

¿Cuál es la forma actual de detectar si el ctrl se presiona la tecla?

0 votos

Que esté obsoleto no significa que no funcione. ¿Ha dejado de funcionar este código? Si no es así, no hay necesidad urgente de actualizarlo. Las funciones pueden estar obsoletas durante años antes de ser eliminadas. Cuando dices que no funciona ¿qué pasa? ¿Compila? Si es así, ¿cuál es el valor que devuelve el operador '&'? ¿Siempre devuelve 0?

0 votos

@ark Significa que siempre devuelve el mismo valor, pero ni siquiera estoy seguro de estar usándolo correctamente, de ahí la vaguedad. La urgencia de querer actualizar el código no influye. Hace ya más de dos años que está obsoleto, y sólo sabré si ha dejado de funcionar cuando actualice mi sistema (que lleva más de dos años de retraso). Posponer la actualización del código obsoleto es un accidente a punto de ocurrir. Prefiero tenerlo correcto ahora que tenerlo roto cuando realmente lo necesito.

0 votos

@user137369 Por favor, publica el código completo de cómo te inscribes y consigues el evento. Es difícil diagnosticar el problema sin ver tu código real.

3voto

Jose Chavez Puntos 645

Según su último comentario, afirma que el código que ha citado funciona en la práctica, y su único problema es que quiere deshacerse de la obsoleta NSControlKeyMask.

Simplemente sustituye esa palabra por NSEventModifierFlagControl y ya está.

Lo único que hizo Apple fue cambiar el nombre. En el reciente MacOS NSControlKeyMask es incluso definido como simplemente igual a NSEventModifierFlagControl. Ambos tienen el valor 1 << 18 (es decir, el 18º bit está puesto a 1, el resto es 0).

0 votos

No hay nada malo en el código presentado. Ese código está, como se ha dicho, funcionando. No hace nada con la condición para simplificar la pregunta, pero devuelve diferentes códigos, lo que demuestra que funciona . Lo que pido es el método que sustituya al obsoleto.

0 votos

Ahora te estás contradiciendo. Respondiste a MarkT diciendo que siempre devuelve el mismo valor - ahora dices que devuelve valores diferentes. Sin la información correcta, es difícil ayudarte

0 votos

He cambiado la respuesta para que ahora tenga la respuesta correcta de acuerdo con su última declaración de que su antiguo código está de hecho trabajando, devolviendo valores diferentes.

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