X!!- key_grab

X-윈도우에서 전역단축키 사용하는 방법..

#include \
#include
#include
#include
#include

int main(int argc, char *argv[])
{
Display *d;
Window x11_win;
KeyCode get_key= 0; //init?
KeySym key_code;
XEvent key_press;

if (argc < 3) {
fprintf(stderr,"Useage\nEX>: %s Alt_L \"/bin/bash\"\n", argv[0]);
exit(1);
}

d = XOpenDisplay(""); //x_display(screen) 생성
x11_win = DefaultRootWindow(d); //ID를 윈도에 돌려줌

//이거 실패했을때 가정해서 플그래밍 하래
key_code = XStringToKeysym(argv[1]); //key를 받아(xev value)
get_key = XKeysymToKeycode(d, key_code); //key_code 값으로 변환

XGrabKey(d, get_key, AnyModifier, x11_win,
True, GrabModeAsync, GrabModeAsync); //key_grab

while (1) { //키가 눌릴때까지 loop,winapi의 그것과 비슷한듯
XNextEvent(d, &key_press);

switch(key_press.type) {
case KeyRelease:
system(argv[2]); //run!
break;
default:
break;
}
}

XCloseDisplay(d);
}

구글링 해서 찾은 소스 좀 고침.-

'Programming' 카테고리의 다른 글

쉘스크립트 하는데  (7) 2008.02.04
간만에 포스팅.. 소스 고치기!  (2) 2007.10.17
Nanika를 써보고 나는 생각들  (5) 2007.06.16
c로 cp 프로그램 작성  (5) 2006.05.14
getchar 의 리턴형은..  (4) 2006.04.02