tablet unstable v2

zwp_tablet_manager_v2
zwp_tablet_manager_v2_get_tablet_seatzwp_tablet_seat_v2 を作成
zwp_tablet_manager_v2_destroy破棄
zwp_tablet_seat_v2
zwp_tablet_seat_v2_add_listenerハンドラ設定
zwp_tablet_seat_v2_destroy破棄
zwp_tablet_v2
zwp_tablet_v2_add_listenerハンドラ設定
zwp_tablet_v2_destroy破棄
zwp_tablet_tool_v2
zwp_tablet_tool_v2_destroy破棄
zwp_tablet_tool_v2_add_listenerハンドラ設定
zwp_tablet_tool_v2_set_cursorカーソル形状のセット
"zwp_tablet_manager_v2" でバインド。
zwp_tablet_manager_v2
static struct zwp_tablet_seat_v2 *zwp_tablet_manager_v2_get_tablet_seat(
    struct zwp_tablet_manager_v2 *zwp_tablet_manager_v2,
    struct wl_seat *seat);
zwp_tablet_seat_v2 を作成
static void zwp_tablet_manager_v2_destroy(
    struct zwp_tablet_manager_v2 *zwp_tablet_manager_v2);
破棄
zwp_tablet_seat_v2
static int zwp_tablet_seat_v2_add_listener(
    struct zwp_tablet_seat_v2 *zwp_tablet_seat_v2,
    const struct zwp_tablet_seat_v2_listener *listener, void *data);
ハンドラ設定。

void (*tablet_added)(void *data, struct zwp_tablet_seat_v2 *zwp_tablet_seat_v2,
    struct zwp_tablet_v2 *id);

void (*tool_added)(void *data, struct zwp_tablet_seat_v2 *zwp_tablet_seat_v2,
    struct zwp_tablet_tool_v2 *id);

void (*pad_added)(void *data, struct zwp_tablet_seat_v2 *zwp_tablet_seat_v2,
    struct zwp_tablet_pad_v2 *id);
tablet_added
新しいデバイスが利用可能になった時。
アプリケーションの起動時や、デバイスが接続された時に来る。
tool_added
タブレットで新しいツールが使用された時。

スタイラスペンの場合、アプリ起動後にまだ使っていないツール (ペン/消しゴムなど) を手にしている状態で、カーソルが初めてクライアントのウィンドウ内に入った時に来る。
pad_added
新しいパッドが認識された時。

通常は tablet_added の直後に来るが、一部のデバイスでは、wp_table_pad:enter イベントでパッドが認識されるまで待つ必要がある。
static void zwp_tablet_seat_v2_destroy(
    struct zwp_tablet_seat_v2 *zwp_tablet_seat_v2);
破棄
zwp_tablet_v2
static int zwp_tablet_v2_add_listener(struct zwp_tablet_v2 *zwp_tablet_v2,
    const struct zwp_tablet_v2_listener *listener, void *data);
ハンドラ設定。

void (*name)(void *data, struct zwp_tablet_v2 *zwp_tablet_v2, const char *name);
void (*id)(void *data, struct zwp_tablet_v2 *zwp_tablet_v2, uint32_t vid, uint32_t pid);
void (*path)(void *data, struct zwp_tablet_v2 *zwp_tablet_v2, const char *path);
void (*done)(void *data, struct zwp_tablet_v2 *zwp_tablet_v2);
void (*removed)(void *data, struct zwp_tablet_v2 *zwp_tablet_v2);
name
デバイスの名前。
id
デバイスの USB のベンダー ID と製品 ID。
path
デバイスへのパス。
libwacom でこのパスを使って、追加情報を取得できる。

一つのデバイスに複数のパスがある場合は、複数送信される。
また、パスがない場合は、送信されない。
done
上記の情報の送信が終了した時に来る。
removed
タブレットが取り外された時に来る。
zwp_tablet_v2 を破棄する必要がある。
static void zwp_tablet_v2_destroy(struct zwp_tablet_v2 *zwp_tablet_v2);
破棄
zwp_tablet_tool_v2
static void zwp_tablet_tool_v2_destroy(
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2);
破棄
static int zwp_tablet_tool_v2_add_listener(
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    const struct zwp_tablet_tool_v2_listener *listener, void *data);
ハンドラ設定。

void (*type)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t tool_type);

void (*hardware_serial)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    uint32_t hardware_serial_hi, uint32_t hardware_serial_lo);

void (*hardware_id_wacom)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    uint32_t hardware_id_hi, uint32_t hardware_id_lo);

void (*capability)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t capability);

void (*done)(void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2);

void (*removed)(void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2);

void (*proximity_in)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t serial,
    struct zwp_tablet_v2 *tablet, struct wl_surface *surface);

void (*proximity_out)(void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2);

void (*down)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t serial);

void (*up)(void *data, struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2);

void (*motion)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, wl_fixed_t x, wl_fixed_t y);

void (*pressure)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t pressure);

void (*distance)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t distance);

void (*tilt)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    wl_fixed_t tilt_x, wl_fixed_t tilt_y);

