キーボード入力

2010年2月11日

ファイル

03-key.tar.gz

使い方

ウインドウにフォーカスしてキーボードのキーを押すと、メッセージが表示されます。

内容

キーボードの入力を拾うには、次のようにコールバック関数を設定します。

	g_signal_connect(win,
	  "key-press-event", G_CALLBACK(keyPress), NULL);
	g_signal_connect(win,
	  "key-release-event", G_CALLBACK(keyRelease), NULL);
  • "key-press-event": キーが押された
  • "key-release-event": キーが離された

"key-press-event", "key-release-event" のコールバック関数の第 2 引数 event の event->keyval を調べれば、どのキーが押された/離されたかがわかります。gdk_keyval_name() を使うと、キーを表わす文字列が得られます。

	printf("%s\n", gdk_keyval_name(event->keyval));

どのキーが押された/離されたかを調べるには、以下のようにします。

#include <gdk/gdkkeysyms.h>

...

gboolean keyPress(GtkWidget *widget, GdkEventKey *event, gpointer data)
{

	switch(event->keyval){
	case GDK_Left:
		...
		break;
	case GDK_Up:
		...
		break;
		...
	case GDK_a:
		...
		break;
	case GDK_b:
		...
		break;
	case GDK_Return:
		...
		break;
		...

詳細は gdk/gdkkeysyms.h を参照してください。

GTK+ プログラミング 目次へ