Page 1 of 1

saisie valeurs au clavier

Posted: 05 Oct 2023, 13:15
by joffo78
Bonjour .
J'aimerais savoir si il est possible de créer un script ou un patch ou une procédure
qui permet de saisir des valeurs dans un tableau à partir d'une syntaxe comme
1+23+24
ou 1>24 ( par exemple pour sélectionner 24 valeurs d'un coup)
est il également possible de pouvoir saisir cette valeur directement à partir du module keyb
plutôt que d'avoir à double cliquer sur dans une fenêtre ?
Merci .
JF

Re: saisie valeurs au clavier

Posted: 08 Oct 2023, 16:37
by oli_lab
C possible,
il faudra définir une syntaxe plus précisément :

pense à une machine à calculer :

il faut que certaines touches délimitent ce qui correspond à l'opérande de ce qui correspond à l'opérateur

par exemple tant que tu tapes des caractères correspondant aux chiffres, ils s'empilent dans un registre (le précédent se multiplie par 10 et s’additionne au chiffre courant)
l'appuie sur + rend le nombre positif, - négatif, et additionne le nombre courant avec le résultat précédent et remet à 0 le registre d'entrée

= fait apparaitre le résultat final

il faudra aussi trier les touches (de 0 à 9, +,-,=....)

un script semble le bon candidat

bon courage

Olivar

Re: saisie valeurs au clavier

Posted: 09 Oct 2023, 11:39
by joffo78
Oui c'est ce que je me dis . Le problème c'est que je ne sais pas scripter et je doute que ce soit un exemple idéal pour débuter.

Re: saisie valeurs au clavier

Posted: 09 Oct 2023, 23:38
by oli_lab
c'est un bon début :

//////////////////////////
//une calculette
//entrer nombre puis appui sur touche +
//appui sur touche enter remet à 0
/////////////////////////
var key, pressed: Tparameter;
var result: Tparameter;
var inval, outval : integer;
//////////////////////////////////////
// Init is started on script compilation to create the in/outs
PROCEDURE INIT;
BEGIN
key:= CreateParam('key',PtDataField,pioInput);
pressed:= CreateParam('pressed',PtDataField,pioInput);
result:= CreateParam('result',PtDataField,pioOutput);
inval := 0;
outval := 0;
END;
//////////////////////////////////////
// Callback procedure
// inputs have an id (n) from first (top) to n last, the callback proc
// scans the inputs to detect changes,
// and notes the index if detecting one.
// that will allows to launchs different process depending on wich kind of
// inputs changed

Procedure Callback(N:integer);
BEGIN
if ((n=1) and (pressed.asInteger = 1) and (key.asInteger > 47) and (key.asInteger < 58))
then begin
inval := (key.asInteger - 48) + 10 * inval;
//result.asInteger(inval);
end;
if ((n=1) and (pressed.asInteger = 1) and (key.asInteger = 43) )//add
then begin
outval := outval + inval;
result.asInteger(outval);
inval := 0;
end;
if ((n=1) and (pressed.asInteger = 1) and (key.asInteger = 13) )//add
then begin
result.asInteger(outval);
inval := 0;
outval := 0;
end;
END;

Re: saisie valeurs au clavier

Posted: 10 Oct 2023, 11:57
by joffo78
Whouaou. C'est hyper détaillé. C'est pile ce qu'il me fallait.
Merci infiniment je vais étudier tout ça !

Re: saisie valeurs au clavier

Posted: 15 Oct 2023, 17:14
by joffo78
Salut .
Testé rapidement sous mac, il semblerait que le module keyb ne fournisse pas d'information de numéro de touche