LINUX.ORG.RU

Сообщения ArtemS2006

 

программирование в XWindow

Добрый день! нашел в сети такой пример кода

#include <X11/Xlib.h> // Every Xlib program must include this
#include <assert.h>   // I include this to test return values the lazy way
#include <unistd.h>   // So we got the profile for 10 seconds
#include <iostream>

#define NIL (0)       // A name for the void pointer

main() {

    // Open the display
    Display *dpy = XOpenDisplay(NIL);
    assert(dpy);

    // Get some colors
    int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));

    // Create the window
    Window w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 0, 0,
            200, 100, 0, whiteColor, whiteColor);

    // Grab F2 key with code 68 (experiment by yourself)
    int F2_KEY = 68;

XGrabKey( dpy, 
F2_KEY, 
AnyModifier, 
w, //DefaultRootWindow (dpy), //<-----
true, 
GrabModeAsync, 
GrabModeAsync 
);

    // "Map" the window (that is, make it appear on the screen)
    XMapWindow(dpy, w);

    // Infinite loop ( hazard thing ;) )
    for(;;) {
        XEvent e;
        XNextEvent(dpy, &e);
        if (e.type == KeyPress )
        {
            printf( "F2 was pressed!!!\n" );
        }
    }
}

если в строке помеченной //<----- использовать DefaultRootWindow (dpy), то получаю ошибку времени выполнения

X Error of failed request: BadAccess (attempt to access private resource denied) Major opcode of failed request: 33 (X_GrabKey) Serial number of failed request: 8 Current serial number in output stream: 9

даже из под sudo

Вообще, этим кодом (DefaultRootWindow (dpy),) я пытаюсь сделать глобальный хук клавы, то есть пытаюсь повесить хук на основное окно десктопа.

Таким образом работает утилита xbindkeys

как заставить это работать?

ArtemS2006
()

запрет скриншота

добрый день! необходимо реализовать сабж - запретить скриншотить окно графического приложения, либо полностью запретить скриншоты когда это приложение запущено. проблема в том, что до этого никогда не сталкивался с программированием под линукс. можно ли реализовать сабж функциями стандартной библиотеки linux либо же нужно ковырять в интерфейсе XWindow? ничего путного пока ненагуглил.

ArtemS2006
()

RSS подписка на новые темы