이거 Xorg 의 버그같은데 Xfree86 쓰시는 분 확인좀 부탁드려요.
아래 코드는 xorg 서버에서 실행시키면 'z' 가 연속해서 찍힙니다.
예전의 XFree86 3.3.6 또는 4.2 에서는 'z' 가 한번만 찍혔던 걸로
기억하는데 확실한지 자신이 없네요. Xorg 대신 아직 XFree86
쓰시는 분들 계시면 죄송합니다만 시간되시면 실행좀 시켜봐
주세요. 사용하고계신 X 서버의 버전도 같이 알려주세요.
첨부파일에 바이너리로도 올려둘께요.
'z' 가 한번만 찍히는지 계속 찍혀나가는지만 가르쳐주시면
됩니다. 미리 감사드려요.
컴파일해보시려면 다음 옵션으로 주시면 됩니다.
gcc -I /usr/X11R6/include -L /usr/X11R6/lib -lX11 -lXtst -Wall -o ./test2 ./test2.c
<소스코드>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/extensions/XTest.h>
Display *d;
int main(int argc, char** argv) {
d = XOpenDisplay(NULL);
printf("hello\n");
XTestFakeKeyEvent(d, 52, 1, 0); /* keycode 52 = 'z' */
XFlush(d);
return 0;
}
x.org 6.8.2-r6gentoo 특성상 xserver없이 돌
x.org 6.8.2-r6
gentoo 특성상 xserver없이 돌아가구요...
한번만 찍히네염.
감사합니다. 손님. (또 오세요. ^.^)Xserver 가 없을수
감사합니다. 손님. (또 오세요. ^.^)
Xserver 가 없을수도 있나 싶어 헷갈렸습니다.
프레임버퍼 서버 어쩌고 하는 건가 싶네요.
제가 잘 모릅니다. 젠투 아닌 배포본에서도
돌려주실분 계시면 고맙겠습니다.
자기 x 서버의 버전을 확인하려면 Xorg 는
/var/log/Xorg.0.log 나 XFree86 의 경우는
그 비슷한 화일을 열어보시면 됩니다.
x.org 6.8.2fedora core 4.z가 여러번
x.org 6.8.2
fedora core 4.
z가 여러번 찍히네염.
뭐하는 프로그램인지 궁금하실지도 몰라서 씁니다.XtestFakeKey
뭐하는 프로그램인지 궁금하실지도 몰라서 씁니다.
XtestFakeKey 함수는 키입력을 흉내내주는 Xt 의 함수입니다.
세번째 인자가 True 면 키를 눌렀음을 뜻합니다.
따라서 이 프로그램에서는 키 'z' 를 누른채 종료한게 됩니다.
Xorg 서버가 'z' 를 계속 찍어댄다는 것은 키가 계속 눌린
상태로 파악한 후 오토리피팅 한다는 뜻이 되는 거구요.
예전의 Xfree86 서버는 'z' 를 한번만 찍었는데(기억이...가물가물)
그건 오토리피팅 기능이 없다는 뜻으로 생각됩니다.
어쨌건 서버종류마다 반응이 다르다면 좀 곤란하네요.
XFree86 서버 가지신 분 잠시만 테스트 부탁드립니다.
감사합니다.
XTestFakeKeyEvent(d, 52, 1, 0); XTestF
XTestFakeKeyEvent(d, 52, 1, 0);
XTestFakeKeyEvent(d, 52, 0, 0);
이렇게 하면 한번만 되네요.
xorg7 입니다.
대충 원인을 알았습니다. 감사합니다.
결론은 버그가 아니라 기존에 없던 기능이 추가로
구현되어서 생긴 현상같습니다.
역시 해답은 가까운데 있었습니다..
mak kbd
Option "AutoRepeat" "delay rate"
sets the auto repeat behaviour for the keyboard. This is not
implemented on all platforms. delay is the time in milliseconds
before a key starts repeating. rate is the number of times a
key repeats per second. Default: "500 30".
모든 플랫폼에서 구현된 것은 아니라고 되어있는데 Xorg 는
구현되었나 봅니다. xorg.conf 에 옵션을 조정해주면 됩니다.
delay 값을 0 을 주면 오토리피팅 기능을 끌수 있는 것 같고요.
rate 값에 0 을 주면 x 서버가 뜨지 않네요.
어쨌거나 제가 아직 오토리피팅이 되지 않는 X 서버는
본적이 없는 바, 대부분의 X 서버에서 이 기능이 있다고
봐야 할것 같은데 이렇게 Xorg 와 XFree86 이 다른 반응을
보인다는 것은 내부적으로 이 기능을 구현하는데 있어
두 서버가 조금 다른 형태를 취하기 때문이 아닌가 합니다.
원인을 알았으니 어떻게든 해결할수 있겠네요.
도와주신분들께 다시 한번 감사드립니다.
댓글 달기