Arreglar error w/re a eventos de teclado en MouseBoxConsidere el siguiente código:
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key}, show( key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;Al pulsar un botón, como k , hace que la función adjunta se ejecute dos veces.Claramente, se puede producir una solución alternativa con el tiempo y demás, pero creo que incluso los desarrolladores de JMP considerarían desafortunadas tales soluciones alternativas basadas en el usuario.
¿Qué inspiró esta solicitud de lista de deseos?
¿Cuál es la mejora que le gustaría ver?
¿Por qué es importante esta idea?
Automatización y secuencias de comandosRe: Corregir error con eventos de teclado en MouseBoxWow, qué funcionalidad tan genial: establecer clave !
Gracias por mencionar...
Sin embargo, cuestión realmente extraña!
Sorprendentemente, la función no siempre se activa dos veces (ver a,b,r,t,z) y para Return (e Enter), se obtiene un End" adicional:
Jmp17 con teclado alemán:

Re: Corregir error con eventos de teclado en MouseBoxMe preguntaba si se debe a presionar la tecla y volver a soltarla.
Pero cuando mantiene presionadas las teclas, la función se activa una y otra vez.
El resultado es particularmente interesante al presionar regresar. Entonces es:

Re: Corregir error con eventos de teclado en MouseBoxMe preguntaba qué tiempo transcurre entre los dos activadores del comando, y al hacerlo, encontré una solución fácil:
solo haz el comando ligeramente más extenso que mostrar (clave), y solo se activa 1x 
La primera función se activa dos veces:

descomentar la segunda función (un poco más larga) resuelve el problema:

Names Default To Here( 1 );
time0 = 0;
doSomething = Function( {this, key},
time = HP Time();
Write("\!n v1: ",key," ", time);
);
doSomething2 = Function( {this, key},
time = HP Time();
dt = (time - time0)/1000000;
Write ( "\!n v2: ", key," ", dt);
time0 = time;
);
New Window( "SetKey Example",
H List box(mb = MouseBox( tb = Text Box( "Press a key." )), Button Box ("save", onSave()))
);
mb << setkey( Function( {this, key}, doSomething( this, key ) ) );
//mb << setkey( Function( {this, key}, doSomething2( this, key ) ) );
mb << setkeyenable( 1 );
mb << setfocus;
Re: Reparar error con eventos de teclado en MouseBox - Estado cambiado a: ReconocidoHola @ErraticAttack , y todos los que han comentado. Esto suena como un error. Estamos compartiendo con nuestro soporte técnico.
Re: Corregir error con eventos de teclado en MouseBoxDesafortunadamente, la documentación de Mouse Box no está del todo completa.Somos conscientes, y está en la lista para ser corregido.Mientras tanto, tenga en cuenta que el mensaje << Establecer clave está diseñado para responder a un valor de retorno "booleano" de la función adjunta.Si la función devuelve "verdadero" (como 1), le indica a Set Key que se procesó la pulsación de la tecla y no obtendrá la aparente segunda llamada de función.Si la función devuelve "falso" (como 0), obtiene el comportamiento ilustrado por el ejemplo de OP.Aquí hay una modificación del ejemplo OP que escribe una sola declaración en el registro para cada pulsación de tecla.
Names Default To Here( 1 );
New Window( "SetKey Example", mb = MouseBox( tb = Text Box( "Press a key." ) ) );
mb << setkey( Function( {this, key},
show( key );
1; // return "boolean" to indicate if the key press was processed.
) );
mb << setkeyenable( 1 );
mb << setfocus;Re: Corregir error con eventos de teclado en MouseBoxGracias @_jr , esto tiene mucho sentido, al igual que los eventos Qt.
Re: Corregir error con eventos de teclado en MouseBox - Estado cambiado a: Entregado