* @xsize_frac: Width of the display in fractional units
* @xstart_frac: Left margin for the text console in fractional units
* @last_ch: Last character written to the text console on this line
+ * @escape: TRUE if currently accumulating an ANSI escape sequence
+ * @escape_len: Length of accumulated escape sequence so far
+ * @escape_buf: Buffer to accumulate escape sequence
*/
struct vidconsole_priv {
struct stdio_dev sdev;
int xsize_frac;
int xstart_frac;
int last_ch;
+ /*
+ * ANSI escape sequences are accumulated character by character,
+ * starting after the ESC char (0x1b) until the entire sequence
+ * is consumed at which point it is acted upon.
+ */
+ int escape;
+ int escape_len;
+ char escape_buf[32];
};
/**
* positions.
*/
int (*entry_start)(struct udevice *dev);
+
+ /**
+ * backspace() - Handle erasing the last character
+ *
+ * With proportional fonts the vidconsole uclass cannot itself erase
+ * the previous character. This optional method will be called when
+ * a backspace is needed. The driver should erase the previous
+ * character and update the cursor position (xcur_frac, ycur) to the
+ * start of the previous character.
+ *
+ * If not implement, default behaviour will work for fixed-width
+ * characters.
+ */
+ int (*backspace)(struct udevice *dev);
};
/* Get a pointer to the driver operations for a video console device */