void (*rotation)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, wl_fixed_t degrees);

void (*slider)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, int32_t position);

void (*wheel)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    wl_fixed_t degrees, int32_t clicks);

void (*button)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2,
    uint32_t serial, uint32_t button, uint32_t state);

void (*frame)(void *data,
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t time);
type
ツールの種類。
"linux/input-event-codes.h" 内に定義されている BTN_TOOL_* の値と同じ。

enum zwp_tablet_tool_v2_type {
 ZWP_TABLET_TOOL_V2_TYPE_PEN = 0x140,
 ZWP_TABLET_TOOL_V2_TYPE_ERASER = 0x141,
 ZWP_TABLET_TOOL_V2_TYPE_BRUSH = 0x142,
 ZWP_TABLET_TOOL_V2_TYPE_PENCIL = 0x143,
 ZWP_TABLET_TOOL_V2_TYPE_AIRBRUSH = 0x144,
 ZWP_TABLET_TOOL_V2_TYPE_FINGER = 0x145,
 ZWP_TABLET_TOOL_V2_TYPE_MOUSE = 0x146,
 ZWP_TABLET_TOOL_V2_TYPE_LENS = 0x147 
}
hardware_serial
ツールの一意のハードウェアシリアル番号。
ツールが 64 bit シリアルで識別できる場合、送られてくる。
hardware_id_wacom
Wacom 製タブレット固有の 64 bit ハードウェア ID。
capability
ツールが使用可能な機能ごとに送られてくる。

enum zwp_tablet_tool_v2_capability {
 ZWP_TABLET_TOOL_V2_CAPABILITY_TILT = 1,     //傾き
 ZWP_TABLET_TOOL_V2_CAPABILITY_PRESSURE = 2, //筆圧
 ZWP_TABLET_TOOL_V2_CAPABILITY_DISTANCE = 3, //接地面との距離
 ZWP_TABLET_TOOL_V2_CAPABILITY_ROTATION = 4, //回転
 ZWP_TABLET_TOOL_V2_CAPABILITY_SLIDER = 5,   //スライダー
 ZWP_TABLET_TOOL_V2_CAPABILITY_WHEEL = 6     //ホイール
}
done
ツールのすべての情報イベントが終了した時に来る。
removed
ツールがシステムから削除された時に来る。
zwp_tablet_tool_v2 を破棄する必要がある。
proximity_in
このツールが特定のサーフェスに焦点を合わせている。
カーソルがサーフェス内に入った時。
proximity_out
特定のサーフェスから焦点が離れた。
カーソルがサーフェス外に出た時。
down
ツールがタブレットの表面に接触した時。

※ 一部のデバイスでは、接触していても、筆圧が最小値を超えるまで接触していないことにする場合がある。

すでに接触している状態で領域に入った時は、proximity_in → down → frame イベントが来る。
up
ツールがタブレット接地面から離れた時。

タブレットの表面からツールが離されたか、グラブ中に入力領域を離れた状態で、グラブが終了した時に来る。

グラブをしていない状態で、down 状態のまま領域を離れた時は、up → proximity_out → frame イベントが来る。

グラブ中の場合は、グラブが終了した時に常に来る。
motion
ツールが移動した時。
pressure
筆圧が変わった時。
値は 0〜65535 に正規化されている。
distance
ツールとタブレット接地面との距離が変わった時。

値は 0〜65535 に正規化されている。
0 で接地している状態。
tilt
傾きが変わった時。
値は、タブレットの z 軸を基準とした度の単位。
rotation
z 回転が変わった時。
値は、ツールの論理的な中立位置から時計回りの度単位。
slider
スライダー位置が変わった時。
値は -65535〜65535 で正規化され、中立位置は 0。
wheel
ホイールが操作された時。

degrees は、度単位の方向。
clicks は、論理的なクリック数。0 になる場合もある。
クライアントはこのどちらかを使う必要がある。
button
タブレットやペンに付いているボタンが、押されたか離された時。

button は、"linux/input-event-codes.h" で定義されている値。

enum zwp_tablet_tool_v2_button_state {
 ZWP_TABLET_TOOL_V2_BUTTON_STATE_RELEASED = 0,
 ZWP_TABLET_TOOL_V2_BUTTON_STATE_PRESSED = 1 
}
frame
一連のイベントをひとつにまとめ、それらが終了するたびに来る。
time は、ミリ秒単位の時間。
static void zwp_tablet_tool_v2_set_cursor(
    struct zwp_tablet_tool_v2 *zwp_tablet_tool_v2, uint32_t serial,
    struct wl_surface *surface, int32_t hotspot_x, int32_t hotspot_y);
タブレットの各ツールごとのカーソル形状をセットする。

ツールがクライアントのサーフェスのいずれかの上にある場合、または surface が現在のポインタ形状として使われている場合のみ有効。

surface に wp_tablet_tool カーソルとしての役割を与える。
サーフェスにすでに別の役割がある場合、または別のツールのカーソルとして使われていた場合、プロトコルエラーが発生する。
surface
NULL で非表示