|
@@ -1435,13 +1435,118 @@ void laSetPreferenceTemplates(laUiDefineFunc PreferencePageDisplay, laUiDefineFu
|
|
MAIN.PreferencePageResource=PreferencePageResource; MAIN.PreferencePageTheme=PreferencePageTheme;
|
|
MAIN.PreferencePageResource=PreferencePageResource; MAIN.PreferencePageTheme=PreferencePageTheme;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void la_InputMappingGetKeyName(int key, int special, char* name){
|
|
|
|
+ char *_next=name; name[0]=0;
|
|
|
|
+ if(special&LA_KEY_CTRL){ strcat(name,"Ctrl+"); }
|
|
|
|
+ if(special&LA_KEY_SHIFT){ strcat(name,"Shift+"); }
|
|
|
|
+ if(special&LA_KEY_ALT){ strcat(name,"Shift+"); }
|
|
|
|
+ switch(key){
|
|
|
|
+ case ' ': strcat(name,"Space"); break;
|
|
|
|
+ case LA_KEY_BACKSPACE: strcat(name,"Backspace"); break;
|
|
|
|
+ case LA_KEY_ESCAPE: strcat(name,"Escape"); break;
|
|
|
|
+ case LA_KEY_ENTER: strcat(name,"Enter"); break;
|
|
|
|
+ case LA_KEY_ARRLEFT: strcat(name,"Left"); break;
|
|
|
|
+ case LA_KEY_ARRRIGHT: strcat(name,"Right"); break;
|
|
|
|
+ case LA_KEY_ARRUP: strcat(name,"Up"); break;
|
|
|
|
+ case LA_KEY_ARRDOWN: strcat(name,"Down"); break;
|
|
|
|
+ case LA_KEY_SHIFT: case LA_KEY_CTRL: case LA_KEY_ALT: break;
|
|
|
|
+ case LA_KEY_DELETE: strcat(name,"Delete"); break;
|
|
|
|
+ case LA_KEY_TAB: strcat(name,"Tab"); break;
|
|
|
|
+ case LA_KEY_NUM1: strcat(name,"Num1"); break;
|
|
|
|
+ case LA_KEY_NUM2: strcat(name,"Num2"); break;
|
|
|
|
+ case LA_KEY_NUM3: strcat(name,"Num3"); break;
|
|
|
|
+ case LA_KEY_NUM4: strcat(name,"Num4"); break;
|
|
|
|
+ case LA_KEY_NUM5: strcat(name,"Num5"); break;
|
|
|
|
+ case LA_KEY_NUM6: strcat(name,"Num6"); break;
|
|
|
|
+ case LA_KEY_NUM7: strcat(name,"Num7"); break;
|
|
|
|
+ case LA_KEY_NUM8: strcat(name,"Num8"); break;
|
|
|
|
+ case LA_KEY_NUM9: strcat(name,"Num9"); break;
|
|
|
|
+ case LA_KEY_NUM0: strcat(name,"Num0"); break;
|
|
|
|
+ case LA_KEY_NUMPLUS: strcat(name,"NumPlus"); break;
|
|
|
|
+ case LA_KEY_NUMMINUS: strcat(name,"NumMinus"); break;
|
|
|
|
+ case LA_KEY_NUMMULT: strcat(name,"NumMult"); break;
|
|
|
|
+ case LA_KEY_NUMDIVIDE: strcat(name,"NumDivide"); break;
|
|
|
|
+ case LA_KEY_NUMDOT: strcat(name,"NumDot"); break;
|
|
|
|
+ case LA_KEY_NUMENTER: strcat(name,"NumEnter"); break;
|
|
|
|
+ case LA_KEY_F1: strcat(name,"F1"); break;
|
|
|
|
+ case LA_KEY_F2: strcat(name,"F2"); break;
|
|
|
|
+ case LA_KEY_F3: strcat(name,"F3"); break;
|
|
|
|
+ case LA_KEY_F4: strcat(name,"F4"); break;
|
|
|
|
+ case LA_KEY_F5: strcat(name,"F5"); break;
|
|
|
|
+ case LA_KEY_F6: strcat(name,"F6"); break;
|
|
|
|
+ case LA_KEY_F7: strcat(name,"F7"); break;
|
|
|
|
+ case LA_KEY_F8: strcat(name,"F8"); break;
|
|
|
|
+ case LA_KEY_F9: strcat(name,"F9"); break;
|
|
|
|
+ case LA_KEY_F10: strcat(name,"F10"); break;
|
|
|
|
+ case LA_KEY_F11: strcat(name,"F11"); break;
|
|
|
|
+ case LA_KEY_F12: strcat(name,"F12"); break;
|
|
|
|
+ default:
|
|
|
|
+ name = name+strlen(name); _next=name;
|
|
|
|
+ laToUTF8(key,name,&_next); *_next=0; break;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+int la_InputMappingGetKeyFromName(char* name, int* special){
|
|
|
|
+ if(!name ||name[0]==0){ *special=0; return 0; }
|
|
|
|
+ *special=0;
|
|
|
|
+ if(strstr(name,"Ctrl")) *special|=LA_KEY_CTRL;
|
|
|
|
+ if(strstr(name,"Shift")) *special|=LA_KEY_SHIFT;
|
|
|
|
+ if(strstr(name,"Alt")) *special|=LA_KEY_ALT;
|
|
|
|
+ char* p=name+strlen(name)-1;
|
|
|
|
+ while(*p!='+'){ p--; if(p<=name){p=name; break;} }
|
|
|
|
+ while(*p=='+' || *p==' '){ p++; }
|
|
|
|
+ if(strSame(p,"Space")) return ' ';
|
|
|
|
+ if(strSame(p,"Backspace")) return LA_KEY_BACKSPACE;
|
|
|
|
+ if(strSame(p,"Escape")) return LA_KEY_ESCAPE;
|
|
|
|
+ if(strSame(p,"Enter")) return LA_KEY_ENTER;
|
|
|
|
+ if(strSame(p,"Left")) return LA_KEY_ARRLEFT;
|
|
|
|
+ if(strSame(p,"Right")) return LA_KEY_ARRRIGHT;
|
|
|
|
+ if(strSame(p,"Up")) return LA_KEY_ARRUP;
|
|
|
|
+ if(strSame(p,"Down")) return LA_KEY_ARRDOWN;
|
|
|
|
+ if(strSame(p,"Delete")) return LA_KEY_DELETE;
|
|
|
|
+ if(strSame(p,"Tab")) return LA_KEY_TAB;
|
|
|
|
+ if(strSame(p,"Num1")) return LA_KEY_NUM1;
|
|
|
|
+ if(strSame(p,"Num2")) return LA_KEY_NUM2;
|
|
|
|
+ if(strSame(p,"Num3")) return LA_KEY_NUM3;
|
|
|
|
+ if(strSame(p,"Num4")) return LA_KEY_NUM4;
|
|
|
|
+ if(strSame(p,"Num5")) return LA_KEY_NUM5;
|
|
|
|
+ if(strSame(p,"Num6")) return LA_KEY_NUM6;
|
|
|
|
+ if(strSame(p,"Num7")) return LA_KEY_NUM7;
|
|
|
|
+ if(strSame(p,"Num8")) return LA_KEY_NUM8;
|
|
|
|
+ if(strSame(p,"Num9")) return LA_KEY_NUM9;
|
|
|
|
+ if(strSame(p,"Num0")) return LA_KEY_NUM0;
|
|
|
|
+ if(strSame(p,"NumPlus")) return LA_KEY_NUMPLUS;
|
|
|
|
+ if(strSame(p,"NumMinus")) return LA_KEY_NUMMINUS;
|
|
|
|
+ if(strSame(p,"NumMult")) return LA_KEY_NUMMULT;
|
|
|
|
+ if(strSame(p,"NumDivide")) return LA_KEY_NUMDIVIDE;
|
|
|
|
+ if(strSame(p,"NumDot")) return LA_KEY_NUMDOT;
|
|
|
|
+ if(strSame(p,"NumEnter")) return LA_KEY_NUMENTER;
|
|
|
|
+ if(strSame(p,"F1")) return LA_KEY_F1;
|
|
|
|
+ if(strSame(p,"F2")) return LA_KEY_F2;
|
|
|
|
+ if(strSame(p,"F3")) return LA_KEY_F3;
|
|
|
|
+ if(strSame(p,"F4")) return LA_KEY_F4;
|
|
|
|
+ if(strSame(p,"F5")) return LA_KEY_F5;
|
|
|
|
+ if(strSame(p,"F6")) return LA_KEY_F6;
|
|
|
|
+ if(strSame(p,"F7")) return LA_KEY_F7;
|
|
|
|
+ if(strSame(p,"F8")) return LA_KEY_F8;
|
|
|
|
+ if(strSame(p,"F9")) return LA_KEY_F9;
|
|
|
|
+ if(strSame(p,"F10")) return LA_KEY_F10;
|
|
|
|
+ if(strSame(p,"F11")) return LA_KEY_F11;
|
|
|
|
+ if(strSame(p,"F12")) return LA_KEY_F12;
|
|
|
|
+ int adv;
|
|
|
|
+ return laToUnicode(p,&adv);
|
|
|
|
+}
|
|
laCustomSignal* laFindSignal(char* Name){
|
|
laCustomSignal* laFindSignal(char* Name){
|
|
for(laCustomSignal* cs=MAIN.CustomSignals.pFirst;cs;cs=cs->Item.pNext){ if(strSame(SSTR(cs->Name),Name)) return cs; }
|
|
for(laCustomSignal* cs=MAIN.CustomSignals.pFirst;cs;cs=cs->Item.pNext){ if(strSame(SSTR(cs->Name),Name)) return cs; }
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
+laCustomSignal* laFindSignalByID(int ID){
|
|
|
|
+ for(laCustomSignal* cs=MAIN.CustomSignals.pFirst;cs;cs=cs->Item.pNext){ if(ID==cs->Signal) return cs; }
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
void laInputMappingUpdateSignal(laInputMappingEntry* ime){
|
|
void laInputMappingUpdateSignal(laInputMappingEntry* ime){
|
|
- if(ime->DeviceType == LA_INPUT_DEVICE_KEYBOARD){ char* str=SSTR(ime->Key); if(str&&str[0]){ int adv; ime->KeyValue=laToUnicode(str,&adv); }else{ ime->KeyValue=0; } }
|
|
|
|
- if(ime->DeviceType == LA_INPUT_DEVICE_JOYSTICK){ int key=0; sscanf(SSTR(ime->Key),"%d",&key); ime->KeyValue=key; }
|
|
|
|
|
|
+ if(ime->DeviceType == LA_INPUT_DEVICE_KEYBOARD){ char* str=SSTR(ime->Key);
|
|
|
|
+ if(str&&str[0]){ int adv; ime->KeyValue=la_InputMappingGetKeyFromName(str,&ime->SpecialKeyBits); }else{ ime->KeyValue=0; }
|
|
|
|
+ }elif(ime->DeviceType == LA_INPUT_DEVICE_JOYSTICK){ int key=0; sscanf(SSTR(ime->Key),"%d",&key); ime->KeyValue=key; }
|
|
char* signal = SSTR(ime->Signal);
|
|
char* signal = SSTR(ime->Signal);
|
|
laCustomSignal *cs=laFindSignal(signal); if(cs){ ime->SignalValue=cs->Signal; }else{ ime->SignalValue=0;}
|
|
laCustomSignal *cs=laFindSignal(signal); if(cs){ ime->SignalValue=cs->Signal; }else{ ime->SignalValue=0;}
|
|
}
|
|
}
|
|
@@ -1457,6 +1562,13 @@ laInputMappingEntry* laNewInputMappingEntry(laInputMapping* im, int DeviceType,
|
|
memAssignRef(e,&e->Parent,im);
|
|
memAssignRef(e,&e->Parent,im);
|
|
if(Signal){ strSafeSet(&e->Signal,Signal); } if(Key){ strSafeSet(&e->Key,Key); }
|
|
if(Signal){ strSafeSet(&e->Signal,Signal); } if(Key){ strSafeSet(&e->Key,Key); }
|
|
laInputMappingUpdateSignal(e);
|
|
laInputMappingUpdateSignal(e);
|
|
|
|
+ e->SpecialKeyBits=SpecialKeyBit;
|
|
|
|
+ char buf[64],*_next=buf;
|
|
|
|
+ la_InputMappingGetKeyName(e->KeyValue,e->SpecialKeyBits,buf); strSafeSet(&e->Key,buf);
|
|
|
|
+}
|
|
|
|
+laInputMappingEntry* laNewInputMappingEntryP(laInputMapping* im, int DeviceType, int JoystickDevice, char* Key, int SpecialKeyBit, int Signal){
|
|
|
|
+ laCustomSignal* cs; if(!(cs=laFindSignalByID(Signal))) return 0;
|
|
|
|
+ laNewInputMappingEntry(im,DeviceAdded,JoystickDevice,Key,SpecialKeyBit,SSTR(cs->Name));
|
|
}
|
|
}
|
|
void laRemoveInputMappingEntry(laInputMapping* im, laInputMappingEntry* e){
|
|
void laRemoveInputMappingEntry(laInputMapping* im, laInputMappingEntry* e){
|
|
memAssignRef(e,&e->Parent,0); lstRemoveItem(&im->Entries,e); strSafeDestroy(&e->Signal); strSafeDestroy(&e->Key); memFree(e);
|
|
memAssignRef(e,&e->Parent,0); lstRemoveItem(&im->Entries,e); strSafeDestroy(&e->Signal); strSafeDestroy(&e->Key); memFree(e);
|
|
@@ -1697,6 +1809,22 @@ int la_TranslateSpecialKey(int keysym){
|
|
case XK_Shift_R: return LA_KEY_SHIFT;
|
|
case XK_Shift_R: return LA_KEY_SHIFT;
|
|
case XK_Alt_L: return LA_KEY_ALT;
|
|
case XK_Alt_L: return LA_KEY_ALT;
|
|
case XK_Alt_R: return LA_KEY_ALT;
|
|
case XK_Alt_R: return LA_KEY_ALT;
|
|
|
|
+ case XK_KP_1: return LA_KEY_NUM1;
|
|
|
|
+ case XK_KP_2: return LA_KEY_NUM2;
|
|
|
|
+ case XK_KP_3: return LA_KEY_NUM3;
|
|
|
|
+ case XK_KP_4: return LA_KEY_NUM4;
|
|
|
|
+ case XK_KP_5: return LA_KEY_NUM5;
|
|
|
|
+ case XK_KP_6: return LA_KEY_NUM6;
|
|
|
|
+ case XK_KP_7: return LA_KEY_NUM7;
|
|
|
|
+ case XK_KP_8: return LA_KEY_NUM8;
|
|
|
|
+ case XK_KP_9: return LA_KEY_NUM9;
|
|
|
|
+ case XK_KP_0: return LA_KEY_NUM0;
|
|
|
|
+ case XK_KP_Add: return LA_KEY_NUMPLUS;
|
|
|
|
+ case XK_KP_Subtract: return LA_KEY_NUMMINUS;
|
|
|
|
+ case XK_KP_Divide: return LA_KEY_NUMDIVIDE;
|
|
|
|
+ case XK_KP_Multiply: return LA_KEY_NUMMULT;
|
|
|
|
+ case XK_KP_Decimal: return LA_KEY_NUMDOT;
|
|
|
|
+ case XK_KP_Enter: return LA_KEY_NUMENTER;
|
|
default: return keysym;
|
|
default: return keysym;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
@@ -2145,7 +2273,7 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
|
|
tnsUniformColorComposing(T->immShader,0,0,0);
|
|
tnsUniformColorComposing(T->immShader,0,0,0);
|
|
}
|
|
}
|
|
|
|
|
|
- if (p->Mode && (!p->AnimationMode || (p->AnimationMode && p->AnimationRatio > 0.99))){
|
|
|
|
|
|
+ if (p->Mode && (!p->AnimationMode || (p->AnimationMode && p->AnimationRatio > 0.99) || p->AnimationMode==LA_PANEL_ANIMATION_FLASH)){
|
|
tnsUseNoTexture();
|
|
tnsUseNoTexture();
|
|
if (!p->IsMenuPanel){
|
|
if (!p->IsMenuPanel){
|
|
la_PanelDrawDescendBorder(p, (*p->BT), MAIN.SolidShadowLength, MAIN.FloatingAlpha);
|
|
la_PanelDrawDescendBorder(p, (*p->BT), MAIN.SolidShadowLength, MAIN.FloatingAlpha);
|
|
@@ -2153,8 +2281,16 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
|
|
tnsFlush();
|
|
tnsFlush();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if(p->ParentOperator){
|
|
|
|
+ tnsUseNoTexture();
|
|
|
|
+ tnsColor4d(LA_COLOR3(MAIN.CurrentTheme->Color),0.7*(p->AnimationMode==LA_PANEL_ANIMATION_FLASH?1.0f:p->AnimationRatio));
|
|
|
|
+ tnsVertex2d(0,0); tnsVertex2d(w->CW,0); tnsVertex2d(w->CW,w->CH); tnsVertex2d(0,w->CH);
|
|
|
|
+ tnsPackAs(GL_TRIANGLE_FAN); tnsFlush();
|
|
|
|
+ }
|
|
|
|
+
|
|
switch (p->AnimationMode){
|
|
switch (p->AnimationMode){
|
|
- case 0:
|
|
|
|
|
|
+ case 0: /* and */
|
|
|
|
+ case LA_PANEL_ANIMATION_FLASH:
|
|
tnsDraw2DTextureDirectly(p->OffScr->pColor[0], p->X, p->Y, p->W, p->H);
|
|
tnsDraw2DTextureDirectly(p->OffScr->pColor[0], p->X, p->Y, p->W, p->H);
|
|
if(!(p->SR || p->SB || p->Parent || p->Block || p->IsMenuPanel)){
|
|
if(!(p->SR || p->SB || p->Parent || p->Block || p->IsMenuPanel)){
|
|
real* color=laThemeColor(_LA_THEME_PANEL,LA_BT_TEXT); tnsColor4d(LA_COLOR3(color),color[3]*(p->ShowCorner?1:0.8));
|
|
real* color=laThemeColor(_LA_THEME_PANEL,LA_BT_TEXT); tnsColor4d(LA_COLOR3(color),color[3]*(p->ShowCorner?1:0.8));
|
|
@@ -2164,6 +2300,16 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
|
|
tnsColor4dv(laThemeColor(_LA_THEME_PANEL,LA_BT_NORMAL)); tnsVertex2d(px-len,py); tnsVertex2d(px,py-len);
|
|
tnsColor4dv(laThemeColor(_LA_THEME_PANEL,LA_BT_NORMAL)); tnsVertex2d(px-len,py); tnsVertex2d(px,py-len);
|
|
tnsLineWidth(2); tnsPackAs(GL_LINES); tnsLineWidth(1);
|
|
tnsLineWidth(2); tnsPackAs(GL_LINES); tnsLineWidth(1);
|
|
}
|
|
}
|
|
|
|
+ if(p->AnimationMode==LA_PANEL_ANIMATION_FLASH){
|
|
|
|
+ p->AnimationRatio += MAIN.PanelAnimationSpeed * 0.1 * MAIN.LastFrameTime * 60;
|
|
|
|
+ if((int)(p->AnimationRatio*6)%2){
|
|
|
|
+ tnsUseNoTexture();
|
|
|
|
+ tnsColor4dv(laAccentColor(LA_BT_SELECTED));
|
|
|
|
+ tnsVertex2d(p->X,p->Y); tnsVertex2d(p->X+p->W,p->Y); tnsVertex2d(p->X+p->W,p->Y+p->H); tnsVertex2d(p->X,p->Y+p->H);
|
|
|
|
+ tnsPackAs(GL_TRIANGLE_FAN); tnsFlush();
|
|
|
|
+ }
|
|
|
|
+ if (p->AnimationRatio > 0.99) p->AnimationMode = 0; laRefreshWindow();
|
|
|
|
+ }
|
|
break;
|
|
break;
|
|
|
|
|
|
case LA_PANEL_ANIMATION_DROP_DOWN:
|
|
case LA_PANEL_ANIMATION_DROP_DOWN:
|
|
@@ -6622,7 +6768,7 @@ int laKeyMapExecuteEvent(laOperator *from, laKeyMapper *km, laEvent *e){
|
|
char *instructions;
|
|
char *instructions;
|
|
if(e->type==LA_MOUSEMOVE) return 0;
|
|
if(e->type==LA_MOUSEMOVE) return 0;
|
|
for (kmi = km->Items.pFirst; kmi; kmi = kmi->Item.pNext){
|
|
for (kmi = km->Items.pFirst; kmi; kmi = kmi->Item.pNext){
|
|
- if (kmi->SpecialKeyBits == e->SpecialKeyBit &&
|
|
|
|
|
|
+ if ((kmi->SpecialKeyBits == e->SpecialKeyBit||kmi->EventType==LA_SIGNAL_EVENT) &&
|
|
kmi->EventType == e->type && ((kmi->Key == e->Input) || (kmi->Key == e->key))){
|
|
kmi->EventType == e->type && ((kmi->Key == e->Input) || (kmi->Key == e->key))){
|
|
instructions = kmi->Instructions ? kmi->Instructions->Ptr : 0;
|
|
instructions = kmi->Instructions ? kmi->Instructions->Ptr : 0;
|
|
if (kmi->Operation)
|
|
if (kmi->Operation)
|
|
@@ -6640,7 +6786,7 @@ int laKeyMapExecuteEventEx(laOperator *from, laPropPack *UiExtra, laKeyMapper *k
|
|
int inv = 0; int lx = -1, ly = -1;
|
|
int inv = 0; int lx = -1, ly = -1;
|
|
if(e->type==LA_MOUSEMOVE) return 0;
|
|
if(e->type==LA_MOUSEMOVE) return 0;
|
|
for (kmi = km->Items.pFirst; kmi; kmi = kmi->Item.pNext){
|
|
for (kmi = km->Items.pFirst; kmi; kmi = kmi->Item.pNext){
|
|
- if (kmi->SpecialKeyBits == e->SpecialKeyBit &&
|
|
|
|
|
|
+ if ((kmi->SpecialKeyBits == e->SpecialKeyBit||kmi->EventType==LA_SIGNAL_EVENT) &&
|
|
kmi->EventType == e->type && ((kmi->Key == e->Input) || (kmi->Key == e->key))){
|
|
kmi->EventType == e->type && ((kmi->Key == e->Input) || (kmi->Key == e->key))){
|
|
if (e->Localized){
|
|
if (e->Localized){
|
|
lx = e->x;
|
|
lx = e->x;
|
|
@@ -7623,10 +7769,15 @@ int la_ProcessSysMessage(){
|
|
if (InputStatus == XLookupKeySym || InputStatus == XLookupBoth) { /*printf("status: %d\n", InputStatus);*/ }
|
|
if (InputStatus == XLookupKeySym || InputStatus == XLookupBoth) { /*printf("status: %d\n", InputStatus);*/ }
|
|
if (InputCount){ MAIN.InputBuf[InputCount]=0; } strToUnicode(MAIN.InputBufU,MAIN.InputBuf); int UCount=strlenU(MAIN.InputBufU);
|
|
if (InputCount){ MAIN.InputBuf[InputCount]=0; } strToUnicode(MAIN.InputBufU,MAIN.InputBuf); int UCount=strlenU(MAIN.InputBufU);
|
|
for(int i=0;i<UCount;i++){ if(la_AllowInput(MAIN.InputBufU[i])) la_SendInputEvent(e.xkey.window, MAIN.InputBufU[i]); }
|
|
for(int i=0;i<UCount;i++){ if(la_AllowInput(MAIN.InputBufU[i])) la_SendInputEvent(e.xkey.window, MAIN.InputBufU[i]); }
|
|
|
|
+ XKeyboardState x; XGetKeyboardControl(MAIN.dpy, &x);
|
|
|
|
+ int numlock=0; if(x.led_mask & 2){ numlock=1; }
|
|
if(InputKeysym=XkbKeycodeToKeysym(e.xkey.display, e.xkey.keycode, 0, 0)){
|
|
if(InputKeysym=XkbKeycodeToKeysym(e.xkey.display, e.xkey.keycode, 0, 0)){
|
|
#ifdef DEBUG
|
|
#ifdef DEBUG
|
|
printf("pressed KEY: %d\n", (int)InputKeysym);
|
|
printf("pressed KEY: %d\n", (int)InputKeysym);
|
|
#endif
|
|
#endif
|
|
|
|
+ if(/*numlock && */InputKeysym>=XK_KP_Space && InputKeysym<=XK_KP_9){
|
|
|
|
+ InputKeysym=XkbKeycodeToKeysym(e.xkey.display, e.xkey.keycode, 0, 1);
|
|
|
|
+ }
|
|
la_SendKeyboardEvent(e.xkey.window, LA_KEY_DOWN, la_TranslateSpecialKey(InputKeysym));
|
|
la_SendKeyboardEvent(e.xkey.window, LA_KEY_DOWN, la_TranslateSpecialKey(InputKeysym));
|
|
}
|
|
}
|
|
break;
|
|
break;
|