s.append(keyCode); switch (keyCode)
s.append(",keyCode=").append(keyCode);  s.append(",keyText=").append(getKeyText(keyCode));  s.append(",keyChar="); if (isActionKey() || keyCode == VK_SHIFT || keyCode == VK_CONTROL || keyCode == VK_ALT) s.append("Undefined keyChar"); else
  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();  }