function parseKey( key ) {
	var out;
	var seq;

	// If key is already defined, no need to parse it...
	if ( !isUndefined( key.name ) ) {
		return [ pick( key, KEYBINDING_PROPS ) ];
	}
	seq = key.sequence;

	// Check if it's an unrecognized symbol:
	if ( isUnrecognizedSymbol( seq ) ) {
		return [
			{
				'name': seq,
				'ctrl': false,
				'shift': false,
				'meta': false
			}
		];
	}
	// Check if it's a `CTRL+<symbol>` combination:
	if ( hasOwnProp( CTRL_SEQUENCES_KEYMAP, seq ) ) {
		return CTRL_SEQUENCES_KEYMAP[ seq ];
	}
	// Check if it's a `META+<symbol>` combination:
	out = parseMetaSymbolSequence( seq );
	if ( out ) {
		return [ out ];
	}
	return [ pick( key, KEYBINDING_PROPS ) ]; // couldn't parse, return original key
}
Parses a readline keypress object.

@param {Object} key - readline keypress object
@returns {Array<Object>} list of possible key objects