2016-01-20 112 views
2

我正在尋找一種方法將wacom輸入注入到正在運行的X服務器中。在開始找到關於這個主題的任何資源時,我有點卡住了。模擬手寫筆輸入

有很多關於如何注入擊鍵和鼠標輸入的信息,但那不是我正在尋找的東西,它似乎並沒有混合wacom的東西。

有沒有人有任何關於此主題的信息?

+0

有關Ask Ubuntu的類似問題:http://askubuntu.com/questions/239823/use-laptop-trackpad-as-graphics-tablet –

回答

2

在Linux上,各種輸入設備會生成一個variety of events

例如,

Keyboards - EV_KEY 
Mice  - EV_REL 
Tablets - EV_ABS 

事件支持的/受任何特定輸入裝置產生可通過與連接到它的輸入設備的系統上運行xinput如下鑑定:

xinput --list <name of the connected input device> 

通過連接Wacom平板電腦創建的輸入設備示例列表:

$ > xinput --list 
⎡ Virtual core pointer       id=2 [master pointer (3)] 
⎜ ↳ Virtual core XTEST pointer    id=4 [slave pointer (2)] 
⎜ ↳ SynPS/2 Synaptics TouchPad    id=14 [slave pointer (2)] 
⎜ ↳ Wacom Intuos4 6x9 eraser     id=17 [slave pointer (2)] 
⎜ ↳ Wacom Intuos4 6x9 cursor     id=18 [slave pointer (2)] 
⎜ ↳ Wacom Intuos4 6x9 pad      id=19 [slave pointer (2)] 
⎜ ↳ Wacom Intuos4 6x9 stylus     id=20 [slave pointer (2)] 
⎣ Virtual core keyboard       id=3 [master keyboard (2)] 
    ↳ Virtual core XTEST keyboard    id=5 [slave keyboard (3)] 
    ↳ AT Translated Set 2 keyboard    id=13 [slave keyboard (3)] 

..和由4個Wacom的裝置中的一個生成的支持的輸入事件的列表/被從Wacom繪圖板註冊到輸入事件:

$ > xinput --list "Wacom Intuos4 6x9 eraser" 
Wacom Intuos4 6x9 eraser     id=17 [slave pointer (2)] 
    Reporting 8 classes: 
     Class originated from: 17 
     Buttons supported: 9 
     Button labels: None None None None None None None None None 
     Button state: 
     Class originated from: 17 
     Keycodes supported: 248 
     Class originated from: 17 
     Detail for Valuator 0: 
      Label: Abs X 
      Range: 0.000000 - 44704.000000 
      Resolution: 200000 units/m 
      Mode: absolute 
      Current value: 0.000000 
     Class originated from: 17 
     Detail for Valuator 1: 
      Label: Abs Y 
      Range: 0.000000 - 27940.000000 
      Resolution: 200000 units/m 
      Mode: absolute 
      Current value: 0.000000 
     Class originated from: 17 
     Detail for Valuator 2: 
      Label: Abs Pressure 
      Range: 0.000000 - 2048.000000 
      Resolution: 1 units/m 
      Mode: absolute 
      Current value: 0.000000 
     Class originated from: 17 
     Detail for Valuator 3: 
      Label: Abs Tilt X 
      Range: -64.000000 - 63.000000 
      Resolution: 1 units/m 
      Mode: absolute 
      Current value: 0.000000 
     Class originated from: 17 
     Detail for Valuator 4: 
      Label: Abs Tilt Y 
      Range: -64.000000 - 63.000000 
      Resolution: 1 units/m 
      Mode: absolute 
      Current value: 0.000000 
     Class originated from: 17 
     Detail for Valuator 5: 
      Label: Abs Tilt Y 
      Range: -64.000000 - 63.000000 
      Resolution: 1 units/m 
      Mode: absolute 
      Current value: 0.000000 

上面顯示9個按鍵,以及各種類型的輸入事件(由其標籤引用)的相應最小/最大值的幾個軸。

例如,絕對x軸的最小/最大值爲0 - 44704個單位,其中20000個單位/ m。推測輸入類型爲EV_ABS的事件僅在X軸的此範圍內生成。

一旦由輸入裝置所生成的事件的類型已經確定,很容易僞造事件注入使用uinput框架XINPUT隊列。一個簡單的例子可以here

當你打算模擬Wacom數位板,你可能需要注入所有在使用時典型的Wacom數位板生成輸入事件。

xinput可以被用於監測如本answer由實際裝置產生的輸入事件的順序和定時。