So I sent a lot of mails :) A lot of them are asking to add yet more methods. I'm starting thinking that it's tedious to change that in each and every driver, which is kind of dumb anyway since it's just the same everywhere. So I'd say before doing all that stuff, rework what we thought about adding methods: instead of adding spk_serial_out directly in struct spk_synth - in spk_types.h, just before struct spk_synth, define struct spk_io_ops { int (*serial_out)(struct spk_synth *synth, const char ch); } - in struct spk_synth, add struct spk_io_ops *io_ops; - in serialio.c, add struct spk_io_ops spk_serial_io_ops { .serial_out = spk_serial_out, } - in ttyio.c, add struct spk_io_ops spk_ttyio_io_ops { .serial_out = spk_ttyio_serial_out, } - and in drivers, instead of defining .serial_out = spk_serial_out rather define .io_ops = &spk_serial_io_ops And then you can add the serial_in, serial_in_nowait, tiocmset, send_xchar methods to spk_io_ops instead of spk_synth, thus making switching between serial and tty much less tedious. Note: we need to keep probe, release, and synth_immediate as spk_synth methods since they vary among synth drivers. Samuel _______________________________________________ Speakup mailing list Speakup@xxxxxxxxxxxxxxxxx http://linux-speakup.org/cgi-bin/mailman/listinfo/speakup