Go to the first, previous, next, last section, table of contents.

## D.2 The driver file

Adding a new printer to a driver module (``print-escp2.c'`, ``print-pcl.c'`, or ``print-canon.c'`---``print-ps.c'` is really ad hoc) requires a bit more planning. Each driver is somewhat different, but they all generally have a vector of printer definitions, and the code does some special casing based on particular printer capabilities. The PCL and Canon drivers are quite similar; the Canon driver was actually cribbed from the PCL driver, but it then returned the favor.

The Epson driver is a little bit different. Canon and PCL printers have some amount of intelligence; a lot of them have specific ink options, and know about specific paper sizes and types, and must be told the right thing. Epson printers have somewhat less intelligence and will more or less do exactly what the host tells it to do in a fairly regular fashion. I actually prefer this; it isn't materially more work for the host to compute things like exact paper sizes and such, it allows a lot more tweaking, and it may be why Epson has been more open with information -- the communication protocol doesn't really contain very much IP, so they have less reason to keep it secret.

Someone else will have to fill in the sections about PCL and Canon printers.

Go to the first, previous, next, last section, table of contents.