精品国产成人av在线免_国产高潮免费视频_成人综合久久网_可以看毛片的网址_日本在线视频www色_无码精品国产一区二区三区免费_午夜福利123_女同性恋一区二区_jizzjizz国产精品喷水_六月丁香激情网

Linux與Android 多點觸摸協議

作者: TouchScreen     時間:2012-06-28     源于:未知    總點擊:
【導讀】:單點觸摸信息是以ABS承載并按一定順序發送,多點觸摸信息則是以ABS_MT承載并按一定順序發送,然后通過調用input_mt_sync()產生一個 SYN_MT_REPORT event來標記一個點的結束,告訴接收方接收當前手指的信息并準備接收其它手指的觸控信息。

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

    使用說明

    單點觸摸信息是以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類的參數可以用來區別設備的接觸面的大。c接觸還是面接觸),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。


相關閱讀: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


分享到
精品国产成人av在线免_国产高潮免费视频_成人综合久久网_可以看毛片的网址_日本在线视频www色_无码精品国产一区二区三区免费_午夜福利123_女同性恋一区二区_jizzjizz国产精品喷水_六月丁香激情网
九色自拍视频在线观看| 手机看片福利盒子久久| 啊啊啊国产视频| 污污污污污污www网站免费| 99热在线这里只有精品| 国产又粗又大又爽的视频| 3d动漫一区二区三区| 看看黄色一级片| 91av资源网| 青青草视频国产| 日本中文字幕精品—区二区| 日韩黄色短视频| av磁力番号网| 日韩av片专区| 亚洲爆乳无码专区| 男女激情免费视频| 在线免费黄色小视频| 亚洲少妇第一页| 久久99久久久久久| 欧美aaa在线观看| 奇米影音第四色| 97国产精东麻豆人妻电影| 国产精品88久久久久久妇女| 国产视频手机在线播放| 欧洲av无码放荡人妇网站| 一二三四视频社区在线| 四虎精品欧美一区二区免费| 无尽裸体动漫2d在线观看| 激情婷婷综合网| 99爱视频在线| 自拍日韩亚洲一区在线| 国产男女免费视频| 大西瓜av在线| 日韩视频免费播放| 国产中文字幕乱人伦在线观看| 乱子伦一区二区| 欧美性受xxxx黑人猛交88| 婷婷视频在线播放| 香蕉视频在线网址| 亚洲美女自拍偷拍| 国产盗摄视频在线观看| 日韩精品视频网址| 日本一二三区在线| 香蕉视频在线网址| 9色视频在线观看| 成年人视频大全| 国产一级大片免费看| 日本高清xxxx| 青青草国产免费| 国产精品无码一区二区在线| 国产婷婷一区二区三区| 99999精品视频| 91看片就是不一样| 成年人在线观看视频免费| 久久久久久蜜桃一区二区| 国内外成人免费在线视频| 91亚洲精品久久久蜜桃借种| 超碰在线资源站| 亚洲综合激情五月| 在线观看17c| 亚洲熟妇av日韩熟妇在线| 日本欧美黄色片| 成人在线激情网| 美女一区二区三区视频| 亚洲综合欧美在线| 国产又爽又黄ai换脸| 久艹在线免费观看| 激情五月开心婷婷| 91国内在线播放| 男女激烈动态图| 免费av观看网址| 三级视频中文字幕| 手机在线视频你懂的| 可以看毛片的网址| 黑鬼大战白妞高潮喷白浆| 日韩av一卡二卡三卡| 久久久无码中文字幕久...| 黄色一级片在线看| 国产裸体免费无遮挡| 亚洲欧美日韩一二三区| 久无码久无码av无码| 午夜激情在线观看视频| 国产又粗又长又爽又黄的视频| 亚洲精品少妇一区二区| 欧美a在线视频| 午夜免费一级片| 亚洲熟妇av一区二区三区漫画| 日日噜噜噜噜久久久精品毛片| 日本美女久久久| 成年人视频网站免费观看| 97超碰成人在线| 欧美乱大交xxxxx潮喷l头像| 艹b视频在线观看| 国产不卡一区二区视频| av免费一区二区| a√天堂在线观看| av动漫免费观看| 久久精品午夜福利| 亚洲爆乳无码精品aaa片蜜桃| 午夜免费一区二区| 中文字幕色呦呦| 欧美大尺度做爰床戏| 人体内射精一区二区三区| 国产精品v日韩精品v在线观看| av网站手机在线观看| 91看片破解版| 欧美亚洲另类色图| 国产在线拍揄自揄拍无码| 国产精品视频黄色| 2018中文字幕第一页| 国产又粗又长又爽又黄的视频| 国产l精品国产亚洲区久久| 经典三级在线视频| 手机在线看福利| 国产美女无遮挡网站| 妞干网这里只有精品| 中文字幕av专区| 无码人妻丰满熟妇区96| av中文字幕av| www.五月天色| www.亚洲高清| 国产l精品国产亚洲区久久| 久久综合久久网| 国产成人免费高清视频| 视频免费1区二区三区| 黄色一级免费大片| 777精品久无码人妻蜜桃| 大陆极品少妇内射aaaaaa| 中文字幕在线视频精品| 国产成人综合一区| 欧美变态另类刺激| 男人天堂手机在线视频| 天天爱天天做天天操| 三级在线免费观看| 搡女人真爽免费午夜网站| 熟女少妇在线视频播放| 黄色网在线视频| 伊人成人免费视频| 国产欧美激情视频| 高清一区在线观看| 中文字幕国产传媒| 欧美日韩大尺度| 99免费视频观看| 国产av人人夜夜澡人人爽| 无码人妻h动漫| 国内性生活视频| 又粗又黑又大的吊av| 国产高清av在线播放| 女人被男人躁得好爽免费视频| 中文字幕第50页| 中文字幕在线中文| 欧美在线观看视频免费| 日韩精品久久一区二区| 国产欧美精品aaaaaa片| 免费极品av一视觉盛宴| 成人在线免费观看视频网站| 99久re热视频精品98| 亚洲色图都市激情| 国产精品免费看久久久无码| 日本a在线天堂| 日韩欧美国产综合在线| 日韩欧美一区二| 99久久激情视频| 已婚少妇美妙人妻系列| 在线免费观看视频黄| 污色网站在线观看| av在线免费看片| xxxxxx在线观看| 国产高清av在线播放| 青青青在线播放| 国产九九在线观看| 天堂在线精品视频| 激情五月六月婷婷| 免费毛片小视频| 在线观看免费视频高清游戏推荐| 亚洲一区二区三区观看| 亚洲自拍偷拍一区二区三区| 激情五月六月婷婷| 精品国产免费av| 一道本在线免费视频| 懂色av粉嫩av蜜臀av| 国产精品久久中文字幕| 18岁视频在线观看| 色姑娘综合天天| 成人免费在线网| 亚洲成人av免费看| www.色.com| 国产91美女视频| 中文字幕 日韩 欧美| 在线观看17c| aaa毛片在线观看| 国内av免费观看| 青青青免费在线| 色噜噜狠狠一区二区| bt天堂新版中文在线地址| 波多野结衣天堂| 日韩视频 中文字幕| 别急慢慢来1978如如2| 艳母动漫在线免费观看| 国产最新免费视频|