On Thu, May 27, 2010 at 12:58 AM, Bert Freudenberg <bert@freudenbergs.de> wrote:

On 27.05.2010, at 04:32, David T. Lewis wrote:
>
>
> On Wed, May 26, 2010 at 02:12:03PM -0700, Eliot Miranda wrote:
>>
>> Hi All,
>>
>>    is there any way to get the unix VM to deliver raw keyboard events, or
>> at least control and shift key presses?
>
> I don't know enough to fully answer this, but I am fairly sure that
> the answer will turn out to be yes.

Well I assume Eliot meant "... without hacking the VM" in which case the answer would be "no". Everything else is just ASMOP, but he knows that ;)

Except that yesterday when I enabled DEBUG_EVENTS in sqUnixX11.c and wrote some code to map keycodes into the XK_Blah define names in /usr/include/X11/keysymdef.h I soon found out that there's a non-obvious mapping going on and that I'll probably have to grok Xorg's keyboard driver, sigh.  I find the keyboard event mapping code in sqUnixX11.c distinctly non-obvious.  Part of it is that international input complicates things but (I *think*) the root of it is that a keycode in an XKeyEvent (at least on Xorg) is /not/ decoded.  The problem for me in these kinds of situations is that I only have one real machine and one virtual machine to hand so finding out what the one true solution for all of X11 is daunting  (should I say that I *hate* X11).  But at least I now know that (apart from the [fn] key) Xorg delivers all key presses immediately, so as you say Bert, merely ASMOP :)

best
Eliot



- Bert -

> Assuming that the unix VM is running under X11, the raw information
> would be in the form of X11 events, which are translated into some more
> generic Squeak event format in platforms/unix/vm-display-X11/sqUnixX11.c.
>
> The low level keyboard event information, including shift key presses,
> would be represented as XKeyEvents, so I would expect that there is
> some way to make these available as events in the VM.
>
> X11 definitely does understand the shift keys, see for example
> /usr/include/X11/keysymdef.h.
>
> John's API documentation may help: <http://isqueak.org/ioProcessEvents>
>
> Dave
>