summaryrefslogtreecommitdiff
path: root/src/DockKeyboard.cpp
blob: a5c786fdfc0f254f2fc07d5f8aa0ca24a2409bd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

#include "DockKeyboard.h"
#include "logger.h"
#include "Config.h"
#include <cairo.h>
#include <cairo-xlib.h>

DockKeyboard::DockKeyboard(XConn* x11, KeyboardDevice* kbd)
{
    this->kbd = kbd;
    this->x11 = x11;
}

void DockKeyboard::setup()
{
    cairo_surface_t* png = 
        cairo_image_surface_create_from_png(Config::getInstance()->kbdImage);
    cairo_surface_t* button = 
       cairo_xlib_surface_create(x11->dpy, backbuff, x11->vis, width, height);
    cairo_t* cr = cairo_create(button);
    cairo_set_source_surface(cr, png, 0, 0);
    cairo_paint(cr);
    if (cairo_status(cr))
    {
        ERR("cairo: %s\n", cairo_status_to_string(cairo_status(cr)));
    }
    cairo_surface_destroy(button);
    cairo_surface_destroy(png);
    cairo_destroy(cr);
    XFlush(x11->dpy);
}

void DockKeyboard::handleButtonEvent(PointerDevice* ptr, 
                                     XDeviceButtonEvent* ev)
{
    TRACE("Pairing %s with %s\n", ptr->getName().c_str(), kbd->getName().c_str());
    //XChangePointerKeyboardPairing(x11->dpy, ptr->getDevice(), kbd->getDevice());
    //kbd->setPaired(ptr);
}