[Armadillo:09065] Re: Armadillo-800EVA,Tslibのサポートできない問題

nakai email@hidden
2013年 7月 24日 (水) 18:47:25 JST


nakaiです。

マルチタッチイベントではなくて、通常のタッチイベントにすることで
tslibを利用できるようにする方法もあります。

linuxカーネルに次のようなパッチをあてることで、
tslibで利用できたと思います。


diff --git a/drivers/input/touchscreen/st1232.c b/drivers/input/touchscreen/st1232.c
index 4ab3713..170123d 100644
--- a/drivers/input/touchscreen/st1232.c
+++ b/drivers/input/touchscreen/st1232.c
@@ -26,6 +26,8 @@
 #include <linux/slab.h>
 #include <linux/types.h>

+#define FORCE_SINGLE_EVENT
+
 #define ST1232_TS_NAME	"st1232-ts"

 #define MIN_X		0x00
@@ -100,11 +102,27 @@ static irqreturn_t st1232_ts_irq_handler(int irq, void *dev_id)
 	struct input_dev *input_dev = ts->input_dev;
 	int count = 0;
 	int i, ret;
+	static int pendown = 0;

 	ret = st1232_ts_read_data(ts);
 	if (ret < 0)
 		goto end;

+#ifdef FORCE_SINGLE_EVENT
+	for (i = 0; i < 1; i++) {
+		if (!finger[i].is_valid) {
+			pendown = 0;
+			input_report_key(input_dev, BTN_TOUCH, 0);
+			input_report_abs(input_dev, ABS_PRESSURE, 0);
+		} else {
+			if (pendown++ == 0)
+				input_report_key(input_dev, BTN_TOUCH, 1);
+			input_report_abs(input_dev, ABS_PRESSURE, 1);
+			input_report_abs(input_dev, ABS_X, finger[i].x);
+			input_report_abs(input_dev, ABS_Y, finger[i].y);
+		}
+	}
+#else
 	/* multi touch protocol */
 	for (i = 0; i < MAX_FINGERS; i++) {
 		if (!finger[i].is_valid)
@@ -120,6 +138,7 @@ static irqreturn_t st1232_ts_irq_handler(int irq, void *dev_id)
 	/* SYN_MT_REPORT only if no contact */
 	if (!count)
 		input_mt_sync(input_dev);
+#endif

 	/* SYN_REPORT */
 	input_sync(input_dev);
@@ -164,9 +183,16 @@ static int __devinit st1232_ts_probe(struct i2c_client *client,
 	__set_bit(EV_KEY, input_dev->evbit);
 	__set_bit(EV_ABS, input_dev->evbit);

+#ifdef FORCE_SINGLE_EVENT
+	input_dev->keybit[BIT_WORD(BTN_TOUCH)] = BIT_MASK(BTN_TOUCH);
+	input_set_abs_params(input_dev, ABS_PRESSURE, 0, 1, 0, 0);
+	input_set_abs_params(input_dev, ABS_X, MIN_X, MAX_X, 0, 0);
+	input_set_abs_params(input_dev, ABS_Y, MIN_Y, MAX_Y, 0, 0);
+#else
 	input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, 0, MAX_AREA, 0, 0);
 	input_set_abs_params(input_dev, ABS_MT_POSITION_X, MIN_X, MAX_X, 0, 0);
 	input_set_abs_params(input_dev, ABS_MT_POSITION_Y, MIN_Y, MAX_Y, 0, 0);
+#endif

 	error = request_threaded_irq(client->irq, NULL, st1232_ts_irq_handler,
 				     IRQF_ONESHOT, client->name, ts);


(2013年07月24日 18:40), nakai wrote:
> nakaiです。
> 
> tslibがマルチタッチイベントに対応していないために、
> 利用できない状態だと思います。
> 
> 「tslib multitouch」
> などのキーワードで検索すると、マルチタッチ対応の
> パッチを見つけることができます。
> 
> 試してはいませんが、もしかすると利用できるものがあるかもしれません。
> # ↓このような奴です
> # ttp://repository.timesys.com/buildsources/t/tslib/tslib-1.0/tslib-1.0-add-multitouch-support.patch
> 
> 
> 補足情報:
> Armadillo-840 (Debian 7.x)では、mtdevパッケージ[1]を利用しています。
> [1]: http://packages.debian.org/wheezy/libmtdev1
> 
> --
> nakai
> 
> 
> 
> (2013年07月24日 18:03), 馬 国鋒 wrote:
>>  MCSの馬と申します。
>>
>>  Armadillo-800EVAでソフト開発を行なっておりますが、
>> タッチパネルの制御のところで
>> うまく動かせなくて困っている点がございます。
>>
>>  質問内容は下記「参考」のとおりですが、
>> もしわかりましたらご教授頂けると助かります。
>>
>>      参考:
>>      1.動作環境
>>      ①ハードウェア
>>      Armadillo-800 EVA
>>      ②OS
>>      プリインストールされているDebian GNU/Linux 6.0
>>      ③使用ライブラリ
>>      Tslib
>>      2.現象
>>      Tslib をインストールして、./ts_calibrate を実行(コマンドライン実
>>      行)しても,タッチパネルが
>>      反応しない。以下のエラーが表示されます。
>>      xres= 800, yres = 480 selected device uses is not a touchscreen
>>      (must support ABS_X and
>>      ABS_Y events)
>>      selected device is not a touchscreen I understand
>>      3.その他
>>      ①cat /dev/input/event1 またはevtest /dev/input/event1 で動作は確認し
>>      た。
>>      ②Tslib 環境変数の設定
>>      export TSLIB_TSEVENTTYPE=INPUT
>>      export TSLIB_CONSOLEDEVICE=none
>>      export TSLIB_FBDEVICE=/dev/fb0
>>      export TSLIB_TSDEVICE=/dev/input/event1
>>      export TSLIB_CALIBFILE=/etc/pointercal
>>      export TSLIB_CONFFILE=/etc/ts.conf
>>      export TSLIB_PLUGINDIR=/usr/local/lib/ts
>>      export LD_LIBRARY_PATH=/usr/local/lib
>>      ③Tslib のインストール方法は色々試しました。
>>      ・apt-get install tslib
>>      ・Tslib のソースをatde4 でクロスコンパイルして作成など
>>      以上、お手数をおかけいたしますがよろしくお願いいたします。
>>
>>
>>
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo



armadillo メーリングリストの案内