1

ウィジェットのハンドラー内からCtrl+Pシーケンス (長押しrightまたはキーleft Ctrlを押す)などのキーの組み合わせを検出する方法を探しています。修飾キーが押されているかどうかを簡単に確認する方法はないようです。Pkey_press_event

不格好な方法は次のとおりです。

  1. keypresskey-releaseハンドラの両方を作成してバインドする
  2. 気になる修飾キーのプレスとリリースを保存して、いつ押されたかを知ることができます ( rightandleft Ctrlなどのキーは異なります)
  3. 気になる文字キーの押下を検出し、どの修飾キーが押されているかによって異なる処理を行います。

AccelGroup (以下の回答を参照) はほとんどの目的で機能するようですが、ウィジェットごとではなくウィンドウごとです。

4

2 に答える 2

3

キー プレス イベントを取得すると、イベント構造体 (GdkEventKey) には、state現在押されている修飾子 (マウス ボタンを含む) を通知するメンバーが呼び出されます。gtk_accelerator_get_default_mod_maskcaps-lock や num-lock などをマスクするには、Ruby バージョンの状態をマスクする必要があります。

于 2013-09-26T09:12:59.900 に答える
1

アクセラレータ グループは、私が探していたことのほとんどを行っているようです。Ruby のドキュメントはhttp://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?Gtk%3A%3AAccelGroupにあります。

AccelGroup はキーの組み合わせをブロックまたはクロージャーにバインドできるようで、AccelGroup はウィンドウに追加されます。

「another.anon.coward」にハットチップと+1。

(ただし、ウィジェットごとではなく、ウィンドウごとです。)

于 2013-09-24T21:17:35.517 に答える