私のバーコードスキャナは、数字のラインを吹くキーボードのように機能します。私はそれが常に動作するように、私はテキストエントリを使用しないで、私のウィンドウのキープレスイベントに接続します。残念ながら、これは他のテキストエントリにフォーカスがあるときにも生成されます。 AFAIKは、ウィンドウが最初にイベントを受け取るので、ショートカットをチェックしてから、それらを渡します。ウィジェットがウィジェットを処理しない場合、何かがウィンドウに戻って伝播しますか?私はどのようにgtk_window_key_press_event(の要約を貼り付けます他のウィジェットが望んでいないキーボードイベントに対してのみ、どのように動作しますか?
答えて
)が動作します。
gboolean
gtk_window_propagate_key_event (GtkWindow *window,
GdkEventKey *event)
{
gboolean handled = FALSE;
focus = window->focus_widget;
while (!handled)
{
GtkWidget *parent;
handled = gtk_widget_event (focus, event);
focus = gtk_widget_get_parent (focus);
}
return handled;
}
static gint
gtk_window_key_press_event (GtkWidget *widget,
GdkEventKey *event)
{
GtkWindow *window = GTK_WINDOW (widget);
gboolean handled = FALSE;
/* handle mnemonics and accelerators */
if (!handled)
handled = gtk_window_activate_key (window, event);
/* handle focus widget key events */
if (!handled)
handled = gtk_window_propagate_key_event (window, event);
/* Chain up, invokes binding set */
if (!handled)
handled = GTK_WIDGET_CLASS (gtk_window_parent_class)->key_press_event (widget, event);
return handled;
}
これは基本的に意味:キーはニーモニックのために適切であるかどう
は、参照してください(下線を持っているつまり、ラベル)またはアクセラレータ(GtkAccelGroupから)。
フォーカスされたウィジェットから開始し、コンテナ階層を上って、キー押しを処理するウィジェットがあるかどうかを確認してください。
キー押しをGtkWindowの親クラスに渡します。それを扱う最も近い親はGtkWidgetであり、それはgtk_binding_entry_add()からのバインディングを扱うことによってそうする。
g_signal_connect_after()を代わりに実行してください。これにより、上記のシーケンスにもう一つのフォールバックが効果的に追加されます。つまり、「デフォルトのシグナルハンドラを実行した後でシグナルハンドラを実行する」ということです。 すべて未処理のキー押し(たとえば、あなたのアプリが処理しないファンクションキーを押した場合など)を捕まえることになるので、ハンドラに到達する唯一のものがバーコードスキャナから来ていると仮定しないでください。
は、バーコードの番号のALTの数字(または類似)のではなく数字が、これは
デフォルトのスキャナはALTに設定されておらず、エンドユーザはスキャナの設定方法を知っていません。バーコードと他の入力とを区別するためのタイミングとチェックサムに頼っています。 – Tobias
- 1. C:scanfが私の望むように動作しない
- 2. float.Parse()が私の望むように動作しません
- 3. バイト[]文字列変換が私の望むように動作していないようです。
- 4. AcceptOnceFileFilterはCompositeFileListFilter内で他のフィルタが動作しないようにします
- 5. 入れ子になったforループが私の望むように動作していません
- 6. jqueryデモが動作していない、どのように?
- 7. ツールチップは、私がツールチップを作るしようとしているが、私が望むように動作していないのです
- 8. forループは、特に(;;)に対してどのように動作しますか?
- 9. vb.netアプリケーションが他のコンピュータで動作していませんか?
- 10. クローンされたプレハブは私の望みに対してカメラを自動的に追い越しています
- 11. どのようにFile.js(Javaスクリプトファイル)を実行し、特定のページに読み込んで他のページに読み込まないようにしますか?
- 12. 他の 'プロセス'が動作していない場合にのみファイルを読む
- 13. wwwとhttpsリダイレクトが希望どおりに動作しない
- 14. tcl/tkスクリプトが希望どおりに動作しない
- 15. Jqueryはどのように動作していますか?
- 16. mvc4バンドル、どのように動作していますか?
- 17. Wordpressのウィジェットが正しく動作していない
- 18. 私のワードプレスのパーマリンク構造は、私が望むように動作していません
- 19. Flex 3:キーボードイベントがスプライトに到達しないようにする
- 20. CSSO npmが動作していない間に他の人が
- 21. preg_matchは1台のサーバーで動作していますが、他のサーバーでは動作していません
- 22. SQL "BETWEEN"要求が私の望むように動作しません
- 23. Jetty/GAEがさまざまなコンテキストパスに対して新しいセッションを作成しないようにするにはどうすればよいですか?
- 24. がScrollmagicプラグインは一例として、望ましい動作に
- 25. raphael.jsがSVGをサポートしていない場合、古いブラウザではどのように動作しますか?
- 26. どうしてwxpythonのScrolledPanelがこのように動作しないのですか?次のコードは動作しない理由を私は知らない
- 27. どのタイプの継承がより望ましいですか?
- 28. データベースダンプの作成が動作していないようです
- 29. どのようにダイレクトモードがsqoopで動作していますか?
- 30. デザイナーはどのようにLineウィジェットを作成しますか?
は、同様に他のすべてのハンドラからTRUEを返すことを忘れないでください、このフィルタリングに役立つだろうと言っ送信するようにバーコードスキャナを設定してみてください。 – user877329