Stylus/tablet click (ButtonPress) not registering in desktop (CEF) build when device uses absolute positioning — works in Relative mode, in browser, and with physical mouse

オープン
#4,384 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
linux, rust
領域
desktop

調査の方向性

まず Graphite desktop Flatpak で問題を再現し、調査の詳細と #2535 をコンテキストとして使用して、絶対モードと相対モードのタブレットイベントに対する CEF ベースの入力処理を比較します。disable_ui_acceleration をこのバグとは切り分けたままにするため、必要な場合にのみ preferences.ron を調べます。絶対モードのペンの ButtonPress および ButtonRelease イベントが UI と viewport で機能し、マウス入力や相対モード入力にリグレッションを起こさないことをもって完了とします。

索引モデルが issue の本文から書いたものです。

説明

Describe the Bug

On Linux (Flatpak build), a graphics tablet's pen click does not register in the desktop app's CEF-rendered UI or viewport when OpenTabletDriver is configured in Absolute mode (normal tablet-to-screen 1:1 mapping), even though:

  • The exact same tablet/pen works correctly in the web version at https://editor.graphite.art/ (in Chromium), also in Absolute mode
  • A physical USB mouse clicks normally in the desktop app
  • xdotool click 1 (synthetic XTEST click) also fails to register in the desktop app
  • Switching OpenTabletDriver to Relative mode makes clicking work correctly in the desktop app — this isolates the bug to something specific about how absolute-positioning tablet devices are handled, since relative mode is otherwise unusable for real drawing (no 1:1 tablet-to-screen mapping)

Cursor motion from the tablet works perfectly in Absolute mode in the desktop app — only button press/release events fail to have any effect while in that mode.

Environment
  • OS: Void Linux, X11 (picom compositor, XFCE)
  • Graphite: desktop Flatpak build (art.graphite.Graphite), downloaded ~July 2026
  • Tablet driver: OpenTabletDriver 0.6.7 (Flatpak)
  • Tablet: Huion H1161
  • GPU: AMD (RADV/Mesa)
Steps To Reproduce
  1. Install OpenTabletDriver via Flatpak, configure tablet in Absolute mode ("Artist Mode" preset) with tip bound to Mouse Button: Left
  2. Install Graphite via Flatpak
  3. Launch Graphite desktop app
  4. Attempt to click/draw with the stylus tip on the canvas or any UI button
  5. Motion works; the click has no effect
  6. Switch OpenTabletDriver to Relative mode, click Apply, retest — clicking now works correctly
Investigation so far
  • xinput test-xi2 confirms the pen's ButtonPress/ButtonRelease arrive as genuine X11 core-protocol events from the same device (OpenTabletDriver Virtual Tablet, XI2 id 19) that generates the working motion events — not routed through the XTEST virtual pointer (id 4)
  • udevadm info confirms the OTD virtual device is tagged ID_INPUT_MOUSE=1
  • libinput list-devices shows the OTD virtual device's Capabilities: pointer, but its DeviceChanged XI2 announcement in Absolute mode includes absolute X/Y valuators plus an XIScrollClass (relative horizontal/vertical scroll valuators) — attributes a plain mouse does not have
  • A real physical USB mouse (no absolute valuators, no scroll-class) clicks Graphite's UI/canvas without any issue in either mode
  • xdotool click 1 (XTEST-injected click) also fails silently in the desktop app while in Absolute mode
  • Confirmed: switching the same physical tablet/driver to Relative mode (removing absolute valuators from the device's XI2 announcement) makes clicks work correctly again

This strongly suggests Graphite's CEF-embedded input handling (see #2535, the CEF-based desktop architecture) filters or mis-routes button events specifically from devices that report absolute positioning valuators, rather than a general click-handling bug — since motion, physical mouse clicks, and relative-mode tablet clicks all work fine, and only absolute-mode tablet clicks fail.

Additional Details
  • Toggling Preferences → Render GUI on CPU (disable_ui_acceleration in preferences.ron) fixed an unrelated issue where the GUI failed to render at all, but did not affect this click bug.
  • Happy to provide further logs/testing (e.g. libinput debug-events, CEF verbose logging flags) if useful for triage.
主要言語
Rust
スター
27.8k
フォーク
1.3k
平均マージ
10時間 53分
マージ済み PR(30日)
195

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

  • Dockerfile・Docker Compose ファイルなし
  • プルリクエストのテンプレートあり
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

GraphiteEditor/Graphite のほかの issue

GraphiteEditor/Graphite の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。