2013-07-23 2 views
3

Я ищу список (аппаратных) ключей модификатора и их сопоставление с масками в интерфейсе Java Swing InputEvent. В Java 7 есть пять масок я знаю о:Java Swing InputEvent модификаторы для различного оборудования

  • SHIFT_DOWN_MASK
  • CTRL_DOWN_MASK
  • META_DOWN_MASK
  • ALT_DOWN_MASK
  • ALT_GRAPH_DOWN_MASK

Просим обратить мое внимание, если мне не хватает какой-либо.

From this Eclipse bug report about SWT, я узнал:

  • машины Apple, как правило, имеют четыре клавиши: команду, вариант, сдвиг и управления.
  • PC-типа машины, как правило, пять ключей (в настоящее время): контроль, альт, сдвиг, выиграть, и меню.
    • Для этого обсуждения я не считаю меню ключевым модификатором. (Опять же: Поправьте меня, если не так.)
    • Однако выиграть ключ может быть использован в сочетании, например, Win + E, чтобы открыть новое окно для Windows Explorer.

Я понимаю, что грань между «PC» и «Яблоко» была размыта в последние несколько лет. Возможно, есть клавиатура с множеством модификаторов.

Мои вопросы:

  1. Как Яблоко команда и вариант ключи карты для InputEvent масок?
  2. Как ПК выиграть ключ карта InputEvent маски?
+0

AWTEventListener возвращает все главное и событие мыши в Integer форме, должен проверить, прежде чем, если комбинации клавиш реализованы в Swing API, чтобы потреблять() эти события и то эти события больше не доступны для AWTEventListener, KeyListener, все зависит от того, используется ли Key Event вместе с MosueEvent, тогда есть несколько ошибок в API Java7 (по сравнению с Java6), никогда не нужно так или иначе решать это знаете, что есть ошибки между документами и событиями, выпущенными из ... – mKorbel

+0

[Это (по общему признанию, ol d) Страница Apple] (https://developer.apple.com/library/mac/#documentation/Java/Conceptual/Java14Development/07-NativePlatformIntegration/NativePlatformIntegration.html) говорит, что метафайла Java эквивалентна командному ключу Mac, а Java Alt эквивалентен клавише Option. – VGR

ответ

3

Клавиши «Ярлык» или «Акселератор» легко обрабатываются поперечно-платформенным способом в Swing.

Инструментарий дает идентификатор ключа для родного ярлыка OS ключ:

int shortcut = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); 

При этом вы можете сделать KeyStroke

int key = KeyEvent.VK_Q; // or whatever 
    KeyStroke ks = KeyStroke.getKeyStroke(key, shortcut); 

Метод getMenuShortcutKeyMask является правильным, кросс-платформенным, вс - поддерживаемый способ получения соответствующей маски модификатора для ускорителей меню (быстрые клавиши AKA) для текущей платформы. Он возвращает маску модификатора с использованием соответствующих констант java.awt.event.InputEvent для текущей платформы - на OS X это InputEvent.META_MASK, в Windows это InputEvent.CTRL_MASK. Использование этих литералов вместо вызова getMenuShortcutKeyMask - это плохая форма, хотя она работает.

Еще одна вещь, чтобы отметить, что вы можете использовать комбинации модификаторов в ускорительных нажатий клавиш:

KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_P, shortcut | InputEvent.SHIFT_MASK); 

создать Command + Shift + P нажатие клавиши (на OS X, Control + Shift + P на Windows) , Это позволяет создавать нажатия клавиш ускорителя с помощью мнемонических клавиш, которые используются стандартными элементами меню (например, печать, которая использует Command + P), не противоречив стандартным нажатиям клавиш.

В случае ключа Windows:

// Invoked when a key has been pressed. 
public void keyPressed(KeyEvent e) { 
    // Returns the integer code for the key on the keyboard and if 
    // keyCode is equal to VK_WINDOWS)... 
    if (e.getKeyCode() == KeyEvent.VK_WINDOWS) { 
     // ...call the doIT method. 
     doIT(); 
    } 
} 

приветствий

Смежные вопросы