On 18/6/08 19:36, Eric Sciolli wrote:
Hello
I'm a teacher and I've students who needs specials keyboards to work with
standard applications. Does someone has tried to create a screen keyboard in
revolution to write in standard applications like Word? Perhaps using
appleEvents?


Hi Eric,

I've done this for use with RevBrowser - we wanted a customised browser for a touchscreen, with the ability for users to complete forms.

The solution - at least for Mac - was to use AppleScript, with the extremely useful application "System Events" (provided by Apple).

Here's the function I used:

  on typeLetter tText, bShift
    put "tell application" && quote &  "System Events" & quote & return \
      into tAScom
    put "key code" && tText after tAScom
    if bShift then put " using shift down" after tAScom
    put return & "end tell" & return after tAScom
    do tAScom as applescript
  end typeLetter

But note that you send a key code, rather than the letter you want. I made the keyboard out of buttons, each with a custom property for the keycode they should corrrespond to; the keyboard was grouped, and the group contained a mouseUp handler

  on mouseUp
    typeLetter (the uKeyCode of the target), stShiftStatus
  end mouseUp

I don't recall where I found the reference for keycodes, but I would expect Google will be your friend (if not let me know and I can reverse it back out of the buttons).

The problem I can foresee is about how you prevent Revolution receiving the keypresses. In my project, Rev and RevBrowser are both the front-most application, but Rev isn't able to send keypresses into the browser (which is really an instance of webkit). So Rev asked the "System Events" application to 'type' the keys, and since the revbrowser instance had the focus, in the front-most application, this worked fine. In your case I would expect that the Rev app presenting the on-screen keyboard would be the front-most app, otherwise why did it get the mouse event - so it would probably receive the key event also.

Someone else might be able to provide the piece of the puzzle that lets you make a Rev stack appear as a floating palette - receiving mouse clicks on its window without actually acquiring focus or being the front-most app. Otherwise I think you'd have to modify the 'typeLetter' handler above so that it finds out which app is next-to-front, and activates that app before sending the message to "System Events".

Hope this helps,

- Ben

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to