我一直在嘗試幾件事來模擬DoxBox模擬器的串行鼠標(爲了在Settlers 2中玩2人遊戲)。使用FIFO模擬串行鼠標
我還沒有找到任何工作解決方案,所以我試着做我自己的。看來,dosbox可以使用任何/ dev/ttyS *作爲串行輸入。所以我想直接寫一些位到FIFO來作爲串行鼠標的mascarade應該做的事情!不幸的是,它並沒有真正的工作,因爲我顯然錯過了一些步驟(特別是初始化,告訴驅動程序它是鼠標?),我覺得我不太瞭解串口的工作原理。
我沒有找到太多的鼠標協議,除了Microsoft serial mouse protocol。我試圖輸出合理的字節。但似乎並沒有真正發生,並且dosbox說它無法打開串口。
下面是我實現的:
def bits(byte):
b = []
for i in xrange(8):
b.append((byte >> i) & 1)
return b
def pack(*args):
# packs the bits into a string
s = ""
for i in args:
v = 0
for bit in i:
v = v<<1
v+=bit
s+=chr(v)
return s
def makebytes(ld,rd,dx,dy):
# left down, right down, delta x, delta y
# create 3 byte message for mouse
dx = bits(dx)
dy = bits(dy)
A = [0,1,
1 if ld else 0,
1 if rd else 0,
dx[7],dx[6],
dy[7],dy[6]]
B = [0,0]+dx[::-1][2:]
C = [0,0]+dy[::-1][2:]
return pack(A,B,C)
# this is the FIFO I created with go+rw
f = file("/dev/ttyS42",'w')
print "Got"
import time
while 1:
# send some mouse movement
f.write(makebytes(0,0,10,10))
print "sent 1"
time.sleep(0.5)
f.write(makebytes(0,0,-10,-10))
print "sent 2"
所以,我不知道在哪裏,現在一看,和任何幫助,將不勝感激。