keyevent.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,734 行 · 第 1/3 页
JAVA
1,734 行
* @return the key code for this event
*/
public int getKeyCode()
{
return keyCode;
}
/**
* Sets the key code for this event. This must be one of the
* <code>VK_*</code> constants defined in this class.
*
* @param keyCode the new key code for this event
*/
public void setKeyCode(int keyCode)
{
this.keyCode = keyCode;
}
/**
* Returns the Unicode value for the event key. This will be
* <code>CHAR_UNDEFINED</code> if there is no Unicode equivalent for
* this key, usually when this is a KEY_PRESSED or KEY_RELEASED event.
*
* @return the Unicode character for this event
*/
public char getKeyChar()
{
return keyChar;
}
/**
* Sets the Unicode character for this event to the specified value.
*
* @param keyChar the new Unicode character for this event
*/
public void setKeyChar(char keyChar)
{
this.keyChar = keyChar;
}
/**
* Sets the modifier keys to the specified value. This should be a union
* of the bit mask constants from <code>InputEvent</code>. The use of this
* method is not recommended, particularly for KEY_TYPED events, which do
* not check if the modifiers were changed.
*
* @param modifiers the new modifier value, in either old or new style
* @see InputEvent
*/
public void setModifiers(int modifiers)
{
this.modifiers = EventModifier.extend(modifiers);
}
/**
* Returns the keyboard location of the key that generated this event. This
* provides a way to distinguish between keys like left and right shift
* which share a common key code. The result will be one of
* {@link #KEY_LOCATION_UNKNOWN}, {@link #KEY_LOCATION_STANDARD},
* {@link #KEY_LOCATION_LEFT}, {@link #KEY_LOCATION_RIGHT}, or
* {@link #KEY_LOCATION_NUMPAD}.
*
* @return the key location
* @since 1.4
*/
public int getKeyLocation()
{
return keyLocation;
}
/**
* Returns the text name of key code, such as "HOME", "F1", or "A".
*
* XXX Sun claims this can be localized via the awt.properties file - how
* do we implement that?
*
* @return the text name of the key code
*/
public static String getKeyText(int keyCode)
{
switch (keyCode)
{
case VK_CANCEL:
return "Cancel";
case VK_BACK_SPACE:
return "Backspace";
case VK_TAB:
return "Tab";
case VK_ENTER:
return "Enter";
case VK_CLEAR:
return "Clear";
case VK_SHIFT:
return "Shift";
case VK_CONTROL:
return "Ctrl";
case VK_ALT:
return "Alt";
case VK_PAUSE:
return "Pause";
case VK_CAPS_LOCK:
return "Caps Lock";
case VK_KANA:
return "Kana";
case VK_FINAL:
return "Final";
case VK_KANJI:
return "Kanji";
case VK_ESCAPE:
return "Escape";
case VK_CONVERT:
return "Convert";
case VK_NONCONVERT:
return "No Convert";
case VK_ACCEPT:
return "Accept";
case VK_MODECHANGE:
return "Mode Change";
case VK_SPACE:
return "Space";
case VK_PAGE_UP:
return "Page Up";
case VK_PAGE_DOWN:
return "Page Down";
case VK_END:
return "End";
case VK_HOME:
return "Home";
case VK_LEFT:
case VK_KP_LEFT:
return "Left";
case VK_UP:
case VK_KP_UP:
return "Up";
case VK_RIGHT:
case VK_KP_RIGHT:
return "Right";
case VK_DOWN:
case VK_KP_DOWN:
return "Down";
case VK_MINUS:
return "Minus";
case VK_MULTIPLY:
return "NumPad *";
case VK_ADD:
return "NumPad +";
case VK_SEPARATOR:
return "NumPad ,";
case VK_SUBTRACT:
return "NumPad -";
case VK_DECIMAL:
return "NumPad .";
case VK_DIVIDE:
return "NumPad /";
case VK_DELETE:
return "Delete";
case VK_DEAD_GRAVE:
return "Dead Grave";
case VK_DEAD_ACUTE:
return "Dead Acute";
case VK_DEAD_CIRCUMFLEX:
return "Dead Circumflex";
case VK_DEAD_TILDE:
return "Dead Tilde";
case VK_DEAD_MACRON:
return "Dead Macron";
case VK_DEAD_BREVE:
return "Dead Breve";
case VK_DEAD_ABOVEDOT:
return "Dead Above Dot";
case VK_DEAD_DIAERESIS:
return "Dead Diaeresis";
case VK_DEAD_ABOVERING:
return "Dead Above Ring";
case VK_DEAD_DOUBLEACUTE:
return "Dead Double Acute";
case VK_DEAD_CARON:
return "Dead Caron";
case VK_DEAD_CEDILLA:
return "Dead Cedilla";
case VK_DEAD_OGONEK:
return "Dead Ogonek";
case VK_DEAD_IOTA:
return "Dead Iota";
case VK_DEAD_VOICED_SOUND:
return "Dead Voiced Sound";
case VK_DEAD_SEMIVOICED_SOUND:
return "Dead Semivoiced Sound";
case VK_NUM_LOCK:
return "Num Lock";
case VK_SCROLL_LOCK:
return "Scroll Lock";
case VK_AMPERSAND:
return "Ampersand";
case VK_ASTERISK:
return "Asterisk";
case VK_QUOTEDBL:
return "Double Quote";
case VK_LESS:
return "Less";
case VK_PRINTSCREEN:
return "Print Screen";
case VK_INSERT:
return "Insert";
case VK_HELP:
return "Help";
case VK_META:
return "Meta";
case VK_GREATER:
return "Greater";
case VK_BRACELEFT:
return "Left Brace";
case VK_BRACERIGHT:
return "Right Brace";
case VK_BACK_QUOTE:
return "Back Quote";
case VK_QUOTE:
return "Quote";
case VK_ALPHANUMERIC:
return "Alphanumeric";
case VK_KATAKANA:
return "Katakana";
case VK_HIRAGANA:
return "Hiragana";
case VK_FULL_WIDTH:
return "Full-Width";
case VK_HALF_WIDTH:
return "Half-Width";
case VK_ROMAN_CHARACTERS:
return "Roman Characters";
case VK_ALL_CANDIDATES:
return "All Candidates";
case VK_PREVIOUS_CANDIDATE:
return "Previous Candidate";
case VK_CODE_INPUT:
return "Code Input";
case VK_JAPANESE_KATAKANA:
return "Japanese Katakana";
case VK_JAPANESE_HIRAGANA:
return "Japanese Hiragana";
case VK_JAPANESE_ROMAN:
return "Japanese Roman";
case VK_KANA_LOCK:
return "Kana Lock";
case VK_INPUT_METHOD_ON_OFF:
return "Input Method On/Off";
case VK_AT:
return "At";
case VK_COLON:
return "Colon";
case VK_CIRCUMFLEX:
return "Circumflex";
case VK_DOLLAR:
return "Dollar";
case VK_EURO_SIGN:
return "Euro";
case VK_EXCLAMATION_MARK:
return "Exclamation Mark";
case VK_INVERTED_EXCLAMATION_MARK:
return "Inverted Exclamation Mark";
case VK_LEFT_PARENTHESIS:
return "Left Parenthesis";
case VK_NUMBER_SIGN:
return "Number Sign";
case VK_PLUS:
return "Plus";
case VK_RIGHT_PARENTHESIS:
return "Right Parenthesis";
case VK_UNDERSCORE:
return "Underscore";
case VK_COMPOSE:
return "Compose";
case VK_ALT_GRAPH:
return "Alt Graph";
case VK_STOP:
return "Stop";
case VK_AGAIN:
return "Again";
case VK_PROPS:
return "Props";
case VK_UNDO:
return "Undo";
case VK_COPY:
return "Copy";
case VK_PASTE:
return "Paste";
case VK_FIND:
return "Find";
case VK_CUT:
return "Cut";
case VK_COMMA:
case VK_PERIOD:
case VK_SLASH:
case VK_0:
case VK_1:
case VK_2:
case VK_3:
case VK_4:
case VK_5:
case VK_6:
case VK_7:
case VK_8:
case VK_9:
case VK_SEMICOLON:
case VK_EQUALS:
case VK_A:
case VK_B:
case VK_C:
case VK_D:
case VK_E:
case VK_F:
case VK_G:
case VK_H:
case VK_I:
case VK_J:
case VK_K:
case VK_L:
case VK_M:
case VK_N:
case VK_O:
case VK_P:
case VK_Q:
case VK_R:
case VK_S:
case VK_T:
case VK_U:
case VK_V:
case VK_W:
case VK_X:
case VK_Y:
case VK_Z:
case VK_OPEN_BRACKET:
case VK_BACK_SLASH:
case VK_CLOSE_BRACKET:
return "" + (char) keyCode;
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
return "NumPad-" + (char) (keyCode - VK_NUMPAD0);
case VK_F1:
case VK_F2:
case VK_F3:
case VK_F4:
case VK_F5:
case VK_F6:
case VK_F7:
case VK_F8:
case VK_F9:
case VK_F10:
case VK_F11:
case VK_F12:
return "F" + (keyCode - (VK_F1 - 1));
case VK_F13:
case VK_F14:
case VK_F15:
case VK_F16:
case VK_F17:
case VK_F18:
case VK_F19:
case VK_F20:
case VK_F21:
case VK_F22:
case VK_F23:
case VK_F24:
return "F" + (keyCode - (VK_F13 - 13));
default:
// This is funky on negative numbers, but that's Sun's fault.
return "Unknown keyCode: 0x" + (keyCode < 0 ? "-" : "")
+ Integer.toHexString(Math.abs(keyCode));
}
}
/**
* Returns a string describing the modifiers, such as "Shift" or
* "Ctrl+Button1".
*
* XXX Sun claims this can be localized via the awt.properties file - how
* do we implement that?
*
* @param modifiers the old-style modifiers to convert to text
* @return a string representation of the modifiers in this bitmask
*/
public static String getKeyModifiersText(int modifiers)
{
return getModifiersExText(EventModifier.extend(modifiers
& EventModifier.OLD_MASK));
}
/**
* Tests whether or not this key is an action key. An action key typically
* does not fire a KEY_TYPED event, and is not a modifier.
*
* @return true if this is an action key
*/
public boolean isActionKey()
{
switch (keyCode)
{
case VK_PAUSE:
case VK_CAPS_LOCK:
case VK_KANA:
case VK_FINAL:
case VK_KANJI:
case VK_CONVERT:
case VK_NONCONVERT:
case VK_ACCEPT:
case VK_MODECHANGE:
case VK_PAGE_UP:
case VK_PAGE_DOWN:
case VK_END:
case VK_HOME:
case VK_LEFT:
case VK_UP:
case VK_RIGHT:
case VK_DOWN:
case VK_F1:
case VK_F2:
case VK_F3:
case VK_F4:
case VK_F5:
case VK_F6:
case VK_F7:
case VK_F8:
case VK_F9:
case VK_F10:
case VK_F11:
case VK_F12:
case VK_NUM_LOCK:
case VK_SCROLL_LOCK:
case VK_PRINTSCREEN:
case VK_INSERT:
case VK_HELP:
case VK_KP_UP:
case VK_KP_DOWN:
case VK_KP_LEFT:
case VK_KP_RIGHT:
case VK_ALPHANUMERIC:
case VK_KATAKANA:
case VK_HIRAGANA:
case VK_FULL_WIDTH:
case VK_HALF_WIDTH:
case VK_ROMAN_CHARACTERS:
case VK_ALL_CANDIDATES:
case VK_PREVIOUS_CANDIDATE:
case VK_CODE_INPUT:
case VK_JAPANESE_KATAKANA:
case VK_JAPANESE_HIRAGANA:
case VK_JAPANESE_ROMAN:
case VK_KANA_LOCK:
case VK_INPUT_METHOD_ON_OFF:
case VK_F13:
case VK_F14:
case VK_F15:
case VK_F16:
case VK_F17:
case VK_F18:
case VK_F19:
case VK_F20:
case VK_F21:
case VK_F22:
case VK_F23:
case VK_F24:
case VK_STOP:
case VK_AGAIN:
case VK_PROPS:
case VK_UNDO:
case VK_COPY:
case VK_PASTE:
case VK_FIND:
case VK_CUT:
return true;
default:
return false;
}
}
/**
* Returns a string identifying the event. This is formatted as the field
* name of the id type, followed by the keyCode, then the keyChar (if
* available), modifiers (if any), extModifiers (if any), and keyLocation.
* The keyChar is available unless the keyCode is Backspace, Tab, Enter,
* Escape, Numpad-[0-9], Delete, or a keyCode which is an action.
*
* @return a string identifying the event
*/
public String paramString()
{
StringBuffer s = new StringBuffer();
switch (id)
{
case KEY_PRESSED:
s.append("KEY_PRESSED,keyCode=");
break;
case KEY_RELEASED:
s.append("KEY_RELEASED,keyCode=");
break;
case KEY_TYPED:
s.append("KEY_TYPED,keyCode=");
break;
default:
s.append("unknown type,keyCode=");
}
s.append(keyCode);
switch (keyCode)
{
default:
if (! isActionKey())
{
s.append(",keyChar='").append(keyChar).append('\'');
break;
}
// Fallthrough.
case VK_BACK_SPACE:
case VK_TAB:
case VK_ENTER:
case VK_ESCAPE:
case VK_NUMPAD0:
case VK_NUMPAD1:
case VK_NUMPAD2:
case VK_NUMPAD3:
case VK_NUMPAD4:
case VK_NUMPAD5:
case VK_NUMPAD6:
case VK_NUMPAD7:
case VK_NUMPAD8:
case VK_NUMPAD9:
case VK_DELETE:
s.append(',').append(getKeyText(keyCode));
}
if ((modifiers & CONVERT_MASK) != 0)
s.append(",modifiers=").append(getModifiersExText(modifiers
& CONVERT_MASK));
if (modifiers != 0)
s.append(",extModifiers=").append(getModifiersExText(modifiers));
s.append(",keyLocation=KEY_LOCATION_");
switch (keyLocation)
{
case KEY_LOCATION_UNKNOWN:
s.append("UNKNOWN");
break;
case KEY_LOCATION_STANDARD:
s.append("STANDARD");
break;
case KEY_LOCATION_LEFT:
s.append("LEFT");
break;
case KEY_LOCATION_RIGHT:
s.append("RIGHT");
break;
case KEY_LOCATION_NUMPAD:
s.append("NUMPAD");
}
return s.toString();
}
/**
* Reads in the object from a serial stream.
*
* @param s the stream to read from
* @throws IOException if deserialization fails
* @throws ClassNotFoundException if deserialization fails
* @serialData default, except that the modifiers are converted to new style
*/
private void readObject(ObjectInputStream s)
throws IOException, ClassNotFoundException
{
s.defaultReadObject();
modifiers = EventModifier.extend(modifiers);
}
} // class KeyEvent
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?