|
@@ -717,33 +717,22 @@ int la_OnWindowDestroy(Window wnd){
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-void la_MakeSpecialKeyBit(laEvent *e){
|
|
|
|
- e->SpecialKeyBit = MAIN.SpecialKeyStates;
|
|
|
|
-}
|
|
|
|
-void la_RegisterSpecialKeys(laEvent* e){
|
|
|
|
- if(e->Type&LA_STATE_DOWN){ MAIN.SpecialKeyStates|=e->key&LA_KEY_SPECIALS; }
|
|
|
|
- elif(e->Type&LA_STATE_UP){ MAIN.SpecialKeyStates&=~(e->key&LA_KEY_SPECIALS); }
|
|
|
|
|
|
+void la_MakeSpecialKeyBit(Window*hwnd,laWindow*wnd,laEvent *e,int use_last_pos){
|
|
|
|
+ laListHandle *el = &wnd->EventList;
|
|
|
|
+ laEvent* last_e=el->pLast;
|
|
|
|
+ Window root_ret, win_ret; int rrx,rry,rx,ry,rmask;
|
|
|
|
+ XQueryPointer(MAIN.dpy, hwnd, &root_ret,&win_ret,&rrx,&rry,&rx,&ry,&rmask);
|
|
|
|
+ if(use_last_pos){ if(last_e){ e->x= last_e->x; e->y= last_e->y; }else{ e->x = rx; e->y = ry; } }
|
|
|
|
+ e->SpecialKeyBit = ((rmask&ShiftMask)?LA_KEY_SHIFT:0)|((rmask&ControlMask)?LA_KEY_CTRL:0)|((rmask&Mod1Mask)?LA_KEY_ALT:0);
|
|
}
|
|
}
|
|
void la_SaveEvent(Window hwnd, laEvent *e, int use_last_pos){
|
|
void la_SaveEvent(Window hwnd, laEvent *e, int use_last_pos){
|
|
laListHandle *wl = &MAIN.Windows;
|
|
laListHandle *wl = &MAIN.Windows;
|
|
- laListHandle *el = 0;
|
|
|
|
- laWindow *wnd = 0;
|
|
|
|
-
|
|
|
|
- wnd = lstFindItem(hwnd, la_IsThisSysWindow, wl);
|
|
|
|
|
|
+ laWindow* wnd = lstFindItem(hwnd, la_IsThisSysWindow, wl);
|
|
if (!wnd){ FreeMem(e); return; }
|
|
if (!wnd){ FreeMem(e); return; }
|
|
|
|
+ laListHandle *el = &wnd->EventList;
|
|
|
|
|
|
- la_MakeSpecialKeyBit(e);
|
|
|
|
|
|
+ la_MakeSpecialKeyBit(hwnd,wnd,e,use_last_pos);
|
|
|
|
|
|
- el = &wnd->EventList;
|
|
|
|
-
|
|
|
|
- if(use_last_pos){
|
|
|
|
- laEvent* last_e=el->pLast;
|
|
|
|
- if(last_e){ e->x= last_e->x; e->y= last_e->y; }else{
|
|
|
|
- Window root_ret, win_ret; int rrx,rry,rx,ry,rmask;
|
|
|
|
- XQueryPointer(MAIN.dpy, hwnd, &root_ret,&win_ret,&rrx,&rry,&rx,&ry,&rmask);
|
|
|
|
- e->x = rx; e->y = ry;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
e->Pressure=MAIN.IsPen?(MAIN.PointerIsEraser?MAIN.EraserPressure:MAIN.StylusPressure):0.5f;
|
|
e->Pressure=MAIN.IsPen?(MAIN.PointerIsEraser?MAIN.EraserPressure:MAIN.StylusPressure):0.5f;
|
|
e->AngleX=MAIN.PointerIsEraser?MAIN.EraserAngleX:MAIN.StylusAngleX;
|
|
e->AngleX=MAIN.PointerIsEraser?MAIN.EraserAngleX:MAIN.StylusAngleX;
|
|
e->AngleY=MAIN.PointerIsEraser?MAIN.EraserAngleY:MAIN.StylusAngleY;
|
|
e->AngleY=MAIN.PointerIsEraser?MAIN.EraserAngleY:MAIN.StylusAngleY;
|
|
@@ -753,10 +742,7 @@ void la_SaveEvent(Window hwnd, laEvent *e, int use_last_pos){
|
|
laMappingRequestEval();
|
|
laMappingRequestEval();
|
|
};
|
|
};
|
|
void la_SendKeyboardEvent(Window hwnd, int type, int key){
|
|
void la_SendKeyboardEvent(Window hwnd, int type, int key){
|
|
- laEvent *e = CreateNew(laEvent);
|
|
|
|
- e->Type = type; e->key = key;
|
|
|
|
- la_RegisterSpecialKeys(e);
|
|
|
|
- printf("%d %lc\n",key,key);
|
|
|
|
|
|
+ laEvent *e = CreateNew(laEvent); e->Type = type; e->key = key;
|
|
la_SaveEvent(hwnd, e, 1);
|
|
la_SaveEvent(hwnd, e, 1);
|
|
};
|
|
};
|
|
void la_SendInputEvent(Window hwnd, uint32_t Input){
|
|
void la_SendInputEvent(Window hwnd, uint32_t Input){
|