Avatar billede xited Praktikant
23. januar 2012 - 19:56 Der er 5 kommentarer og
1 løsning

Output som tastatur (debian)

Kan jeg sende et tastetryk (eller sende en streng, som computeren opfatter som adskillige tastetryk), på en eller anden måde, fra et C-program?

Jeg har lavet noget C-kode, der læser vægten fra en Dymo M10, og vil gerne indsætte værdien i et input-felt i en åben browser på computeren (hvor input-feltet har fokus)

Hvis der ikke er direkte understøttelse for det, overvejer jeg at kalde xdotool.
Avatar billede arne_v Ekspert
23. januar 2012 - 20:03 #1
Var det ikke 100 gange bedre at lade dit C program lave det HTTP kald som browseren laver?
Avatar billede xited Praktikant
23. januar 2012 - 21:22 #2
Det består af flere trin.

Jeg er ved at automatisere så meget af et pakkerum, som jeg kan komme til.

* Først scannes en faktura, så brugeren kan se ordren, og hvilke varer der skal pakkes. (stregkodelæseren sender ordrenummeret til et inputfelt i browseren, og trykker enter)

* Derefter skal brugeren pakke ordren, og placere den på en USB-vægt, og trykke på en knap (som jeg regner med at lave med en teensy)

* Dét tryk skal sende et hotkey-tryk, som mit script kan reagere på, og indsætte vægten, i et nyt input-felt i browseren.

* PHP-koden genererer en webpack-label (eller en adresse-etiket, hvis vægter en under 1kg), og gemmer den som pdf, og sender den til en labelprinter i pakkerummet.

* Brugeren sætter labelen på brevet/pakken, og smider den i "udbakken"

...og der er sådan set (nogenlunde) styr på alle punkterne, bortset fra det dette spørgsmål omhandler.

Det virker dog ikke til at xdotool er den værste løsning.

        sprintf(buf, "/usr/bin/xdotool type '%g'", str);
        system(buf);
        system("/usr/bin/xdotool key return");
Avatar billede segmose Nybegynder
24. januar 2012 - 09:03 #3
Nu er det meget meget lang tid siden jeg programmerede i X sidst, men jeg mener at kunne huske at der er X kald til at traverserer alle vindue og frames, selv i fremmede programmer.
Når man så har vinduet er der et X kald til at sende et event (med tastetryk) til det vindue/frame/input felt, hmm måske kan man send eventet til hoved vinduet hvis det rigtige felt er valgt ...
Avatar billede xited Praktikant
24. januar 2012 - 13:37 #4
Det tror jeg faktisk også xdotool kan klare, så jeg holder mig vist bare til den.
Troede blot at der fandtes noget "native"

Smid gerne et svar.
Avatar billede segmose Nybegynder
24. januar 2012 - 16:38 #5
OK, du kan være nød til at ændre tilladelserne i din X for at du må give events til fremmede vinduer, men det husker jeg ikke lige hvordan man gør men du kan jo eksperimenterer lidt med en shell og xdotool.
Avatar billede xited Praktikant
25. marts 2012 - 20:30 #6
Jeg endte med at bruge xdotool.
Men tak for hjælpen.
Svar?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester