Не думаю, что можно получить статус клавиши Shift, если у вас нет события в руке.Даже java.awt.Toolkit.getLockingKeyState (int) использует нативный код для получения своей информации.Я уверен, что вы могли бы разработать свой собственный трекер / магазин событий и т. Д., Но на всякий случай вот небольшой метод, который может оказаться полезным.Вы должны предоставить ему компонент AWT с фокусом.
public static boolean isShiftDown(Component c) throws AWTException {
final List<Boolean> res = new ArrayList<Boolean>();
final KeyListener listener = new KeyAdapter() {
@Override public void keyReleased(KeyEvent e) {
res.add(e.isShiftDown());
}
};
c.addKeyListener(listener);
new Robot().keyRelease(KeyEvent.VK_ALT);
try {Thread.sleep(50);} catch (InterruptedException e) {}
c.removeKeyListener(listener);
if (res.size() > 0)
return res.get(0);
throw new AWTException("Could not get shift key status.");
}