blob: 556f9a0206639ae0cfb525bb7a5eb35a9f52e0d4 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
performance: 0.718
device: 0.543
semantic: 0.482
graphic: 0.478
network: 0.278
debug: 0.198
vnc: 0.192
files: 0.181
socket: 0.171
other: 0.138
PID: 0.122
permissions: 0.106
boot: 0.098
KVM: 0.033
borland IDEs double up cursor key presses (need timing on PS2 port input)
Most DOS-era IDEs from Borland (I have tried Borland C++ 2.0, Borland C++ 3.1 and Turbo Pascal 7.1) exhibit strange responses to the keyboard. Cursor keys are registered twice, so each press of a cursor key causes the cursor to move twice. Also the other keys occasionally are missed or duplicated.
From an internet search, the problem appears to be this. These programs read the PS2 input register multiple times per incoming byte, on the assumption that the byte will remain there for at least a few hundred microseconds, before the next byte (if any) appears there. qemu treats a read of the register by the guest as an acknowledgement of the incoming byte and puts the next byte into the register immediately, thus breaking the programs that expect each successive byte to stay in place for a while.
The obvious solution is to use a timer to advance through the queued bytes.
This virtualbox bug talks about the same thing, and also mentions qemu:
https://www.virtualbox.org/ticket/58
One of the people in the conversation created a patch for qemu which wasn't accepted:
http://qemu.11.n7.nabble.com/PATCH-Fix-for-DOS-keyboard-problems-td114076.html
Just found the complete conversation regarding the abovementioned patch:
https://lists.nongnu.org/archive/html/qemu-devel/2009-08/msg01182.html
Possible fix:
https://<email address hidden>/msg804823.html
The patch mentioned by Philippe has now been merged to the QEMU master branch (commit d1e45668d2128b064). Michael, could you maybe check the current git version to see whether this problem has been fixed now?
|