2010-10-04 50 views
6

我創建了一個Android應用程序,它將觸摸屏傳感器數據提供給在Debian Lenny機器上偵聽的Java客戶端。作爲電腦鼠標的Android手機

客戶端將這些數據映射到屏幕上的位置,就像wacom鍵盤一樣。我想把x_loc和y_loc放到一個文件中,並將文件識別爲一個設備(我迷惑地相信這是它應該如何工作的)

我有Linux的經驗,但沒有創建之前的設備。我如何告訴Linux這個文件是一個鼠標。我必須創建一個驅動程序嗎?

回答

1

有很多方法可以做到這一點,從寫一個實際的設備驅動程序,在寫X客戶端產生X事件(使用XTEST擴展爲例),使用內核接口來注入輸入子系統事件。

我會去最後一個,並使用uinput子系統。這幾乎是所有最新的內核的一部分,提供/dev/uinput,您可以經常打開,並做各種ioctl s到創建普通用戶空間的輸入設備。

另請注意,這方面的一些機制已經存在。藍牙人機接口設備,在Linux上工作得很好,就是一個例子。 rinputd,一個守護進程,用於偵聽客戶端的輸入並根據發送的數據生成未輸入事件。是另一個。您可能想考慮將您的Android應用程序作爲一個rinput客戶端。

0

您可以編寫Linux設備驅動程序來解釋數據作爲一個真正的鼠標,或者你能說服X服務器(或任何其他)接受別的東西,輸入諸如命名管道。

實際設備文件沒有任何內容的文件 - 它們只不過是用來跟一個驅動器,可一些設備上執行隱約類似文件的選項內核中的主要和次要編號引用。您可以使用mknod創建設備文件,但只有使用匹配號碼的內核驅動程序支持後才能使用。相信現在有一些存根機制,所以實際驅動程序的大部分可以在用戶空間中運行。

相關問題