GTK3版スレビューのタッチスクリーン操作 - ma8ma/JDim GitHub Wiki

GTK3版スレビューのタッチスクリーン操作

edit(2019-02-07): リンクを更新
edit: タッチスクリーン操作は上流masterブランチにマージされた (JDimproved#39)

ここではGTK3版スレビューのタッチスクリーン対応を説明する。 タッチ機能はテスト段階なので常用ブランチ(master)にはコミットされていない。 タッチ機能をテストするにはgtk3-previewブランチを使ってJDをビルドする必要がある。(詳細はリンクを参照)

パッチ無しの状態

GTK3版ではタッチスクリーンのタップ操作でマウスの左クリックをエミュレートする(GTK+3の機能)。また GtkScrolledWindow はスワイプによるスクロールに対応しているためJDのスレ一覧や板一覧ではタッチ操作によるスクロールが動作する。しかしスレビューは GtkScrolledWindow を利用していないので領域内でスワイプが動作せずスクロールバーを使わないといけない。

対応の要件

公開しているパッチではタッチスクリーン対応にGtkGesture APIを使っている。このためGTK+ 3.14未満ではタッチ操作を実装してない(GTK+3のタッチ対応はGTK+ 3.4以上)。GtkGesture を使わない場合はタッチ操作の動きの検出や判定を自前で実装しなければならないのでサポートが難しい。

環境変数

環境変数を設定してJDを起動することで動作を切り替えることができる。変数自体の有無で動作を切り替えるため値は任意。

変数 効果
GDK_CORE_DEVICE_EVENTS XInputの拡張機能(i.e. タッチスクリーン操作)を無効にする
GTK_TEST_TOUCHSCREEN マウスのクリック、ドラッグでタッチスクリーンのタップ、ドラッグをエミュレートする

マウス操作とタッチスクリーン操作の対応表 (gtk3-previewブランチ)

N/Aは実装されていない操作

マウス タッチスクリーン 操作 タッチ操作確認
左クリック タップ URLを開く、リンクのコンテキストメニューを開く :heavy_check_mark:
左ダブルクリック ダブルタップ テキストの範囲選択(単語) :heavy_check_mark:
左トリプルクリック N/A [1] テキストの範囲選択(一行) :heavy_check_mark:
右クリック 2本指タップ テキストのコンテキストメニューを開く、リンクのポップアップを表示する :heavy_check_mark:
中クリック N/A オートスクロールの開始 :heavy_check_mark:
(左,右,中)クリック タップ? テキストの範囲選択解除、オートスクロールの解除 :heavy_check_mark:
左ドラッグ ドラッグ [2] テキストの範囲選択+スクロール :heavy_check_mark:
右ドラッグ N/A マウスジェスチャー :heavy_check_mark:
スクロールホイール N/A スクロール :heavy_check_mark:
マウスオーバー N/A ポインターアイコンの変更、リンクのポップアップ(デフォルトではアンカー>>xxxのみ) :heavy_check_mark:
N/A 縦スワイプ スクロール+慣性スクロール :heavy_check_mark:

課題

edit(2019-01-17): v4パッチの動作を確認。Thanks to @tack1953 for testing.
edit(2019-02-07): リストを更新

  • パッチv4の動作確認(上記表の:question:を埋める)
  • 右クリックは2本指タップに対応付けて問題ないか。ロングタップ(長押し)に割り当てる情報もあった。 → 二本指タップが共通の操作なので変更しない。
  • タッチ操作のドラッグによるテキストの範囲選択を実装するか。 → v4パッチで動作する [2]
  • オートスクロールをタッチ操作で利用できるようにするか。 → 実装しない
  • トリプルタップはダブルタップと混同しやすいので削除する[1]
  • gtk3-previewブランチにタッチスクリーン対応をマージする(#24)