X11 mouse scroll 제어 질문입니다.

kwonsu의 이미지

원하는것은 간단한건데 방법을 몰라 이렇게 질문드립니다.

Xwindow가 실행된 상태에서 opera등등 기타 응용프로그램을 실행 할 경우 Ctrl+mouse scroll up/mouse scroll down 을 같이 하고 싶습니다.

즉 확대/축소를 해볼려고 하는데요 키보드나 마우스에서 입력을 받는것이 아니라 응용프로그램에 바로 전달하고자 하였습니다.

제가 해본것은 XTestFakeKeyEvent을 이용하여 이것저것 해봤으나 어림없음을 느끼고 xte로 하려도 했으나 이해를 잘 하지 못해서인지 원리조차 이해가 가지 않았습니다.

테스트 코드나 아니면 참고해야 할 사항이 무엇인지 알려주시면 고맙겠습니다. ^^ 감사합니다.

shint의 이미지

http://yiannnos.com/leanstick/mousekeyb.c

찾아보았더니.
XTestFakeButtonEvent() 이런 코드를 쓰더군요.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

kwonsu의 이미지

테스트해봐야겠습니다. ^^;

답변 감사합니다~~

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

kwonsu의 이미지

/* fakeMouse.c */   
#include <X11/extensions/XTest.h>  
#include <unistd.h>  
 
int main ()  
{  
  Display *dpy = NULL;  
  XEvent event;  
 
  dpy = XOpenDisplay (NULL);  
 
  /* Get the current pointer position */  
  XQueryPointer (dpy, RootWindow (dpy, 0),  
        &event.xbutton.root, &event.xbutton.window,  
        &event.xbutton.x_root, &event.xbutton.y_root,  
        &event.xbutton.x, &event.xbutton.y,  
        &event.xbutton.state);  
 
  /* Fake the pointer movement to new relative position */  
  XTestFakeMotionEvent (dpy, 0, event.xbutton.x + 100,  
        event.xbutton.y + 50, CurrentTime);  
  XSync(dpy, 0);  
  sleep(3);  
  /* Fake the pointer movement to new absolate position */  
  XTestFakeMotionEvent (dpy, 0, 250, 250, CurrentTime);  
  sleep(3);  
  /* Fake the mouse button Press and Release events */  
  XTestFakeButtonEvent (dpy, 3, True,  CurrentTime);  
  XTestFakeButtonEvent (dpy, 3, False, CurrentTime);  
 
  XCloseDisplay (dpy);  
  return 0;  
}   
 
Build and Run this program:
$ gcc fakeMouse.c -o fakeMouse -lX11 -lXtst -lXext
$ ./fakeMouse

구글신에게 물어본 결과 위와 같은 테스트 코드를 찾았습니다.

위 코드로 테스트 해보니 잘 됩니다. ^^

혹시라도 저처럼 어려움을 겪으신 분들을 위해 올립니다. ^^

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

Necromancer의 이미지

스크롤은 마우스버튼 4,5 클릭으로 매핑되어 있습니다(4가 윗방향, 5가 아랫방향일겁니다). 버튼 1,2,3이 왼쪽,가운데,오른쪽이고요.

Written By the Black Knight of Destruction

kwonsu의 이미지

저 소스코드를 말씀해주신것과 같이 4, 5번으로 바꾸고 조금 더 수정해서 테스트하니 잘 됬었습니다. ^^

지적 감사합니다. ^^

지식의 여인은 옷을 쉽게 벗지 않는다.
잡초인생. 잡초처럼 끈길기게....

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.