Linux da klavyeden yon oklarıyla koordinat alma

Başlatan haktans4, 17 Aralık 2016 - 00:50:16

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

haktans4

Ben linux da klavyeden ilerlemelerime göre koordinatları alıp onları bağlı listeye eklemek istiyorum fakat kutuphaneyi veya fonksiyonu bulamadım windows ta windows.h kutuphanesi var bildiginiz üzere linux uzerinden bunu çalıştıramıyoruz bunu karşılicak herhangi bir kutuphane veya fonksiyon varmı aramalarım dogrultusunda ben bulamadım

Erdem

Xlib kullanabilirsiniz:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <X11/Xos.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
#include <X11/Xresource.h>

static Window root;

static void
query_pointer(Display *d)
{
  static int once;
  int i, x, y;
  unsigned m;
  Window w;

  if (once == 0) {
    once = 1;
    root = DefaultRootWindow(d);
  }

  if (!XQueryPointer(d, root, &root, &w, &x, &y, &i, &i, &m)) {
    for (i = -1; ++i < ScreenCount(d); ) {
      if (root == RootWindow(d, i)) {
        break;
      }
    }
  }

  fprintf(stderr, "X: %d Y: %d\n", x, y);
}

static int
catchFalseAlarm(void)
{
  return 0;
}   

int
main(void)
{
  XSetWindowAttributes attribs;
  Display* d;
  Window w;

  if (!(d = XOpenDisplay(0))) {
    fprintf (stderr, "Couldn't connect to %s\n", XDisplayName (0));
    exit (EXIT_FAILURE);
  }

  attribs.override_redirect = True;
  w = XCreateWindow(d, DefaultRootWindow (d), -1, -1, 1, 1, 0,
         CopyFromParent, InputOnly, CopyFromParent,
         CWOverrideRedirect, &attribs);
  XMapWindow(d, w);
  XSetErrorHandler((XErrorHandler )catchFalseAlarm);
  XSync (d, 0);

  for (;;) {
    query_pointer(d);
    usleep(1000);
  }

  return 0;
}


Derlemek için : gcc deneme.c -o deneme -lX11

Neof07

@Erdem, Çok güzelmiş :D ancak ekranın sol üst köşesine getirdiğimde y sıfırlanıyor neden :D

Erdem

Alıntı yapılan: Neof07 - 17 Aralık 2016 - 23:45:59
@Erdem, Çok güzelmiş :D ancak ekranın sol üst köşesine getirdiğimde y sıfırlanıyor neden :D

Ekranın sol üst köşesinde x ve y [0, 0] değerlerini alıyor. x ufuk çizgisi yönünde artıyor, y ekseni ise aşağı doğru artıyor.

SDL grafik kütüphanesinin koordinat sistemi de bu şekilde:

http://ddili.org/ders/sdl/hosgeldiniz.html