30 berichten aan het bekijken - 1 tot 30 (van in totaal 30)
  • Q:

    Bijdrager
    Heedless

    Typen via code?

    Ik wil via een scriptje mijn mac laten denken dat je een toets in hebt gedrukt. Niet om een tekstveld ofzo in te vullen, maar een ECHTE toetsaanslag zoals wanneer je een knop indrukt.

    Voorbeeld:
    Je start de app met de code en die app wacht 10 seconden voordat hij de code uitvoert.
    Je houd de apple toets ingedrukt en op het moment dat de code begint en hij de computer laat denken dat je op de F toets gedrukt hebt bijv, dan denkt hij dus dat je apple+f ingedrukt hebt en zal je een zoekvenster krijgen.

    Ik wil dus via code de functie van het toetsenbord aanroepen.

    Weet iemand of dat kan? En zo ja, hoe?


    Bijdrager
    Turbanus

    Dat zal er mischien wel zijn voor mensen die maar 1 vinger hebben of het toetsenbord met een potlood vanuit hun mond bedienen.


    Bijdrager
    imathijs
    ”Turbanus”

    Dat zal er mischien wel zijn voor mensen die maar 1 vinger hebben of het toetsenbord met een potlood vanuit hun mond bedienen.

    Je weet niet hoelang Heedless erover heeft gedaan om de tekst te schrijven :)


    Bijdrager
    Heedless
    ”Turbanus”

    Dat zal er mischien wel zijn voor mensen die maar 1 vinger hebben of het toetsenbord met een potlood vanuit hun mond bedienen.

    Wat is dan nou voor debiele reactie?
    Het is een VOORBEELD. Die geef je wel vaker als het lastig is om uit te leggen wat je precies met de code wil doen. Dan verzin je iets makkelijks waarmee je het goed uit kan leggen.

    Het is wel fijn als je even on topic kan blijven. Kan je niet helpen? Reageer dan niet.
    Bedankt


    Bijdrager
    Nikita

    Ik vind de gedachtengang van Turbanus helemaal zo gek nog niet hoor. Doet een beetje denken aan plaktoetsen, maar dan voor de gewone toetsen i.p.v. de functietoetsen dus.

    Verder vind ik het een beetje wazig verhaal. Wil je voor elke toets apart een script maken dan? Hoop werk…


    Bijdrager
    Heedless
    ”Nikita”

    Ik vind de gedachtengang van Turbanus helemaal zo gek nog niet hoor. Doet een beetje denken aan plaktoetsen, maar dan voor de gewone toetsen i.p.v. de functietoetsen dus.

    Verder vind ik het een beetje wazig verhaal. Wil je voor elke toets apart een script maken dan? Hoop werk…

    Nogmaals, het is een VOORBEELD om duidelijk te maken wat voor code ik zoek.

    Ik wil gewoon een code die de computer laat denken dat er een toets in is gedrukt


    Bijdrager
    Nikita

    Da’s dus een script… Moet mogelijk zijn via Applescript of Automator of zo… Maar daar heb ik verder geen verstand van. Daarbij lijkt het me een godsonmogelijke kutklus om voor elke letter apart een script te schrijven, want daar komt het dan wel op neer.

    In elk geval, veel plezier ermee :P


    Bijdrager
    Heedless
    ”Nikita”

    Da’s dus een script… Moet mogelijk zijn via Applescript of Automator of zo… Maar daar heb ik verder geen verstand van. Daarbij lijkt het me een godsonmogelijke kutklus om voor elke letter apart een script te schrijven, want daar komt het dan wel op neer.

    In elk geval, veel plezier ermee :P

    Lees nou eens goed…

    Dit topic staat in Cocoa en Carbon. Dan ben ik dus niet op zoek naar een applescriptje. Dit heb je inderdaad zo gedaan in applescript maar ik zoek een Cocoa code hiervoor.

    En een godsonmogelijke kutklus? Nogmaals, wat ik zei is een voorbeeld. Je hebt geen flauw idee wat ik er mee wil gaan doen. Misschien heb ik maar twee toetsen nodig…


    Moderator
    Night

    Wil je voor elke toets apart een script maken dan? Hoop werk…

    Wat dacht je van “PRESS ANY KEY”

    En ga nou niet vragen waar de ANY key zit, hè?

    :P


    Bijdrager
    Heedless
    ”Night”

    Wil je voor elke toets apart een script maken dan? Hoop werk…

    Wat dacht je van “PRESS ANY KEY”

    En ga nou niet vragen waar de ANY key zit, hè?

    :P

    Geen achterhaale grapjes maar ontopic aub


    Bijdrager
    Turbanus

    Zeg Headless (inkoppertje omdat jij me debiel noemt) Ik heb zelf een gehandicapte in een rolstoel gezien die een computer met een potlood vanuit de mond bediende. Ik raad je aan om in het vervolg hier een wat mildere toon aan te slaan, anders lijkt het me verstandiger dat je naar tweakers verhuist.


    Bijdrager
    Nikita
    ”Heedless”

    Dit topic staat in Cocoa en Carbon. Dan ben ik dus niet op zoek naar een applescriptje. Dit heb je inderdaad zo gedaan in applescript maar ik zoek een Cocoa code hiervoor.

    En een godsonmogelijke kutklus? Nogmaals, wat ik zei is een voorbeeld. Je hebt geen flauw idee wat ik er mee wil gaan doen. Misschien heb ik maar twee toetsen nodig…

    Dus je gaat het jezelf nog moeilijker maken door in andere taal te willen programmeren? Daarbij, is er een apart subforum voor Applescripts? Nee, dus Applescripts zou toch ook nog zo kunnen.

    Verder sluit ik me aan bij Turbanus; als je geholpen wil worden moet je vooral zo’n vijandige toon aanslaan… :roll:


    Bijdrager
    Heedless

    En nu ben ik vijandig?

    Ik wil gewoon weten of iemand mij kan vertellen hoe ik een keystroke kan faken of waar ik daar meer info over zou kunnen vinden. Vervolgens komen er allemaal onzin reacties (en Turbanus, ‘debiel’ in deze context is doodnormaal taalgebruik, dat jij een gehandicapte die met een potlood typt blijkbaar debiel vind lijkt me erger)

    Ik denk niet dat ik het mezelf moeilijker maak omdat ik maar om 1 regel code vraag, namelijk degene waarmee je een toetsaanslag kan oproepen.

    Ik vind het gewoon erg vervelend dat ik een vraag stel en dat er eigenlijk alleen maar reacties zijn met flauwe opmerkingen.

    Als je geen antwoord hebt en me ook niet door kan verwijzen naar een andere site o.i.d. hoef je niet te reageren. Zo blijft het forum schoon en overzichtelijk en het bespaart iedereen een hoop frustratie.

    Mocht ik mensen boos hebben gemaakt dan spijt me dat, maar probeer alsjeblieft alleen te reageren als je denkt te kunnen helpen.


    Bijdrager
    Nikita

    Toch nog even hoor… :

    ”Heedless”

    Wat is dan nou voor debiele reactie?

    ”Heedless”

    Je hebt geen flauw idee wat ik er mee wil gaan doen.

    Dat komt inderdaad vijandig over.

    En als ik geen flauw idee heb wat je er mee wil gaan doen, leg dat dan uit! Anders kan niemand er toch wat mee?
    Ok, ik heb de ballen verstand van programmeren maar ik weet genoeg om te kunnen zeggen dat het waarschijnlijk meer dan één simpel regeltje code is waarmee je te maken gaat krijgen.

    Nou, nogmaals veel succes ermee…


    Bijdrager
    Heedless

    En weer lees je niet goed wat ik heb geschreven…

    Je HOEFT niet te weten wat ik er precies mee wil doen. Dat is te omslachtig om te vertellen. Het voorbeeld dat ik gaf heeft dezelfde strekking, alleen is het zo kort en begrijpbaar uitgelegt.

    Als het niet 1 simpel regeltje code is dan is het waarschijnlijk een kleine functie. Het lijkt me niet dat het echt heel erg veel code is. En al is het dat wel, dan gebruik ik dat toch gewoon… Mensen die er iets vanaf weten zullen me wel verder kunnen helpen en dat is de enige manier om er achter te komen wat voor code het precies is.


    Bijdrager
    Reflex

    1. Je geeft een rommelige openingspost
    2. Je bent nieuw hier en hebt meteen een grote mond tegen de gevestigde orde
    3. Je vraagt om een kant en klare oplossing. Mocht je nu zeggen dat je om hints vroeg, hier is er een: http://developer.apple.com/
    4. Ik geloof niet dat je het in AS maken kan
    5. Je gaat niet met 1 regel code een echte toetsaanslag simuleren, not gonna happen…


    Bijdrager
    Heedless
    ”Reflex”

    1. Je geeft een rommelige openingspost

    Volgens mij is er niets mis met mijn eerste post. Het lijkt mij toch best duidelijk. Dat zie je ook aan de reacties, iedereen weet wat ik bedoel, ze weten alleen het antwoord niet

    ”Reflex”

    2. Je bent nieuw hier en hebt meteen een grote mond tegen de gevestigde orde

    Dus nieuwkomers moeten hun mond houden als mensen met dingen komen die niet on topic zijn? Dat heeft niets te maken met nieuw zijn.

    ”Reflex”

    3. Je vraagt om een kant en klare oplossing. Mocht je nu zeggen dat je om hints vroeg, hier is er een: http://developer.apple.com/%5B/quote:154f474ef6%5DIk vraag niet om een kant en klare oplossing. Zoals ik al meerdere keren aan heb gegeven heb ik een voorbeeld gegeven van een toepassing voor zo’n code. Dat betekend dat, als iemand een antwoord geeft, ik dit alsnog zo moet gaan schrijven dat het binnen mijn app past.
    In mijn post van 23:40 zie je dat ik niet naar iets kant en klaars op zoek ben, een link naar een site die me verder kan helpen is ook goed. Alles dat me verder kan helpen is welkom.

    ”Reflex”

    4. Ik geloof niet dat je het in AS maken kan

    Ik wil het ook niet in AS maken, dit is het Cocoa en Carbon forum. Ik ben op zoek naar iets dat ik daarbij kan gebruiken.

    ”Reflex”

    5. Je gaat niet met 1 regel code een echte toetsaanslag simuleren, not gonna happen…

    En zoals ik net al zei is het ook goed als het meer code is. Hoe ik dat implementeer zie ik dan wel weer.


    Bijdrager
    Reflex
    ”Heedless”
    ”Reflex”

    1. Je geeft een rommelige openingspost

    Volgens mij is er niets mis met mijn eerste post. Het lijkt mij toch best duidelijk. Dat zie je ook aan de reacties, iedereen weet wat ik bedoel, ze weten alleen het antwoord niet

    Je vraagstelling was imho onduidelijk. Ik moest de replys lezen om te snappen wat er bedoeld werd.

    ”Reflex”

    2. Je bent nieuw hier en hebt meteen een grote mond tegen de gevestigde orde

    Dus nieuwkomers moeten hun mond houden als mensen met dingen komen die niet on topic zijn? Dat heeft niets te maken met nieuw zijn.

    Je zou wellicht wat meer respect op kunnen brengen voor diegenen die hier al langer rondlopen en al velen van dienst geweest zijn…

    Punt is, je oplossing ga je enkel vinden door in de documentatie te duiken. Je vraagt niet om de simpele implementatie van een NSView’s drawRect methode, maar om iets vrij specialistisch. Ik heb er zelf geen ervaring mee, maar ben er zeker van dat je dit in de documentatie overal wel kunt vinden. Hierbij vraag ik me af of het uberhaubt mogelijk is om een toetsaanslag hardwarematig te simuleren. Ik denk dat je bij NSEvent’s blijft hangen. Wellicht kunnen de mensen op apple’s development mailinglists je een direct antwoord geven OF het uberhaubt mogelijk is of niet.


    Bijdrager
    dj bazzie wazzie

    Ja ik ben het met reflex eens dat het een beetje onduidelijk is. ten eerste zou ik niet een scriptje gebruiken maar gewoon een applicatie maken met xcode. Dan maak je opstartvenster of wat dan ook en deze zet je dan op actief. Hierin moet je een verborgen (set visible of theObject to false) object plaatsen en responder moet op dit object aanstaan. De functie on keyboard down moet dan worden aangezet in IB. Dan kun je kijken of er toetsen worden ingedrukt. wanneer er bepaalde toetsen zijn ingedrukt kun jij aan de hand hiervan acties uitvoeren zoals een ander programma starten en jezelf stoppen.

    is dit wat je bedoeld?


    Bijdrager
    Buzz

    Ik heb even een klein experimentje gedaan: Als ik op mijn externe USB-toetsenbord de Cmd knop indruk en tegelijkertijd op mijn ingebouwde MacBook Pro toetsenbord de letter F, dan krijg ik geen Find venstertje, maar alleen de letter F. Met alleen een functie die een toetsaanslag simuleert kom je er dus denk ik niet (als zo’n functie al kant-en-klaar bestaat). Je moet er voor zorgen dat het besturingssysteem de toetsaanslag van jouw programma ook herkent als afkomstig van hetzelfde fysieke toetsenbord waar je de Cmd-toets op gebruikt. Misschien moet je dus zelfs op het niveau van de driver van het toetsenbord gaan hacken om voor elkaar te krijgen wat je wil.


    Bijdrager
    Turbanus

    Of een toetsenbordje maken met 2x zoveel toetsen……:wink:


    Bijdrager
    dj bazzie wazzie

    @ turbanus: hahaha.

    @buzz_d: Komt dit niet misschien omdat je cmd + f als 1 data pakket naar je moederbord wordt gestuurd en wanneer je er deze twee toetsenborden gebruikt worden er twee pakketen met data naar je moederbord gestuurd en ziet de computer die niet als 1 data pakket?


    Bijdrager
    Turbanus

    Maar even zonder dolle…. je zou natuurlijk wel meer in de richting van het touchscreen kunnen gaan denken. Daar kun je natuurlijk zoveel virtuele toetsen op programmeren als je wilt. Een soort van toetsendockje op de rand van je scherm dus….


    Bijdrager
    koen

    Misschien kan de ontwikkelaar van Keystrokes je helpen (komt uit Nederland).


    Bijdrager
    stefanhendriks

    Nu weet ik niet wat de bedoeling is van een programma als dit. Maar ik weet dat een library, die onder mac te compilen is (de naam is Allegro) , die kan keystrokes simuleren met 1 commando… het is gratis trouwens:

    http://www.allegro.cc

    En in de docs staat het als volgt:
    [code:1:63ca526e94]
    void simulate_keypress(int key);

    Stuffs a key into the keyboard buffer, just as if the user had pressed it. The parameter is in the same format returned by readkey(). Example:

    simulate_keypress(KEY_SPACE << 8);
    if (readkey() == (KEY_SPACE << 8))
    allegro_message("You simulated Alt+Spacen");

    See also: install_keyboard, simulate_ukeypress, keypressed, readkey
    [/code:1:63ca526e94]


    Bijdrager
    TGV

    Sommige van die dingen kunnen al via “Sticky keys” (Preferences > Universal Access).

    En ik denk niet dat je vanuit AppleScript een toetsaanslag kunt faken. Daar heb je denk ik een echte applicatie voor nodig. De Carbon API heeft in elk geval de calls PostEvent, PostEventToQueue en PostHighLevelEvent.

    Je zou kunnen proberen te kijken hoe applicaties als PopChar X het doen. En misschien is die applicatie wel genoeg om je probleem op te lossen/te omzeilen.


    Bijdrager
    Reflex

    Ik denk dat PopChar X gewoon een keystroke simuleert mbv. of NSEvent, of een kernelmsg… zo ingewikkeld kan dat niet zijn… wat ingewikkelder is is het opvangen van het eerste keydown signaal, deze niet doorsturen, maar in plaats daarvan een aantal signalen door te sturen… (1 of 5 maakt niet uit, maar wel dat je die ene afvangt)


    Bijdrager
    Motoom
    ”stefanhendriks”

    Nu weet ik niet wat de bedoeling is van een programma als dit. Maar ik weet dat een library, die onder mac te compilen is (de naam is Allegro) , die kan keystrokes simuleren met 1 commando… simulate_keypress()

    Ik ben bang dat dat alleen maar werkt binnen een allegro-applikatie zelf. Als je namelijk naar de implementatie van simulate_keypress() en ureadkey() kijkt, zie je dat allegro er een interne keyboardbuffer bijhoudt. Simulate_keypress() stopt daar een waarde in, en de functie ureadkey() kijkt eerst of er iets in de keyboardbuffer staat, als dat zo is returnt ie dat, anders gaat-ie het keyboard pollen.

    [code:1:38f2ea18ab]
    // simulate_keypress: Pushes a key into the
    // keyboard buffer, as if it has just been pressed
    void simulate_keypress(int key)
    {
    add_key(&key_buffer, key&0xFF, key>>8);
    }
    [/code:1:38f2ea18ab]

    Het lijkt me dat andere applikaties niet de private keyboardbuffer van de allegro-library uitlezen.

    Input/output gaat op unix-achtige systemen via device files in de /dev directory. Ik zit nu helaas niet achter mijn Mac mini, maar ik vermoed dat er een /dev/keyboard bestaat, of, aangezien het toetsenbord een USB apparaat is, een /dev/usb of iets dergelijks. Wellicht is daarin wat te vinden, waarschijnlijk gebruikmakend van een USB library voor de datastructuren en enumeraties, om het toetsenbord te manipuleren. Als je namelijk op een driverniveau keyboard events kunt synthetiseren, lijkt het net alsof de gebruiker op een toets drukte. En volgens mij doelt de TS op een dergelijke functionaliteit.


    Bijdrager
    BIT

    Ik weet dat je geen AppleScript nodig hebt, maar zo zou het eruit zien:
    [code:1:1a6b8ddc89]activate application "TextEdit"

    tell application "System Events"
    keystroke "e"
    keystroke "h"
    keystroke " "
    keystroke "v"
    keystroke "o"
    keystroke "i"
    keystroke "l"
    keystroke "a"
    delay 1
    keystroke "t" using {shift down, command down}
    end tell[/code:1:1a6b8ddc89]
    Je moet dan wel Enable access for assistive devices hebben aangevinkt in de Universal voorkeuren.


    Bijdrager
    ErikB78

    de functie “CGPostKeyboardEvent” is wat ik gebruik in cocoa. Google even voor een lijstje met de juiste keycodes die je nodig hebt.

    In dit voorbeeldje worden eerst de Option en Ctrl toets ingedrukt, en daar na meteen weer losgelaten:
    [code:1:0e4eb6ebe6]
    #import <CoreGraphics/CGRemoteOperation.h>

    // Option key On
    CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)58, true );

    // Ctrl key On
    CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)59, true );

    // Option key Off
    CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)58, false );

    // Ctrl key Off
    CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)59, false );
    [/code:1:0e4eb6ebe6]

    Succes!

30 berichten aan het bekijken - 1 tot 30 (van in totaal 30)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.