=== modified file 'src/com/goldencode/p2j/ui/client/driver/swing/WinKeyboardReader.java' --- src/com/goldencode/p2j/ui/client/driver/swing/WinKeyboardReader.java 2015-10-14 13:31:31 +0000 +++ src/com/goldencode/p2j/ui/client/driver/swing/WinKeyboardReader.java 2016-01-14 18:27:15 +0000 @@ -32,11 +32,17 @@ ** 009 VIG 20150818 Added ALT key support for menus keys navigation mode. ** 010 SBI 20151008 Improvements to support better GUI key processing compatibility. ** 011 SBI 20151014 Auto-repeats are fixed. +** 012 SBI 20160114 Fixed the internal keyboard state to be consistent that happens due to this +** keys combination ALT + TAB is intercepted by the operating system. */ package com.goldencode.p2j.ui.client.driver.swing; +import java.awt.AWTEvent; +import java.awt.Toolkit; +import java.awt.event.AWTEventListener; import java.awt.event.KeyEvent; +import java.awt.event.WindowEvent; import com.goldencode.p2j.ui.*; import com.goldencode.p2j.ui.client.event.*; @@ -56,7 +62,23 @@ xlate.put(KeyEvent.VK_ESCAPE, Key.VK_ESCAPE); // ALT is not processed by 4GL... => Processed as menubar activation key. - xlate.put(KeyEvent.VK_ALT, 1024); + xlate.put(KeyEvent.VK_ALT, 1024); + // added to process OS intercepted keys + Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() + { + @Override + public void eventDispatched(AWTEvent event) + { + if (event.getID() == WindowEvent.WINDOW_DEACTIVATED) + { + if (!keyDownEvents.isEmpty()) + { + keyDownEvents.clear(); + } + } + } + }, AWTEvent.WINDOW_EVENT_MASK); + } /**