0

vteを使用してgtk+でターミナルアプリケーションを作成しています。タブを作成し、ctrl + tキーの組み合わせを使用してノートブックに追加すると、期待どおりにタブに新しいターミナルが追加されます。ただし、キー押下信号も端末に到達し、システムビープ音とともにコマンドプロンプトの前に「^T」として表示されます。ウィンドウレベルでキープレス信号を使用してタブを追加し、ターミナルレベルでこの特定のキープレス信号をブロックするにはどうすればよいですか?これは、すべてがどのように組み立てられるかを示すコードのブロックです。

  window_main = gtk_window_new (GTK_WINDOW_TOPLEVEL);

  vte = vte_terminal_new();
  terminal = VTE_TERMINAL (vte);

  notebook = gtk_notebook_new ();

  vbox = gtk_vbox_new(FALSE,0);
  gtk_container_add (GTK_CONTAINER (window_main), vbox);
  gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);  

  scrollwin[0] = gtk_scrolled_window_new (NULL, terminal->adjustment);
  gtk_container_add(GTK_CONTAINER(scrollwin[0]),vte);
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin[0]), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);

  label = gtk_label_new ("term1");
  gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scrollwin[0], label);

ありがとう。

4

1 に答える 1

1

Windowsは、最初にキープレスイベントでクラックを取得し、次にフォーカスチェーンを上っていきます。信号ハンドラーが戻るtrueと、この伝播が停止します。したがって、true処理するときにキープレス信号ハンドラーから戻る場合ctrl-t(または伝播したくない他のキープレス)、用語ウィジェットに移動しないようにする必要があります。

于 2012-07-05T20:03:03.487 に答える