私のバーコードスキャナは、数字のラインを吹くキーボードのように機能します。私はそれが常に動作するように、私はテキストエントリを使用しないで、私のウィンドウのキープレスイベントに接続します。残念ながら、これは他のテキストエントリにフォーカスがあるときにも生成されます。 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. 入れ子になったforループが私の望むように動作していません
- 5. jqueryデモが動作していない、どのように?
- 6. vb.netアプリケーションが他のコンピュータで動作していませんか?
- 7. forループは、特に(;;)に対してどのように動作しますか?
- 8. どのようにFile.js(Javaスクリプトファイル)を実行し、特定のページに読み込んで他のページに読み込まないようにしますか?
- 9. Jqueryはどのように動作していますか?
- 10. mvc4バンドル、どのように動作していますか?
- 11. raphael.jsがSVGをサポートしていない場合、古いブラウザではどのように動作しますか?
- 12. Flex 3:キーボードイベントがスプライトに到達しないようにする
- 13. どうしてwxpythonのScrolledPanelがこのように動作しないのですか?次のコードは動作しない理由を私は知らない
- 14. Execメソッドが1つのメソッドで動作していて、他のメソッドでは動作していません
- 15. MultyQueryがphpmyadminで動作し、Mysqliで動作していない、他のサーバで動作していた
- 16. どのタイプの継承がより望ましいですか?
- 17. WPFは開発マシンで正常に動作していますが、他のマシンでは動作しません。
- 18. ナビゲーションサブメニュー(UL)が浮動しているように動作しないようにしますか?
- 19. NSPanelはクリックできませんが、キーボードイベントは動作します
- 20. コードビハインドのデータバインディングが動作しないようにします
- 21. バンドルがうまく動作していないようです
- 22. FileSystemWatcherは他のコンピュータのディレクトリでどのように動作しますか?
- 23. コードはFirefoxで正常に動作していますが、Chromeでは動作しません。どうして?
- 24. デザイナーはどのようにLineウィジェットを作成しますか?
- 25. QGridLayoutのウィジェットが重複しないようにするにはどうすればいいですか?
- 26. Slickカルーセルでイベントが発生したときに、どのようにすべての動画が再読み込みされないようにしますか?
- 27. do whileループは、私が望むように動作させるにはどうすればいいですか?
- 28. CSSがサブドメインで動作していないようですか?
- 29. どのjQueryイベントハンドラがページの読み込みに対応していますか?
- 30. アプリは他のユーザーにのみ動作しますが、他のユーザーには使用できません
は、同様に他のすべてのハンドラからTRUEを返すことを忘れないでください、このフィルタリングに役立つだろうと言っ送信するようにバーコードスキャナを設定してみてください。 – user877329