Risolto il problema con gli eventi della tastiera in MouseBoxConsidera il codice seguente:
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;Premendo un pulsante, ad esempio K , fa sì che la funzione associata venga eseguita due volte.Chiaramente si può produrre una soluzione alternativa con tempismo e simili, ma penso che anche gli sviluppatori di JMP considererebbero sfortunate tali soluzioni alternative basate sull'utente.
Cosa ha ispirato questa richiesta di lista dei desideri?
Qual è il miglioramento che vorresti vedere?
Perché questa idea è importante?
Automazione e scriptingRe: Fix bug w/re to Keyboard Events in MouseBoxWow, che bella funzionalità: setkey !
Grazie per aver menzionato...
Tuttavia, problema davvero strano!
sorprendentemente, la funzione non viene sempre attivata due volte (vedi a,b,r,t,z) e per Return (e Enter), si ottiene un ulteriore End":
Jmp17 con tastiera tedesca:

Re: Fix bug w/re to Keyboard Events in MouseBoxMi chiedevo se fosse dovuto alla pressione del tasto e al rilascio di nuovo.
Ma quando tieni premuti i tasti, la funzione viene attivata ancora e ancora.
Il risultato è particolarmente interessante quando si preme Invio. Allora è:

Re: Fix bug w/re to Keyboard Events in MouseBoxMi sono chiesto quale tempo ci vuole tra i due trigger del comando e, così facendo, ho trovato una soluzione semplice:
basta dare il comando leggermente più a lungo di show(key) - ed è appena attivato 1x 
La prima funzione viene attivata due volte:

decommentare la seconda funzione (leggermente più lunga) risolve il 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;
Ri: Fix Bug w/re to Keyboard Events in MouseBox - Stato cambiato in: RiconosciutoCIAO @ErraticAttack , e tutti coloro che hanno commentato. Sembra un bug. Stiamo condividendo con il nostro supporto tecnico.
Re: Fix bug w/re to Keyboard Events in MouseBoxSfortunatamente la documentazione di Mouse Box non è del tutto completa.Ne siamo consapevoli, ed è sulla lista da correggere.Nel frattempo, tieni presente che il messaggio << Set Key è progettato per rispondere a un valore di ritorno "booleano" dalla funzione inclusa.Se la funzione restituisce "true" (come 1), indica a Set Key che la pressione del tasto è stata elaborata e non otterrai l'apparente seconda chiamata di funzione.Se la funzione restituisce "false" (come 0), si ottiene il comportamento illustrato dall'esempio OP.Ecco una modifica dell'esempio OP che scrive una singola istruzione nel registro per ogni pressione di un tasto.
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: Fix bug w/re to Keyboard Events in MouseBoxGrazie @_jr , questo ha perfettamente senso, proprio come gli eventi Qt.
Re: Fix Bug w/re to Keyboard Events in MouseBox - Stato cambiato in: Consegnato