[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] No keyboard with GEM=ROM



Am 12.09.2010, 18:15 Uhr, schrieb Vincent Rivière <vincent.riviere@freesbee.fr>:

The MiNT-keyboard-handler needs a certain timer-interrupt to occur.

Sorry but that stuff is still obscure.

Yep!


I looked further into MiNT's keyboard handling. I saw that the interrupt
handler used for keyboard data is ikbd_scan() inside sys/keyboard.c.
Basically, it puts the new scancode into the scanb buffer and it calls
addroottimeout(IkbdScan).

If I understand well, the interrupt handler does a minimal amount of work,
then addroottimeout() asks MiNT's main process to do the remaining job on
next task switch, isn't it ?

Yep! This timeout-stuff is also important for key-repeat.

And that task switch never happens in GEM programs, maybe because the ROM

Also true.

AES runs in supervisor mode, do it doesn't work inside form_do() ?

Maybe - I think I understood it better sometime ago. Fact is addrootimeout never returns.

Well, these are suppositions.
What could be the clean fix ?

I'd suggest to add some yield() in Emutos, but that is not really clean.

NB: I saw the direct call to IkbdScan() when WITH_SINGLE_TASK_SUPPORT is
defined.

That's why I have keyboard in GEM.

--
Helmut Karlowski