0

XCB を使用して、ウィンドウのマウス ポインターを標準のハンド カーソルに変更する必要があります (Linux での意味が何であれ、ツールキットに依存しないソリューションが必要です)。

注: 「カーソル」フォントをロードし、ウィンドウ属性 XCB_CW_CURSOR を XC_hand2 に変更することは解決策ではありません。これにより、リンクをホバーしたときに Chrome で表示されるデフォルトの Ubuntu ハンド カーソルではなく、X11 の見慣れないハンド カーソルが読み込まれます。

ありがとう。

4

1 に答える 1

2

どうやら、次のことを行う必要があります。

  1. 古い Linux には含まれていないため、xcb/util-cursorをダウンロードしてビルドします。
  2. それを使用してカーソルをロードします(「テーマカーソル」と呼ばれます)
  3. カーソル名は標準化されていないため、多数のカーソル名を試してみてください。

「ハンド」カーソルをロードするためのコード ( ref ):

xcb_cursor_context_t *ctx;
if (xcb_cursor_context_new(connection, defaultScreen, &ctx) >= 0) {
   xcb_cursor_t cursor = xcb_cursor_load_cursor(ctx, "pointing_hand");
   if (cursor == XCB_CURSOR_NONE) // they come with various names ...
      cursor = xcb_cursor_load_cursor(ctx, "hand2");
   if (cursor == XCB_CURSOR_NONE)
      cursor = xcb_cursor_load_cursor(ctx, "hand");
   if (cursor == XCB_CURSOR_NONE)
      cursor = xcb_cursor_load_cursor(ctx, "hand1");
   if (cursor == XCB_CURSOR_NONE)
      cursor = xcb_cursor_load_cursor(ctx, "pointer");
   if (cursor == XCB_CURSOR_NONE)
      cursor = xcb_cursor_load_cursor(ctx, "e29285e634086352946a0e7090d73106");
   if (cursor == XCB_CURSOR_NONE)
      cursor = xcb_cursor_load_cursor(ctx, "9d800788f1b08800ae810202380a0822");
   if (cursor != XCB_CURSOR_NONE) {
      xcb_change_window_attributes(connection, window, XCB_CW_CURSOR, &cursor);
   }
   xcb_cursor_context_free(ctx);
}
于 2015-07-18T12:14:31.817 に答える