keyrouter.DeviceKeyRelease = -1;
keyrouter.xi2_opcode = -1;
keyrouter.isWindowStackChanged = 1;
+ keyrouter.prev_sent_keycode = 0;
+ keyrouter.resTopVisibleCheck = 0;
#ifdef _F_ENABLE_MOUSE_POPUP
keyrouter.popup_angle = 0;
keyrouter.toggle = 0;
#ifdef __DEBUG__
fprintf(stderr, "\e[32m[keyrouter][%s] isWindowStackChanged = %d\e[0m\n", __FUNCTION__, isWindowStackChanged);
#endif
- if( isWindowStackChanged )
- resTopVisibleCheck = IsWindowTopVisibleWithoutInputFocus(keyrouter.HardKeys[index].top_ptr->wid, focus_window);
+ if( keyrouter.isWindowStackChanged || (keyrouter.prev_sent_keycode != xev->xkey.keycode) )
+ keyrouter.resTopVisibleCheck = IsWindowTopVisibleWithoutInputFocus(keyrouter.HardKeys[index].top_ptr->wid, focus_window);
+
+ keyrouter.prev_sent_keycode = xev->xkey.keycode;
- if( !resTopVisibleCheck )
+ if( !keyrouter.resTopVisibleCheck )
goto shared_delivery;
- if( isWindowStackChanged )
- isWindowStackChanged = 0;
+ if( keyrouter.isWindowStackChanged )
+ keyrouter.isWindowStackChanged = 0;
}
// Is Grab Mode equal to TOP_POSITION ?
if( !is_focus_window_in_shared_list )
{
xiData->event = xev->xkey.window = focus_window;
- if( isWindowStackChanged )
+ if( keyrouter.isWindowStackChanged )
BackedupSharedWins(index, focus_window);
if( xev->type == KeyPress )
}
}
else
- if( isWindowStackChanged )
+ if( keyrouter.isWindowStackChanged )
BackedupSharedWins(index, None);
- if( isWindowStackChanged )
- isWindowStackChanged = 0;
+ if( keyrouter.isWindowStackChanged )
+ keyrouter.isWindowStackChanged = 0;
break;
default:
#ifdef __DEBUG__
fprintf(stderr, "\e[32m[keyrouter][%s] isWindowStackChanged = %d\e[0m\n", __FUNCTION__, keyrouter.isWindowStackChanged);
#endif
- if( keyrouter.isWindowStackChanged )
+ if( keyrouter.isWindowStackChanged || (keyrouter.prev_sent_keycode != xev->xkey.keycode) )
keyrouter.resTopVisibleCheck = IsWindowTopVisibleWithoutInputFocus(keyrouter.HardKeys[index].top_ptr->wid, focus_window);
+ keyrouter.prev_sent_keycode = xev->xkey.keycode;
+
if( !keyrouter.resTopVisibleCheck )
goto shared_delivery;