이거 Xorg 의 버그같은데 Xfree86 쓰시는 분 확인좀 부탁드려요.

lampo의 이미지

아래 코드는 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-r6

gentoo 특성상 xserver없이 돌아가구요...

한번만 찍히네염.

lampo의 이미지

감사합니다. 손님. (또 오세요. ^.^)

Xserver 가 없을수도 있나 싶어 헷갈렸습니다.
프레임버퍼 서버 어쩌고 하는 건가 싶네요.
제가 잘 모릅니다. 젠투 아닌 배포본에서도
돌려주실분 계시면 고맙겠습니다.

자기 x 서버의 버전을 확인하려면 Xorg 는
/var/log/Xorg.0.log 나 XFree86 의 경우는
그 비슷한 화일을 열어보시면 됩니다.

익명 사용자의 이미지

x.org 6.8.2

fedora core 4.

z가 여러번 찍히네염.

익명 사용자의 이미지

뭐하는 프로그램인지 궁금하실지도 몰라서 씁니다.
XtestFakeKey 함수는 키입력을 흉내내주는 Xt 의 함수입니다.

세번째 인자가 True 면 키를 눌렀음을 뜻합니다.
따라서 이 프로그램에서는 키 'z' 를 누른채 종료한게 됩니다.

Xorg 서버가 'z' 를 계속 찍어댄다는 것은 키가 계속 눌린
상태로 파악한 후 오토리피팅 한다는 뜻이 되는 거구요.

예전의 Xfree86 서버는 'z' 를 한번만 찍었는데(기억이...가물가물)
그건 오토리피팅 기능이 없다는 뜻으로 생각됩니다.

어쨌건 서버종류마다 반응이 다르다면 좀 곤란하네요.
XFree86 서버 가지신 분 잠시만 테스트 부탁드립니다.
감사합니다.

익명 사용자의 이미지

XTestFakeKeyEvent(d, 52, 1, 0);
XTestFakeKeyEvent(d, 52, 0, 0);

이렇게 하면 한번만 되네요.
xorg7 입니다.

lampo의 이미지

결론은 버그가 아니라 기존에 없던 기능이 추가로
구현되어서 생긴 현상같습니다.
역시 해답은 가까운데 있었습니다..

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 이 다른 반응을
보인다는 것은 내부적으로 이 기능을 구현하는데 있어
두 서버가 조금 다른 형태를 취하기 때문이 아닌가 합니다.

원인을 알았으니 어떻게든 해결할수 있겠네요.
도와주신분들께 다시 한번 감사드립니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.