欧美群妇大交群的观看方式_久久机这里只有精品_国产suv精品一区_美国一区二区_欧洲乱码伦视频免费_日韩精品一级二级_另类综合日韩欧美亚洲_黑人巨大精品欧美黑白配亚洲

Linux Android 多點觸摸協議

作者: 51Touch     時間:2012-04-10     源于:中國IT實驗室    總點擊:
【導讀】:由于多點觸摸技術需要采集到多個點,然后再一起處理這些點,所以在軟件實現中需要保證每一波點的準確性和完整性。因此,Linux內核提供了input_mt_sync(struct input_dev * input)函數。

    北京時間04月10日消息,中國觸摸屏網訊,為了使用功能強大的多點觸控設備,就需要一種方案去上報用戶層所需的詳細的手指觸摸數據。這個文檔所描述的多點觸控協議可以讓內核驅動程序向用戶層上報任意多指的數據信息。

    本文來自:http://m.l2l9tgy.cn/touchscreen/news/front/201204/10-14897.html

  使用說明

  單點觸摸信息是以ABS承載并按一定順序發送,如BTN_TOUCH、ABS_X、ABS_Y、SYNC。而多點觸摸信息則是以ABS_MT承載并按一定順序發送,如ABS_MT_POSITION_X、ABS_MT_POSITION_Y,然后通過調用input_mt_sync()產生一個 SYN_MT_REPORT event來標記一個點的結束,告訴接收方接收當前手指的信息并準備接收其它手指的觸控信息。最后調用 input_sync()函數上報觸摸信息開始動作并告訴接收方開始接收下一系列多點觸摸信息。

  協議定義了一系列ABS_MT事件,這些事件被分為幾大類,充許只應用其中的一部份,多點觸摸最小的事件集中應包括ABS_MT_TOUCH_MAJOR、ABS_MT_POSITION_X和 ABS_MT_POSITION_Y,以此來實現多點觸摸。如果設備支持ABS_MT_WIDTH_MAJOR這個事件,那么此事件可以提供手指觸摸接觸面積大小。觸摸方向等信息可以由ABS_MT_TOUCH_MINOR, ABS_MT_WIDTH_MINOR and ABS_MT_ORIENTATION提供。ABS_MT_TOOL_TYPE提供觸摸設備的類別,如手或是筆或是其它。最后有些設備可能會支持ABS_MT_TRACKING_ID,用來支持硬件跟蹤多點信息,即該點屬于哪一條線等。

  下面是兩點觸摸支持的最小事件集序列:

  ABS_MT_TOUCH_MAJOR

  ABS_MT_POSITION_X

  ABS_MT_POSITION_Y

  SYN_MT_REPORT //上報第一個點

  ABS_MT_TOUCH_MAJOR

  ABS_MT_POSITION_X

  ABS_MT_POSITION_Y

  SYN_MT_REPORT //上報第二個點

  SYN_REPORT //開始動作

  Event 原語

  “接觸”一詞用來描述一個物體直接碰到另一個物體的表面。

  ABS_MT_TOUCH_MAJOR描述了主接觸面的長軸,它和X,Y同一個單位,如果一個面的分辨率為X*Y,則ABS_MT_TOUCH_MAJOR的最大值為sqrt(X^2+Y^2)

  ABS_MT_TOUCH_MINOR描述了接觸面的短軸,如果接觸面是圓形,它可以不用。

  ABS_MT_WIDTH_MAJOR描述了接觸工具的長軸

  ABS_MT_WIDTH_MINOR描述了接觸工具的短軸

  ABS_MT_TOUCH_MAJOR := max(X, Y)

  ABS_MT_TOUCH_MINOR := min(X, Y)

  ABS_MT_ORIENTATION := bool(X > Y)

  以上四個參數可以用來生成額外的觸摸信息,如ABS_MT_TOUCH_MAJOR/ABS_MT_WIDTH_MAJOR的比率可以用來描述壓力。

  ABS_MT_ORIENTATION

  ABS_MT_POSITION_X接觸面的中心點X坐標

  ABS_MT_POSITION_Y接觸面的中心點Y坐標

  ABS_MT_TOOL_TYPE描述接觸工具類型,很多內核驅動無法區分此參數如手指及筆,如果是這樣,該參數可以不用,協議目前支持MT_TOOL_FINGER和MT_TOOL_PEN兩種類型。

  ABS_MT_BLOB_ID形狀集ID,集合幾個點以描述一個形狀,很多驅動沒有形狀屬性,此參數可以不用。

  ABS_MT_TRACKING_ID描述了從接觸開始到釋放的整個過程的集合,如果設備不支持,此參數可是不用。

  觸摸軌跡

  僅有少數設備可以明觸的標識真實的 trackingID,多數情況下 trackingID只能來標識一次觸摸動作的過程。

  手勢

  多點觸摸指定的應用是創建手勢動作, TOUCH和 WIDTH參數經常用來區別手指的壓力和手指間的距離,另外 MINOR類的參數可以用來區別設備的接觸面的大小(點接觸還是面接觸),ORIENTATION可以產生旋轉事件。

  ===============================================================================================================

  在Linux內核支持的基礎上,Android在其2.0源碼中加入多點觸摸功能。由此觸摸屏在Android的frameworks被完全分為2種實現途徑:單點觸摸屏的單點方式,多點觸摸屏的單點和多點方式。

  在Linux的input.h中,多點觸摸功能依賴于以下幾個主要的軟件位:

  ……

  #define SYN_REPORT0

  #define SYN_CONFIG1

  #define SYN_MT_REPORT2

  ……

  #define ABS_MT_TOUCH_MAJOR0x30

  #define ABS_MT_TOUCH_MINOR0x31

  #define ABS_MT_WIDTH_MAJOR0x32

  #define ABS_MT_WIDTH_MINOR0x33

  #define ABS_MT_ORIENTATION0x34

  #define ABS_MT_POSITION_X0x35

  #define ABS_MT_POSITION_Y0x36

  #define ABS_MT_TOOL_TYPE0x37

  #define ABS_MT_BLOB_ID0x38

  ……

  在Android中對應的軟件位定義在RawInputEvent.java中:

  ……

  public class RawInputEvent {

  ……

  public static final int CLASS_TOUCHSCREEN_MT = 0x00000010;

  ……

  public static final int ABS_MT_TOUCH_MAJOR = 0x30;

  public static final int ABS_MT_TOUCH_MINOR = 0x31;

  public static final int ABS_MT_WIDTH_MAJOR = 0x32;

  public static final int ABS_MT_WIDTH_MINOR = 0x33;

  public static final int ABS_MT_ORIENTATION = 0x34;

  public static final int ABS_MT_POSITION_X = 0x35;

  public static final int ABS_MT_POSITION_Y = 0x36;

  public static final int ABS_MT_TOOL_TYPE = 0x37;

  public static final int ABS_MT_BLOB_ID = 0x38;

  ……

  public static final int SYN_REPORT = 0;

  public static final int SYN_CONFIG = 1;

  public static final int SYN_MT_REPORT = 2;

  ……

  在Android中,多點觸摸的實現方法在具體的代碼實現中和單點是完全區分開的。在Android代碼的EventHub.cpp中,單點屏和多點屏由如下代碼段來判定:

  int EventHub::open_device(const char *deviceName)

  {

  ……

  if (test_bit(ABS_MT_TOUCH_MAJOR, abs_bitmask)

  && test_bit(ABS_MT_POSITION_X, abs_bitmask)

  && test_bit(ABS_MT_POSITION_Y, abs_bitmask)) {

  device->classes |= CLASS_TOUCHSCREEN | CLASS_TOUCHSCREEN_MT;

  //LOGI("It is a multi-touch screen!");

  }

  //single-touch?

  else if (test_bit(BTN_TOUCH, key_bitmask)

  && test_bit(ABS_X, abs_bitmask)

  && test_bit(ABS_Y, abs_bitmask)) {

  device->classes |= CLASS_TOUCHSCREEN;

  //LOGI("It is a single-touch screen!");

  }

  ……

  }

  我們知道,在觸摸屏驅動中,通常在probe函數中會調用input_set_abs_params給設備的input_dev結構體初始化,這些input_dev的參數會在Android的EventHub.cpp中被讀取。如上可知,如果我們的觸摸屏想被當成多點屏被處理,只需要在驅動中給input_dev額外增加以下幾個參數即可:

  input_set_abs_params(mcs_data.input, ABS_MT_POSITION_X, pdata->abs_x_min, pdata->abs_x_max, 0, 0);

  input_set_abs_params(mcs_data.input, ABS_MT_POSITION_Y, pdata->abs_y_min, pdata->abs_y_max, 0, 0);

  input_set_abs_params(mcs_data.input, ABS_MT_TOUCH_MAJOR, 0, 15, 0, 0);

  //相當于單點屏的ABX_PRESSURE

  input_set_abs_params(mcs_data.input, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);

  //相當于單點屏的ABS_TOOL_WIDTH

  由于多點觸摸技術需要采集到多個點,然后再一起處理這些點,所以在軟件實現中需要保證每一波點的準確性和完整性。因此,Linux內核提供了input_mt_sync(struct input_dev * input)函數。在每波的每個點上報后需要緊跟一句input_mt_sync(), 當這波所有點上報后再使用input_sync()進行同步。例如一波要上報3個點:

  ……

  input_mt_sync(input);

  ……

  input_mt_sync(input);

  ……

  input_mt_sync(input);

  input_sync(input);

  注:即使是僅上報一個點的單點事件,也需要一次input_my_sync。


    觸摸屏與OLED網推出微信公共平臺,每日一條微信新聞,涵蓋觸摸屏材料、觸摸屏設備、觸控面板行業主要資訊,第一時間了解觸摸屏行業發展動態。關注辦法:微信公眾號“i51touch” 或微信中掃描下面二維碼關注,或這里查看詳細步驟
相關閱讀:3D打印    模具產業    微鑄鍛技術    石墨烯    OLED面板    夏普    iPhone 8    半導體    蘋果    
關于我們 | 廣告服務 | 聯系我們 | 版權聲明 | 隱私政策 | 網站地圖 | 友情鏈接 | 歡迎投稿 | 加入收藏 | 意見反饋 | 經銷商加入
網站廣告、經銷商加盟、觸摸屏軟件銷售: 028-85108892 13183843395 028-66219290 聯系人: 張小姐 產品購買聯系方式如下:
地址:成都市高升橋東路2號高盛中心1109室 電話: 028-85108892 13183843395 028-66219290
版權所有 Copyright(C) 2003-2015 All rights reserved 中國觸摸屏網 電子郵件: 51touch@126.com touch8@gmail.com
業務合作QQ:觸摸屏技術,觸摸屏報價,觸摸屏軟件咨詢 43361182 觸摸屏軟件制作與技術支持:觸摸屏軟件,觸摸查詢系統,觸摸查詢軟件 893008608 媒體合作QQ: 893008608

2000人超級QQ觸摸屏群:59897879 171220106


分享到
欧美另类变人与禽xxxxx| 最近中文字幕在线中文视频| 在线观看av免费| 在线黄色网页| 日本一区二区免费高清| 国产精品99999| 日韩偷拍自拍| 手机看片久久| 欧美va亚洲va日韩∨a综合色| 香蕉影视欧美成人| 在线观看a视频| 蜜桃av一区| 亚洲国产天堂久久综合| 午夜精品一区二区三区三上悠亚| 日韩一区二区在线看| 免费看美女隐私的视频| 福利在线导航136| 欧美成a人免费观看久久| 91蜜桃在线视频| 国产精品久久久久久麻豆一区软件 | 男人的天堂在线视频| 麻豆久久一区| 97久久精品人人澡人人爽| 国产精品久久免费看| 欧洲一区在线电影| 在线看三级网站视频| 视频一区视频二区中文字幕| 亚洲第一在线视频| 在线成人国产| 亚洲黄色www网站| 一区福利视频| 欧美亚洲综合一区| 成人在线免费看| 思热99re视热频这里只精品| av播放在线| 中文字幕在线一二| 一区二区美女| 中文字幕乱码亚洲精品一区| 99精品视频一区二区| 亚洲蜜桃精久久久久久久| 欧美日韩国产小视频在线观看| 精品亚洲男同gayvideo网站| 污污网站在线| 999久久久国产精品| 国产精品对白交换视频| 欧美日韩国产一区中文午夜| 丝袜美腿av在线| 日韩一级不卡| 精品亚洲一区二区三区在线观看| 欧美好骚综合网| 欧美激情第二页| 亚洲一区二区三区影院| 中文字幕在线网| 国产精品久久久久一区二区三区厕所 | 国产第一精品| 欧美久久综合| 韩国女主播成人在线观看| 亚洲高清免费观看| av在线天天| 国产乱子精品一区二区在线观看| 亚洲永久免费| 欧美大片在线观看| 成人黄色影视| av免费不卡国产观看| 黑人巨大精品欧美一区| 成年人羞羞的网站| 激情综合色播五月| 日本在线视频网址| av网站一区二区三区| 在线看黄的网站| 日韩精品网站| 欧美日韩成人综合天天影院 | 波多野结衣在线一区二区| 久久99国产精品麻豆| 日韩免费视频| 亚洲色图19p| 欧美视频在线观看免费网址| 欧美日韩国产a| 亚洲国产三级| 最新亚洲伊人网| 最新国产精品精品视频| 欧美日韩在线不卡| 在线看片日韩| 成人教育av| 中文产幕区在线观看 | 波多野结衣在线播放一区| 国产黄色在线| 欧美亚洲尤物久久| 在线观看的日韩av| 激情小视频在线观看| 国产成人丝袜美腿| 91涩漫在线观看| 成人动漫中文字幕| caoporn97在线视频| 亚洲制服丝袜av| 国产精品国产| 国产精品国产自产拍在线| 黄色av免费在线看| 久久国产乱子精品免费女| 国产呻吟对白刺激无套视频在线| 99成人在线视频| 亚洲第一在线视频| 播五月开心婷婷综合| 黄页网站大全在线免费观看| 国产91精品入口| 九九九九九九精品任你躁 | 亚洲精品影院在线观看| 国产欧洲在线| seseavlu视频在线| 亚洲欧洲日产国产网站| 亚洲成av人片一区二区三区| 国产一区二区毛片| 伊人久久大香线蕉av超碰| 永久www成人看片| 国产精品资源网| 色www永久免费视频首页在线| 亚洲综合无码一区二区| 亚洲精品午夜av福利久久蜜桃| 中文字幕一区二区三区在线不卡| 欧美日韩免费电影| 亚洲一区二区三区四区五区黄| 国产一区二区久久久久| 日本韩国精品在线| 欧美不卡视频| 翔田千里在线视频| 久久先锋资源网| 99国产精品久久久久久久 | 国产精品mm| 松下纱荣子在线观看| 国产精品666| 亚洲一区在线观看免费| 中文字幕五月欧美| 亚洲男人电影天堂| 午夜电影久久久| 欧美日韩中字一区| 欧美福利一区二区| 日韩欧美国产成人| 成人高清视频在线观看| 红杏视频成人| 韩日视频在线| 日韩精品免费在线视频| 亚洲午夜久久久久| 久久久精品黄色| 日韩黄色免费电影| 亚洲永久字幕| 欧美猛男做受videos| 福利资源在线久| 亚洲成人精品在线观看| 亚洲另类自拍| 日韩电影网站| 如如影视在线观看经典| 天天综合网天天综合色| 国产精品视频你懂的| 中文字幕乱码亚洲精品一区| 成人午夜伦理影院| 天美av一区二区三区久久| 又黄又爽无遮挡| 国产欧美日韩视频一区二区| 99精品在免费线中文字幕网站一区 | 福利91精品一区二区三区| 亚洲精品极品| 亚洲手机在线| 欧美电影免费播放| 91精品国产综合久久久久久豆腐| 亚洲精品视频在线播放| 欧美日韩一二区| 欧美视频精品在线观看| 极品少妇一区二区| 日本欧美日韩| 涩涩屋成人免费视频软件| 日韩免费一区二区三区在线播放| 精品久久久一区二区| 国产精品麻豆欧美日韩ww| 综合欧美亚洲日本| 欧美性猛交xxxx富婆弯腰| 亚洲三级在线免费| 国产亚洲高清在线观看| 婷婷综合社区| 91视频在线看| 亚洲欧美日韩网| 不卡一区综合视频| 亚洲免费观看在线观看| 精品国产3级a| 成人在线二区| 精品国产影院| 国产精品99久久久| 日韩成人在线电影网| h1515四虎成人| 日本系列欧美系列| 久久综合九色综合97婷婷女人 | 草草视频在线一区二区| 久久久久99精品一区| 亚洲夜夜综合| 国产精品久久国产精麻豆99网站 | 捆绑调教日本一区二区三区| 国产精品午夜在线| av一区在线播放| 亚洲已满18点击进入久久| 日本在线观看高清完整版| 国产精品试看|