Programming
X!!- key_grab
Lowid
2007. 2. 26. 00:49
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);
}
구글링 해서 찾은 소스 좀 고침.-
#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);
}
구글링 해서 찾은 소스 좀 고침.-