2012-08-13 46 views
0

我正在嘗試編寫一個庫來從Apple Magic Mouse獲取觸摸事件。我正在使用私有框架MultitouchSupport.framework並使用下面的代碼來獲取多點觸控設備的列表。這樣做效果很好,而且我的圖書館運行良好,除了它從所有多點觸控設備(例如筆記本電腦觸控板)獲取觸控事件外,而我只想從Magic Mouse中獲取事件。我怎麼知道我在看什麼類型的設備只監視鼠標?我如何知道什麼類型的多點觸控設備MTDeviceRef是

我使用偵聽事件的代碼是

 NSMutableArray* deviceList = (__bridge NSMutableArray*)MTDeviceCreateList(); //grab our device list 

    for(int i = 0; i<[deviceList count]; i++) //iterate available devices 
    { 
     MTRegisterContactFrameCallback([deviceList objectAtIndex:i], touchCallback); //assign callback for device 
     MTDeviceStart([deviceList objectAtIndex:i], 0); //start sending events 
    } 

所以我怎樣才能篩選出MTDeviceRefs從MTDeviceCreateList回到纔開始聽魔術鼠標設備?或者至少,過濾出默認的筆記本電腦觸控板?有沒有關於使用這個MultitouchSupport.framework的文檔?

回答

2

還有其他至少在四個方面取得MTDeviceRef

  • MTDeviceCreateDefault
  • MTDeviceCreateFromDeviceID
  • MTDeviceCreateFromGUID
  • MTDeviceCreateFromService

MultitouchSupport.framework是一個私人的框架,你將不得不改變請設計它以便了解應該傳遞給這些功能的參數。另外,如果您從這些函數之一獲取參考,則應該使用函數MTDeviceRelease釋放設備參考。

或者您可以嘗試用MTDeviceIsBuiltIn函數過濾出觸控板。也許內置意味着筆記本電腦觸控板。這只是一個瘋狂的猜測,我只是看着MultitouchSupport框架二進制文件中的符號。鑑於函數名的簽名可能是

BOOL MTDeviceIsBuiltIn(MTDeviceRef device)

同樣,這只是一個猜測,我還沒有真正嘗試。

+0

因此,我最終篩選出了第一個碰巧總是觸控板的項目,這對於我的有限使用來說足夠好,但這些都是好主意,如果我需要使它更加健壯,我會研究它們。謝謝! – msfeldstein 2012-09-06 21:11:48

+0

你是如何看待這些符號的?我使用nm,但它並沒有給我太多的好處,有沒有更好的方法? – msfeldstein 2012-09-07 22:26:38

+0

也完全有效,你搖滾。 – msfeldstein 2012-09-07 22:32:14

相關問題