in vim-engine/src/main/kotlin/com/maddyhome/idea/vim/api/VimStringParserBase.kt [67:106]
override fun toKeyNotation(keyStroke: KeyStroke): String {
val c = keyStroke.keyChar
val keyCode = keyStroke.keyCode
val modifiers = keyStroke.modifiers
if (c != KeyEvent.CHAR_UNDEFINED && !isControlCharacter(c)) {
return c.toString()
}
var prefix = ""
if (modifiers and InputEvent.META_DOWN_MASK != 0) {
prefix += "M-"
}
if (modifiers and InputEvent.ALT_DOWN_MASK != 0) {
prefix += "A-"
}
if (modifiers and InputEvent.CTRL_DOWN_MASK != 0) {
prefix += "C-"
}
if (modifiers and InputEvent.SHIFT_DOWN_MASK != 0) {
prefix += "S-"
}
var name = getVimKeyValue(keyCode)
if (name != null) {
name = if (containsDisplayUppercaseKeyNames(name)) {
name.uppercase(Locale.getDefault())
} else {
capitalize(name)
}
}
if (name == null) {
val escape = toEscapeNotation(keyStroke)
if (escape != null) {
return escape
}
try {
name = String(Character.toChars(keyCode))
} catch (_: IllegalArgumentException) {
}
}
return if (name != null) "<$prefix$name>" else "<<$keyStroke>>"
}