--- linux-2.6.12/drivers/char/vt.c 2005-06-17 20:48:29.000000000 +0100 +++ linux-dsd/drivers/char/vt.c 2005-06-21 23:28:25.000000000 +0100 @@ -98,6 +98,10 @@ #include #include +#include +#ifdef CONFIG_SPEAKUP_MODULE +#include "speakup/spk_con_module.h" +#endif const struct consw *conswitchp; @@ -720,6 +724,7 @@ int vc_allocate(unsigned int currcons) / } vc->vc_kmalloced = 1; vc_init(vc, vc->vc_rows, vc->vc_cols, 1); + speakup_allocate(vc); } return 0; } @@ -947,6 +952,7 @@ static void lf(struct vc_data *vc) vc->vc_pos += vc->vc_size_row; } vc->vc_need_wrap = 0; + speakup_con_write(vc, "\n",1); } static void ri(struct vc_data *vc) @@ -975,6 +981,7 @@ static inline void bs(struct vc_data *vc vc->vc_pos -= 2; vc->vc_x--; vc->vc_need_wrap = 0; + speakup_bs(vc); } } @@ -1512,6 +1519,7 @@ static void do_con_trol(struct tty_struc break; } vc->vc_pos += (vc->vc_x << 1); + speakup_con_write(vc, " ", 1); return; case 10: case 11: case 12: lf(vc); @@ -2042,6 +2050,7 @@ static int do_con_write(struct tty_struc } if (vc->vc_decim) insert_char(vc, 1); + speakup_con_write(vc, (char *) &tc, 1); scr_writew(himask ? ((vc->vc_attr << 8) & ~himask) + ((tc & 0x100) ? himask : 0) + (tc & 0xff) : (vc->vc_attr << 8) + tc, @@ -2067,6 +2076,7 @@ static int do_con_write(struct tty_struc release_console_sem(); out: + speakup_con_update(vc); return n; #undef FLUSH } @@ -2092,6 +2102,7 @@ static void console_callback(void *ignor /* we only changed when the console had already been allocated - a new console is not created in an interrupt routine */ + speakup_con_update(vc_cons[want_console].d); } want_console = -1; } @@ -2110,6 +2121,7 @@ static void console_callback(void *ignor do_blank_screen(0); blank_timer_expired = 0; } + speakup_con_update(vc_cons[fg_console].d); release_console_sem(); } @@ -2167,6 +2179,7 @@ static void vt_console_print(struct cons /* Contrived structure to try to emulate original need_wrap behaviour * Problems caused when we have need_wrap set on '\n' character */ + speakup_con_write(vc, b, count); while (count--) { c = *b++; if (c == 10 || c == 13 || c == 8 || vc->vc_need_wrap) { @@ -2211,6 +2224,7 @@ static void vt_console_print(struct cons } } set_cursor(vc); + speakup_con_update(vc); quit: clear_bit(0, &printing); @@ -2552,6 +2566,7 @@ static int __init con_init(void) master_display_fg = vc = vc_cons[currcons].d; set_origin(vc); save_screen(vc); + speakup_init(vc); gotoxy(vc, vc->vc_x, vc->vc_y); csi_J(vc, 0); update_screen(vc); @@ -3240,3 +3255,4 @@ EXPORT_SYMBOL(vc_cons); EXPORT_SYMBOL(take_over_console); EXPORT_SYMBOL(give_up_console); #endif +EXPORT_SYMBOL(screen_glyph);