61 |
namespace Os { |
namespace Os { |
62 |
|
|
63 |
DBGVAR(dbg, "Os"); |
DBGVAR(dbg, "Os"); |
64 |
|
DBGVAR(dbg_ctrl, "Os.controlEvents"); |
65 |
|
|
66 |
using std::cerr; |
using std::cerr; |
67 |
using std::cout; |
using std::cout; |
569 |
} |
} |
570 |
|
|
571 |
void deliverEvent(XEvent *e) { |
void deliverEvent(XEvent *e) { |
572 |
DBG(dbg) << "event "<<xw<<" "<<e->type<<"\n"; |
DBG(dbg_ctrl) << "event "<<xw<<" "<<e->type<<"\n"; |
573 |
if(!eventhandler) { |
if(!eventhandler) { |
574 |
DBG(dbg) << "No event handler for window\n"; |
DBG(dbg_ctrl) << "No event handler for window\n"; |
575 |
return; |
return; |
576 |
} |
} |
577 |
switch(e->type) { |
switch(e->type) { |
586 |
cout << "Null keystroke\n"; |
cout << "Null keystroke\n"; |
587 |
return; |
return; |
588 |
} |
} |
589 |
if(dbg) { |
if(dbg_ctrl) { |
590 |
for(const char *c = str; *c != 0; c++) { |
for(const char *c = str; *c != 0; c++) { |
591 |
cout << (int)*c << " "; |
cout << (int)*c << " "; |
592 |
} |
} |
598 |
sprintf(buf2, "Ctrl-%s", str); |
sprintf(buf2, "Ctrl-%s", str); |
599 |
str = buf2; |
str = buf2; |
600 |
} |
} |
601 |
DBG(dbg) << "Sending keystroke '"<<str<<"'\n"; |
DBG(dbg_ctrl) << "Sending keystroke '"<<str<<"'\n"; |
602 |
eventhandler->keystroke(str); |
eventhandler->keystroke(str); |
603 |
break; |
break; |
604 |
} |
} |
605 |
|
case KeyRelease: { |
606 |
|
DBG(dbg_ctrl) << "Key released"; |
607 |
|
|
608 |
|
} |
609 |
case ButtonPress: case ButtonRelease: { |
case ButtonPress: case ButtonRelease: { |
610 |
int button = mapButton(e->xbutton.button); |
int button = mapButton(e->xbutton.button); |
611 |
DBG(dbg) << "Button: " << e->xbutton.button << " " <<e->xbutton.x << " " |
DBG(dbg_ctrl) << "Button: " << e->xbutton.button << " " <<e->xbutton.x << " " |
612 |
<< e->xbutton.y<<"\n"; |
<< e->xbutton.y<<"\n"; |
613 |
|
DBG(dbg_ctrl) << " Control: " << int(e->xkey.state & ControlMask) |
614 |
|
<< ", shift: " << int(e->xkey.state & ShiftMask) <<"\n"; |
615 |
eventhandler->mouse(e->xbutton.x, e->xbutton.y, button, |
eventhandler->mouse(e->xbutton.x, e->xbutton.y, button, |
616 |
(e->type == ButtonPress ? |
(e->type == ButtonPress ? |
617 |
eventhandler->PRESS : |
eventhandler->PRESS : |
620 |
} |
} |
621 |
case MotionNotify: { |
case MotionNotify: { |
622 |
int button = mapButtonStateMask(e->xmotion.state); |
int button = mapButtonStateMask(e->xmotion.state); |
623 |
DBG(dbg) << "Motion: " << button << " " <<e->xmotion.x << " " |
DBG(dbg_ctrl) << "Motion: " << button << " " <<e->xmotion.x << " " |
624 |
<< e->xmotion.y<<"\n"; |
<< e->xmotion.y<<"\n"; |
625 |
eventhandler->mouse(e->xmotion.x, e->xmotion.y, button, |
eventhandler->mouse(e->xmotion.x, e->xmotion.y, button, |
626 |
eventhandler->MOTION); |
eventhandler->MOTION); |
628 |
break; |
break; |
629 |
} |
} |
630 |
case Expose: |
case Expose: |
631 |
DBG(dbg) << "Expose\n"; |
DBG(dbg_ctrl) << "Expose\n"; |
632 |
eventhandler->repaint(); |
eventhandler->repaint(); |
633 |
break; |
break; |
634 |
case ConfigureNotify: |
case ConfigureNotify: |
635 |
DBG(dbg) << "Configurenotify\n"; |
DBG(dbg_ctrl) << "Configurenotify\n"; |
636 |
eventhandler->repaint(); |
eventhandler->repaint(); |
637 |
break; |
break; |
638 |
case MapRequest: |
case MapRequest: |
639 |
DBG(dbg) << "MapRequest\n"; |
DBG(dbg_ctrl) << "MapRequest\n"; |
640 |
eventhandler->repaint(); |
eventhandler->repaint(); |
641 |
break; |
break; |
642 |
case MapNotify: |
case MapNotify: |
643 |
DBG(dbg) << "MapNotify\n"; |
DBG(dbg_ctrl) << "MapNotify\n"; |
644 |
eventhandler->repaint(); |
eventhandler->repaint(); |
645 |
break; |
break; |
646 |
default: |
default: |
647 |
DBG(dbg) << "Unknown event "<<e->type<<"\n"; |
DBG(dbg_ctrl) << "Unknown event "<<e->type<<"\n"; |
648 |
} |
} |
649 |
} |
} |
650 |
}; |
}; |