/* key.c gcc key.c -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 */ #include #include #define DEFAULT_SIZE 256 int main( int argc, char *argv[] ) { Display *dpy; int screen; Window win, root; GC gc; unsigned int win_width=DEFAULT_SIZE, win_height=DEFAULT_SIZE; XEvent event; KeySym key_sym; dpy = XOpenDisplay( NULL ); /* Xサーバに接続する */ screen = DefaultScreen( dpy ); /* スクリーン設定 */ win = XCreateSimpleWindow( /* ウィンドウを開く */ dpy, /* Xサーバ */ RootWindow(dpy,screen), /* 親ウィンドウ */ 0, 0, /* 表示時の左上隅の座標 x, y */ win_width, win_height, /* ウィンドウの幅と高さ */ 1, BlackPixel(dpy,screen),/* ボーダーの幅と色 */ WhitePixel(dpy,screen) /* ウィンドウの背景色 */ ); XSelectInput( dpy, win, ExposureMask|KeyPressMask); XMapWindow( dpy, win ); /* ウィンドウのマッピング */ gc = DefaultGC( dpy, screen ); /* グラフィックコンテキストの設定 */ XSetForeground( dpy, gc, BlackPixel(dpy,screen) ); /* 描画色設定 */ while( 1 ){ XNextEvent( dpy, &event ); switch( event.type ){ case Expose: XDrawLine( dpy, win, gc, 0, 0, win_width, win_height ); /* 線を描く */ XFlush( dpy ); /* バッファのフラッシュ */ break; case KeyPress: key_sym = XKeycodeToKeysym( dpy, event.xkey.keycode, 0 ); if( key_sym == XK_Escape ){ XDestroyWindow( dpy, win ); exit(0); } break; default: ; } } }