toString method
A string representation of this object.
Some classes have a default textual representation,
often paired with a static parse function (like int.parse).
These classes will provide the textual representation as
their string representation.
Other classes have no meaningful textual representation
that a program will care about.
Such classes will typically override toString to provide
useful information when inspecting the object,
mainly for debugging or logging.
Implementation
@override
String toString() {
final mods = [if (ctrl) 'Ctrl', if (alt) 'Alt', if (shift) 'Shift'];
final modStr = mods.isEmpty ? '' : '${mods.join('+')}+';
if (type == KeyType.runes && runes.isNotEmpty) {
final char = String.fromCharCodes(runes);
// Output without quotes for keyMatches compatibility
return 'Key($modStr$char)';
}
// Capitalize key type name
final typeName = type.name;
final capitalizedName = typeName[0].toUpperCase() + typeName.substring(1);
return 'Key($modStr$capitalizedName)';
}