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

Re: [MiNT] FreeMiNT initial key stuck



On 12/09/2009 12:26, Vincent Rivière wrote:
So I had an idea. EmuTOS (and probably TOS) uses the Timer C to handle
the key repeat feature. FreeMiNT replaces the keyboard handlers. Would
it be possible that the EmuTOS key repeat routine on Timer C is still
called periodically ? I guess the EmuTOS keyboard routines are not
called after FreeMiNT replaces them. So if EmuTOS key repeat feature is
enabled by a long keypress at startup, it will never be stopped because
it will never see the key release event.

I'm very proud to announce that after 3 years of annoyance, I finally fixed that bug.

Not really a fix, but at least a workaround in EmuTOS.

Now, the EmuTOS key repeat routine makes an additional check. If it is processing a key repeat, and if it detects that the ikbdsys routine has changed since the initial key press, then it cancels the key repeat. Simple. Efficient.

This EmuTOS workaround does not fix the problem with FreeMiNT and real TOS. But 99% of the time, the problem occurs with ARAnyM + EmuTOS, when the user bypasses the EmuTOS welcome screen by pressing a key.

I believe that the problem never actually happens on real hardware, because keystrokes at startup are more rare (?), moreover FreeMiNT starts slower.

So I really think that we will never be annoyed again because of this bug.

You can enjoy the latest EmuTOS snapshot right now:
http://sourceforge.net/projects/emutos/files/snapshots/CVS-20121230/

--
Vincent Rivière