Linux驅動之觸控螢幕 單點 多點 舉列

2021-06-20 18:34:55 字數 2174 閱讀 9553

3.     多點觸控

3.1overview

多點觸控沒啥好特別的,就是把多個單點**起來,組合成一組座標值。然後上層應用對其手勢進行解析,就有了我們平常看到的兩個手指對進行縮放等功能。從linux-2.6.30才對多點觸控支援。

3.2 單點觸控和多點觸控

l  單點觸控和多點觸控都是基於輸入子系統來做,所以對於在軟體上的實現區別不是很大。

l  引數設定

單點觸控:

input_dev->evbit[0]= bit_mask(ev_key) | bit_mask(ev_abs);

input_dev->keybit[bit_word(btn_touch)]= bit_mask(btn_touch);

input_set_abs_params(input_dev,abs_x, 0, xmax, 0, 0);

input_set_abs_params(input_dev,abs_y, 0, ymax, 0, 0);

多點觸控:

__set_bit(ev_abs,input_dev->evbit);

/* fingerposition */

input_set_abs_params(input_dev,abs_mt_position_x, xmin, xmax, 0, 0);

input_set_abs_params(input_dev,abs_mt_position_y, ymin, ymax, 0, 0);

input_set_abs_params(input, abs_mt_touch_major, 0, touch_max, 0, 0);

input_set_abs_params(input, abs_mt_width_major, 0, width_max, 0, 0);

….. //可能還設定了其它的事件**

l  資料上報方式

單點觸控:

input_report_abs(input_dev,abs_x, xp);

input_report_abs(input_dev,abs_y, yp);

input_report_key(input_dev,btn_touch, 1);

input_sync(input_dev);

多點觸控:

/* 上報第乙個點*/

input_report_abs(input_dev,abs_mt_position_x, xp1);

input_report_abs(input_dev, abs_mt_position _y, yp1)

input_report_abs(priv->input, abs_mt_touch_major, value);

value的值必須是要變化的,然後觸控功能無法實現     

input_report_abs(priv->input, abs_mt_width_major, 0);

input_mt_sync(input_dev);

/* 上報第二個點*/

input_report_abs(input_dev,abs_mt_position_x, xp2);

input_report_abs(input_dev, abs_mt_position _y, yp2)

input_report_abs(priv->input, abs_mt_touch_major, value);  /* abs_mt_touch_major :觸點面積事件 */

value的值必須是要變化的,然後觸控功能無法實現     

input_report_abs(priv->input, abs_mt_width_major, 0);  /* abs_mt_width_major: 觸控工具(比如手指接觸觸控螢幕的面積)面積事件 */

input_mt_sync(input_dev);

input_sync(input_dev);

也可以將上述**簡化成:

for (i = 0; i < 2; i++)

input_sync(priv->input);

現在在核心中多點觸控驅動不是有很多,可以參考bcm5974.c,此驅動是基於mtp a類協議實現的多點觸控驅動。上次在郵件列表中看見乙個基於mtp b類協議實現的多點觸控驅動egalax_ts,不過還木有push到核心中。

多點觸控螢幕 電容屏驅動程式

上面部落格中講解了電阻屏觸控螢幕的驅動程式,它是乙個單點觸控的裝置。現在大多數裝置都支援了多點觸控,多點觸控的好處 1 利用兩個手指可以放大或縮小 2 在乙個觸控螢幕上,可以同時供多人使用 在上述這兩個簡單的例子中,單點觸控就無法實現。必須使用多點觸控,顧名思義多點觸控就是在同一時間內,螢幕上可能有...

linux驅動入門之觸控螢幕驅動

廢話不多說,直接上檔案 1.tq2440 ts sk.c include include include include include include include include include include include include include include include i...

觸控螢幕驅動

輸入子系統體系 核心層 linux dir drivers input input.c 提供最核心函式 裝置事件層 linux dir drivers input evdev.c 提供handler 提供輸入裝置產生的原始資料並上報給應用程式,這適用於 所有輸入裝置,該觸控螢幕也不例外 編寫基於輸入...