1/*
2 *   Print plug-in CANON BJL driver for the GIMP.
3 *
4 *   Copyright 1997-2000 Michael Sweet (mike@easysw.com),
5 *	Robert Krawitz (rlk@alum.mit.edu) and
6 *      Andy Thaller (thaller@ph.tum.de)
7 *   Copyright (c) 2006 Sascha Sommer (saschasommer@freenet.de)
8 *
9 *   This program is free software; you can redistribute it and/or modify it
10 *   under the terms of the GNU General Public License as published by the Free
11 *   Software Foundation; either version 2 of the License, or (at your option)
12 *   any later version.
13 *
14 *   This program is distributed in the hope that it will be useful, but
15 *   WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 *   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
17 *   for more details.
18 *
19 *   You should have received a copy of the GNU General Public License
20 *   along with this program; if not, write to the Free Software
21 *   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 */
23
24/* This file contains the capabilities of the various canon printers
25*/
26
27#ifndef GUTENPRINT_INTERNAL_CANON_PRINTERS_H
28#define GUTENPRINT_INTERNAL_CANON_PRINTERS_H
29
30
31typedef struct canon_caps {
32  const char* name;   /* model name */
33  int model_id;       /* model ID code for use in commands */
34  int max_width;      /* maximum printable paper size */
35  int max_height;
36  int border_left;    /* left margin, points */
37  int border_right;   /* right margin, points */
38  int border_top;     /* absolute top margin, points */
39  int border_bottom;  /* absolute bottom margin, points */
40  int raster_lines_per_block; /* number of raster lines in every F) command */
41  const canon_slotlist_t* slotlist; /*available paperslots */
42  unsigned long features;  /* special bjl settings */
43  unsigned char ESC_r_arg; /* argument used for the ESC (r command during init */
44  const char** control_cmdlist;
45  const canon_modelist_t* modelist;
46  const canon_paperlist_t* paperlist;
47  const char *lum_adjustment;
48  const char *hue_adjustment;
49  const char *sat_adjustment;
50  const char *channel_order; /* (in gutenprint notation) 0123 => KCMY,  1230 => CMYK etc. */
51} canon_cap_t;
52
53static const char standard_sat_adjustment[] =
54"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
55"<gutenprint>\n"
56"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
57"<sequence count=\"48\" lower-bound=\"0\" upper-bound=\"4\">\n"
58/* C */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* B */
59/* B */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* M */
60/* M */  "1.00 0.95 0.90 0.90 0.90 0.90 0.90 0.90 "  /* R */
61/* R */  "0.90 0.95 0.95 1.00 1.00 1.00 1.00 1.00 "  /* Y */
62/* Y */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* G */
63/* G */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* C */
64"</sequence>\n"
65"</curve>\n"
66"</gutenprint>\n";
67
68static const char standard_lum_adjustment[] =
69"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
70"<gutenprint>\n"
71"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
72"<sequence count=\"48\" lower-bound=\"0\" upper-bound=\"4\">\n"
73/* C */  "0.65 0.67 0.70 0.72 0.77 0.80 0.82 0.85 "  /* B */
74/* B */  "0.87 0.86 0.82 0.79 0.79 0.82 0.85 0.88 "  /* M */
75/* M */  "0.92 0.95 0.96 0.97 0.97 0.97 0.96 0.96 "  /* R */
76/* R */  "0.96 0.97 0.97 0.98 0.99 1.00 1.00 1.00 "  /* Y */
77/* Y */  "1.00 0.97 0.95 0.94 0.93 0.92 0.90 0.86 "  /* G */
78/* G */  "0.79 0.76 0.71 0.68 0.68 0.68 0.68 0.66 "  /* C */
79"</sequence>\n"
80"</curve>\n"
81"</gutenprint>\n";
82
83static const char standard_hue_adjustment[] =
84"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
85"<gutenprint>\n"
86"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
87"<sequence count=\"48\" lower-bound=\"-6\" upper-bound=\"6\">\n"
88/* C */  "0.00 0.06 0.10 0.10 0.06 -.01 -.09 -.17 "  /* B */
89/* B */  "-.25 -.33 -.38 -.38 -.36 -.34 -.34 -.34 "  /* M */
90/* M */  "-.34 -.34 -.36 -.40 -.50 -.40 -.30 -.20 "  /* R */
91/* R */  "-.12 -.07 -.04 -.02 0.00 0.00 0.00 0.00 "  /* Y */
92/* Y */  "0.00 0.00 0.00 -.05 -.10 -.15 -.22 -.24 "  /* G */
93/* G */  "-.26 -.30 -.33 -.28 -.25 -.20 -.13 -.06 "  /* C */
94"</sequence>\n"
95"</curve>\n"
96"</gutenprint>\n";
97
98static const char iP4200_sat_adjustment[] =
99"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
100"<gutenprint>\n"
101"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
102"<sequence count=\"48\" lower-bound=\"0\" upper-bound=\"4\">\n"
103/* C */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* B */
104/* B */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* M */
105/* M */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* R */
106/* R */  "1.00 1.00 1.05 1.10 1.20 1.26 1.34 1.41 "  /* Y */
107/* Y */  "1.38 1.32 1.24 1.15 1.08 1.00 1.00 1.00 "  /* G */
108/* G */  "1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 "  /* C */
109"</sequence>\n"
110"</curve>\n"
111"</gutenprint>\n";
112
113static const char iP4200_lum_adjustment[] =
114"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
115"<gutenprint>\n"
116"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
117"<sequence count=\"48\" lower-bound=\"0\" upper-bound=\"4\">\n"
118/* C */  "0.52 0.56 0.61 0.67 0.79 0.86 0.91 0.98 "  /* B */
119/* B */  "0.97 0.87 0.84 0.81 0.78 0.76 0.74 0.73 "  /* M */
120/* M */  "0.74 0.76 0.78 0.83 0.86 0.90 0.98 1.04 "  /* R */
121/* R */  "1.04 1.04 1.04 1.04 1.03 1.03 1.03 1.02 "  /* Y */
122/* Y */  "1.02 0.97 0.92 0.88 0.83 0.78 0.74 0.71 "  /* G */
123/* G */  "0.70 0.62 0.59 0.53 0.48 0.52 0.53 0.51 "  /* C */
124"</sequence>\n"
125"</curve>\n"
126"</gutenprint>\n";
127
128static const char iP4200_hue_adjustment[] =
129"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
130"<gutenprint>\n"
131"<curve wrap=\"wrap\" type=\"linear\" gamma=\"0\">\n"
132"<sequence count=\"48\" lower-bound=\"-6\" upper-bound=\"6\">\n"
133/* C */  "0.00 -.20 -.30 -.40 -.40 -.30 -.20 0.00 "  /* B */
134/* B */  "0.00 -.04 -.01 0.08 0.14 0.16 0.09 0.00 "  /* M */
135/* M */  "0.00 0.00 -.05 -.07 -.10 -.08 -.06 0.00 "  /* R */
136/* R */  "0.00 0.04 0.08 0.10 0.13 0.10 0.07 0.00 "  /* Y */
137/* Y */  "0.00 -.11 -.18 -.23 -.30 -.37 -.46 -.54 "  /* G */
138/* G */  "-.53 -.52 -.57 -.50 -.41 -.25 -.17 0.00 "  /* C */
139"</sequence>\n"
140"</curve>\n"
141"</gutenprint>\n";
142
143static const char* control_cmd_ackshort[] = {
144  "AckTime=Short",
145  NULL
146};
147
148static const char* control_cmd_PIXMA_iP4000[] = {
149/*"SetTime=20060722092503", */         /*what is this for?*/
150  "SetSilent=OFF",
151  "PEdgeDetection=ON",
152  "SelectParallel=ECP",
153  NULL
154};
155
156static const char* control_cmd_PIXMA_iP4200[] = {
157/*"SetTime=20060722092503", */         /*original driver sends current time, is it needed?*/
158  "SetSilent=OFF",
159  "PEdgeDetection=ON",
160  NULL
161};
162
163static const char* control_cmd_MULTIPASS_MP150[] = {
164  "AckTime=Short",
165  "MediaDetection=ON",
166  NULL
167};
168
169static const char* control_cmd_PIXMA_iP2700[] = {
170/*"SetTime=20060722092503", */         /*what is this for?*/
171  "SetSilent=OFF",
172  NULL
173};
174
175static const char iP4500_channel_order[STP_NCOLORS] = {1,2,3,0}; /* CMYK */
176
177static const canon_cap_t canon_model_capabilities[] =
178{
179  /* the first printer is used as default in case something has gone wrong in printers.xml */
180  { /* Canon MULTIPASS MP830 */
181    "PIXMA MP830", 3,          /*model, model_id*/
182    842, 17*72,       /* max paper width and height */
183    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
184    8,
185    &canon_PIXMA_iP4000_slotlist,
186    /* CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px,0,control_cmd_MULTIPASS_MP150, */  /*features */
187    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_MULTIPASS_MP150,  /*features */
188    &canon_MULTIPASS_MP830_modelist,
189    /* &canon_PIXMA_iP4000_paperlist, */
190    &canon_MULTIPASS_MP600_paperlist,
191    NULL,
192    NULL,
193    NULL,
194    NULL
195  },
196  { /* Canon MULTIPASS MP800 */
197    "PIXMA MP800", 3,          /*model, model_id*/
198    842, 17*72,       /* max paper width and height */
199    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
200    8,
201    &canon_PIXMA_iP4000_slotlist,
202    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4200,  /*features */
203    &canon_MULTIPASS_MP800_modelist,
204    &canon_MULTIPASS_MP600_paperlist,
205    NULL,
206    NULL,
207    NULL,
208    NULL
209  },
210  { /* Canon MULTIPASS MP810 */
211    "PIXMA MP810", 3,          /*model, model_id*/
212    842, 17*72,       /* max paper width and height */
213    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
214    8,
215    &canon_PIXMA_iP4000_slotlist,
216    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4200,  /*features */
217    &canon_MULTIPASS_MP810_modelist,
218    &canon_MULTIPASS_MP600_paperlist,
219    NULL,
220    NULL,
221    NULL,
222    NULL
223  },
224  { /* Canon PIXMA MP950 */
225    "PIXMA MP950", 3,          /*model, model_id*/
226    842, 17*72,       /* max paper width and height */
227    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
228    8,
229    &canon_PIXMA_iP4000_slotlist,
230    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4200,  /* features */
231    &canon_MULTIPASS_MP950_modelist,
232    &canon_PIXMA_iP4000_paperlist,
233    NULL,
234    NULL,
235    NULL,
236    NULL
237  },
238  { /* Canon PIXMA MP960 */
239    "PIXMA MP960", 3,          /*model, model_id*/
240    842, 17*72,       /* max paper width and height */
241    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
242    8,
243    &canon_PIXMA_iP4600_slotlist, /* changed from iP4000 */
244    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4200,  /* features */
245    &canon_MULTIPASS_MP960_modelist,
246    &canon_PIXMA_iP4600_paperlist, /* changed from iP4000 */
247    NULL,
248    NULL,
249    NULL,
250    iP4500_channel_order
251  },
252  { /* Canon PIXMA MP970 */
253    "PIXMA MP970", 3,          /*model, model_id*/
254    842, 17*72,       /* max paper width and height */
255    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
256    8,
257    &canon_PIXMA_iP4000_slotlist,
258    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x64,control_cmd_MULTIPASS_MP150,  /*features */
259    &canon_MULTIPASS_MP970_modelist,
260    &canon_PIXMA_iP4000_paperlist,
261    NULL,
262    NULL,
263    NULL,
264    NULL
265  },
266  { /* Canon PIXMA MP980 */
267    "PIXMA MP980", 3,          /*model, model_id*/
268    842, 17*72,       /* max paper width and height */
269    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
270    8,
271    &canon_PIXMA_iP4600_slotlist,
272    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4200,  /*features */
273    &canon_MULTIPASS_MP980_modelist,
274    &canon_MULTIPASS_MP980_paperlist,
275    NULL,
276    NULL,
277    NULL,
278    NULL
279  },
280  { /* Canon PIXMA MP990 --- uses XML */
281    "PIXMA MP990", 3,          /*model, model_id*/
282    842, 17*72,       /* max paper width and height */
283    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
284    8,
285    &canon_PIXMA_iP4600_slotlist,
286    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /*features */
287    &canon_MULTIPASS_MP990_modelist,
288    &canon_MULTIPASS_MP990_paperlist,
289    NULL,
290    NULL,
291    NULL,
292    NULL
293  },
294
295  /* ******************************** */
296  /*                                  */
297  /* tested and color-adjusted models */
298  /*                                  */
299  /* ******************************** */
300
301
302
303
304  /* ************************************ */
305  /*                                      */
306  /* tested models w/out color-adjustment */
307  /*                                      */
308  /* ************************************ */
309
310  { /* Canon S200x *//* heads: BC-24 */
311    "S200", 3,
312    618, 936,       /* 8.58" x 13 " */
313    10, 10, 9, 20,
314    8,
315    &canon_default_slotlist,
316    CANON_CAP_STD1 | CANON_CAP_rr,0x61,NULL,
317    &canon_S200_modelist,
318    &canon_default_paperlist,
319    NULL,
320    NULL,
321    NULL,
322    NULL
323  },
324
325  { /* Canon BJC S300 */
326    "S300", 3,
327    842, 17*72,
328    11, 9, 10, 18,
329    8,
330    &canon_default_slotlist,
331    CANON_CAP_STD1 | CANON_CAP_r,0x61,control_cmd_ackshort,
332    &canon_BJC_8500_modelist,
333    &canon_default_paperlist,
334    NULL,
335    NULL,
336    NULL,
337    NULL
338  },
339
340  { /* Canon  BJ 30   *//* heads: BC-10 */
341    "30", 1,
342    9.5*72, 14*72,
343    11, 9, 10, 18,
344    8,
345    &canon_default_slotlist,
346    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
347    &canon_BJC_30_modelist,
348    &canon_default_paperlist,
349    NULL,
350    NULL,
351    NULL,
352    NULL
353  },
354  { /* Canon  BJC 85  *//* heads: BC-20 BC-21 BC-22 */
355    "85", 1,
356    9.5*72, 14*72,
357    11, 9, 10, 18,
358    8,
359    &canon_default_slotlist,
360    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
361    &canon_BJC_85_modelist,
362    &canon_default_paperlist,
363    NULL,
364    NULL,
365    NULL,
366    NULL
367  },
368
369  { /* Canon BJC 4300 *//* heads: BC-20 BC-21 BC-22 BC-29 */
370    "4300", 1,
371    618, 936,      /* 8.58" x 13 " */
372    11, 9, 10, 18,
373    8,
374    &canon_default_slotlist,
375    CANON_CAP_STD0,0,NULL,
376    &canon_BJC_4300_modelist,
377    &canon_default_paperlist,
378    NULL,
379    NULL,
380    NULL,
381    NULL
382  },
383
384  { /* Canon BJC 4400 *//* heads: BC-20 BC-21 BC-22 BC-29 */
385    "4400", 1,
386    9.5*72, 14*72,
387    11, 9, 10, 18,
388    8,
389    &canon_default_slotlist,
390    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
391    &canon_BJC_4400_modelist,
392    &canon_default_paperlist,
393    NULL,
394    NULL,
395    NULL,
396    NULL
397  },
398
399  { /* Canon BJC 6000 *//* heads: BC-30/BC-31 BC-32/BC-31 */
400    "6000", 3,
401    618, 936,      /* 8.58" x 13 " */
402    11, 9, 10, 18,
403    8,
404    &canon_default_slotlist,
405    CANON_CAP_STD1,0,control_cmd_ackshort,
406    &canon_BJC_6000_modelist,
407    &canon_default_paperlist,
408    NULL,
409    NULL,
410    NULL,
411    NULL
412  },
413
414  { /* Canon BJC 6200 *//* heads: BC-30/BC-31 BC-32/BC-31 */
415    "6200", 3,
416    618, 936,      /* 8.58" x 13 " */
417    11, 9, 10, 18,
418    8,
419    &canon_default_slotlist,
420    CANON_CAP_STD1,0,control_cmd_ackshort,
421    &canon_BJC_6000_modelist,
422    &canon_default_paperlist,
423    NULL,
424    NULL,
425    NULL,
426    NULL
427  },
428
429  { /* Canon BJC 6500 *//* heads: BC-30/BC-31 BC-32/BC-31 */
430    "6500", 3,
431    842, 17*72,
432    11, 9, 10, 18,
433    8,
434    &canon_default_slotlist,
435    CANON_CAP_STD1,0,NULL,
436    &canon_BJC_6000_modelist,
437    &canon_default_paperlist,
438    NULL,
439    NULL,
440    NULL,
441    NULL
442  },
443  { /* Canon BJC 8200 *//* heads: BC-50 */
444    "8200", 3,
445    842, 17*72,
446    11, 9, 10, 18,
447    8,
448    &canon_default_slotlist,
449    CANON_CAP_STD1 | CANON_CAP_r,0x61,control_cmd_ackshort,
450    &canon_BJC_8200_modelist,
451    &canon_default_paperlist,
452    NULL,
453    NULL,
454    NULL,
455    NULL
456  },
457  { /* Canon S500 */
458    "S500", 3,
459    842, 17*72,
460    10, 10, 15, 15,
461    8,
462    &canon_default_slotlist,
463    CANON_CAP_STD0 | CANON_CAP_r | CANON_CAP_p,0x61,control_cmd_ackshort,
464    &canon_S500_modelist,
465    &canon_default_paperlist,
466    NULL,
467    NULL,
468    NULL,
469    NULL
470  },
471
472
473  /* *************** */
474  /*                 */
475  /* untested models */
476  /*                 */
477  /* *************** */
478
479  { /* Canon BJC 210 *//* heads: BC-02 BC-05 BC-06 */
480    "210", 1,
481    618, 936,      /* 8.58" x 13 " */
482    11, 9, 10, 18,
483    8,
484    &canon_default_slotlist,
485    CANON_CAP_STD0,0,NULL,
486    &canon_BJC_210_modelist,
487    &canon_default_paperlist,
488    NULL,
489    NULL,
490    NULL,
491    NULL
492  },
493  { /* Canon BJC 240 *//* heads: BC-02 BC-05 BC-06 */
494    "240", 1,
495    618, 936,      /* 8.58" x 13 " */
496    11, 9, 10, 18,
497    8,
498    &canon_default_slotlist,
499    CANON_CAP_STD0,0,NULL,
500    &canon_BJC_240_modelist,
501    &canon_default_paperlist,
502    NULL,
503    NULL,
504    NULL,
505    NULL
506  },
507  { /* Canon BJC 250 *//* heads: BC-02 BC-05 BC-06 */
508    "250", 1,
509    618, 936,      /* 8.58" x 13 " */
510    11, 9, 10, 18,
511    8,
512    &canon_default_slotlist,
513    CANON_CAP_STD0,0,NULL,
514    &canon_BJC_240_modelist,
515    &canon_default_paperlist,
516    NULL,
517    NULL,
518    NULL,
519    NULL
520  },
521  { /* Canon BJC 1000 *//* heads: BC-02 BC-05 BC-06 */
522    "1000", 1,
523    842, 17*72,
524    11, 9, 10, 18,
525    8,
526    &canon_default_slotlist,
527    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
528    &canon_BJC_240_modelist,
529    &canon_default_paperlist,
530    NULL,
531    NULL,
532    NULL,
533    NULL
534  },
535  { /* Canon BJC 2000 *//* heads: BC-20 BC-21 BC-22 BC-29 */
536    "2000", 1,
537    842, 17*72,
538    11, 9, 10, 18,
539    8,
540    &canon_default_slotlist,
541    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
542    &canon_BJC_2000_modelist,
543    &canon_default_paperlist,
544    NULL,
545    NULL,
546    NULL,
547    NULL
548  },
549  { /* Canon BJC 3000 *//* heads: BC-30 BC-33 BC-34 */
550    "3000", 3,
551    842, 17*72,
552    10, 10, 9, 15,
553    8,
554    &canon_default_slotlist,
555    CANON_CAP_STD0 | CANON_CAP_a | CANON_CAP_p,0,NULL, /*FIX? should have _r? */
556    &canon_BJC_3000_modelist,
557    &canon_default_paperlist,
558    NULL,
559    NULL,
560    NULL,
561    NULL
562  },
563  { /* Canon BJC 6100 *//* heads: BC-30/BC-31 BC-32/BC-31 */
564    "6100", 3,
565    842, 17*72,
566    11, 9, 10, 18,
567    8,
568    &canon_default_slotlist,
569    CANON_CAP_STD1 | CANON_CAP_a | CANON_CAP_r,0x61,NULL,
570    &canon_BJC_3000_modelist,
571    &canon_default_paperlist,
572    NULL,
573    NULL,
574    NULL,
575    NULL
576  },
577  { /* Canon BJC 7000 *//* heads: BC-60/BC-61 BC-60/BC-62   ??????? */
578    "7000", 3,
579    842, 17*72,
580    11, 9, 10, 18,
581    8,
582    &canon_default_slotlist,
583    CANON_CAP_STD1,0,NULL,
584    &canon_BJC_7000_modelist,
585    &canon_default_paperlist,
586    NULL,
587    NULL,
588    NULL,
589    NULL
590  },
591  { /* Canon BJC i560 */
592    "i560", 3,
593    842, 17*72,
594    11, 9, 10, 18,
595    8,
596    &canon_default_slotlist,
597    CANON_CAP_STD1,0,NULL,
598    &canon_BJC_i560_modelist,
599    &canon_default_paperlist,
600    NULL,
601    NULL,
602    NULL,
603    NULL
604  },
605  { /* Canon BJC 7100 *//* heads: BC-60/BC-61 BC-60/BC-62   ??????? */
606    "7100", 3,
607    842, 17*72,
608    11, 9, 10, 18,
609    8,
610    &canon_default_slotlist,
611    CANON_CAP_STD0,0,NULL,
612    &canon_BJC_7100_modelist,
613    &canon_default_paperlist,
614    NULL,
615    NULL,
616    NULL,
617    NULL
618  },
619  { /* Canon BJC i80 *//* heads: BC-60/BC-61 BC-60/BC-62   ??????? */
620    "i80", 3,
621    842, 17*72,
622    11, 9, 10, 18,
623    8,
624    &canon_default_slotlist,
625    CANON_CAP_STD0,0,NULL,
626    &canon_BJC_i80_modelist,
627    &canon_default_paperlist,
628    NULL,
629    NULL,
630    NULL,
631    NULL
632  },
633
634  /*****************************/
635  /*                           */
636  /*  extremely fuzzy models   */
637  /* (might never work at all) */
638  /*                           */
639  /*****************************/
640
641  { /* Canon BJC 5100 *//* heads: BC-20 BC-21 BC-22 BC-23 BC-29 */
642    "5100", 1,
643    17*72, 22*72,
644    11, 9, 10, 18,
645    8,
646    &canon_default_slotlist,
647    CANON_CAP_STD0,0,NULL,
648    &canon_BJC_3000_modelist,
649    &canon_default_paperlist,
650    NULL,
651    NULL,
652    NULL,
653    NULL
654  },
655  { /* Canon BJC 5500 *//* heads: BC-20 BC-21 BC-29 */
656    "5500", 1,
657    22*72, 34*72,
658    11, 9, 10, 18,
659    8,
660    &canon_default_slotlist,
661    CANON_CAP_STD0 | CANON_CAP_a,0,NULL,
662    &canon_BJC_5500_modelist,
663    &canon_default_paperlist,
664    NULL,
665    NULL,
666    NULL,
667    NULL
668  },
669  { /* Canon BJC 6500 *//* heads: BC-30/BC-31 BC-32/BC-31 */
670    "6500", 3,
671    17*72, 22*72,
672    11, 9, 10, 18,
673    8,
674    &canon_default_slotlist,
675    CANON_CAP_STD1 | CANON_CAP_a,0,NULL,
676    &canon_BJC_3000_modelist,
677    &canon_default_paperlist,
678    NULL,
679    NULL,
680    NULL,
681    NULL
682  },
683  { /* Canon BJC 8500 *//* heads: BC-80/BC-81 BC-82/BC-81 */
684    "8500", 3,
685    17*72, 22*72,
686    11, 9, 10, 18,
687    8,
688    &canon_default_slotlist,
689    CANON_CAP_STD0,0,NULL,
690    &canon_BJC_8500_modelist,
691    &canon_default_paperlist,
692    NULL,
693    NULL,
694    NULL,
695    NULL
696  },
697  { /* Canon PIXMA iP1000 */
698    "PIXMA iP1000", 3,          /*model, model_id*/
699    842, 17*72,       /* max paper width and height */
700    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
701    8,
702    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
703    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
704    &canon_PIXMA_iP1000_modelist,
705    &canon_PIXMA_iP1000_paperlist,
706    NULL,
707    NULL,
708    NULL,
709    NULL
710  },
711  { /* Canon PIXMA iP1200 --- iP1300 same */
712    "PIXMA iP1200", 3,          /*model, model_id*/
713    842, 17*72,       /* max paper width and height */
714    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
715    8,
716    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
717    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
718    &canon_PIXMA_iP1200_modelist,
719    &canon_PIXMA_iP1200_paperlist,
720    NULL,
721    NULL,
722    NULL,
723    NULL
724  },
725  { /* Canon PIXMA iP1500 */
726    "PIXMA iP1500", 3,          /*model, model_id*/
727    842, 17*72,       /* max paper width and height */
728    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
729    8,
730    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
731    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
732    &canon_PIXMA_iP1500_modelist,
733    &canon_PIXMA_iP1500_paperlist,
734    NULL,
735    NULL,
736    NULL,
737    NULL
738  },
739  { /* Canon PIXMA iP1600 */
740    "PIXMA iP1600", 3,          /*model, model_id*/
741    842, 17*72,       /* max paper width and height */
742    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
743    8,
744    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
745    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
746    &canon_MULTIPASS_MP170_modelist,
747    &canon_PIXMA_iP1500_paperlist,
748    NULL,
749    NULL,
750    NULL,
751    NULL
752  },
753  { /* Canon PIXMA iP1900 */
754    "PIXMA iP1900", 3,          /*model, model_id*/
755    842, 17*72,       /* max paper width and height */
756    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
757    8,
758    &canon_MULTIPASS_MP250_slotlist, /* rear only */
759    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
760    &canon_PIXMA_iP1900_modelist,
761    &canon_PIXMA_iP1900_paperlist,
762    NULL,
763    NULL,
764    NULL,
765    NULL
766  },
767  { /* Canon PIXMA iP2000 */
768    "PIXMA iP2000", 3,          /*model, model_id*/
769    842, 17*72,       /* max paper width and height */
770    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
771    8,
772    &canon_PIXMA_iP4000_slotlist,
773    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x61,control_cmd_PIXMA_iP4000,  /*features */
774    &canon_PIXMA_iP2000_modelist,
775    &canon_PIXMA_iP4000_paperlist,
776    NULL,
777    NULL,
778    NULL,
779    NULL
780  },
781  { /* Canon PIXMA iP2200 */
782    "PIXMA iP2200", 3,          /*model, model_id*/
783    842, 17*72,       /* max paper width and height */
784    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
785    8,
786    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
787    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
788    &canon_PIXMA_iP1900_modelist,
789    &canon_PIXMA_iP2200_paperlist,
790    NULL,
791    NULL,
792    NULL,
793    NULL
794  },
795  { /* Canon PIXMA iP2500 */
796    "PIXMA iP2500", 3,          /*model, model_id*/
797    842, 17*72,       /* max paper width and height */
798    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
799    8,
800    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
801    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
802    &canon_PIXMA_iP1900_modelist,
803    &canon_PIXMA_iP2200_paperlist,/* OHP experimental */
804    NULL,
805    NULL,
806    NULL,
807    NULL
808  },
809  { /* Canon PIXMA iP2600 */
810    "PIXMA iP2600", 3,          /*model, model_id*/
811    842, 17*72,       /* max paper width and height */
812    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
813    8,
814    &canon_MULTIPASS_MP170_slotlist, /* auto sheet feeder only */
815    CANON_CAP_STD0,0,control_cmd_PIXMA_iP4000,  /*features */
816    &canon_PIXMA_iP1900_modelist,
817    &canon_PIXMA_iP2600_paperlist,
818    NULL,
819    NULL,
820    NULL,
821    NULL
822  },
823  { /* Canon PIXMA iP2700 */
824    "PIXMA iP2700", 3,          /*model, model_id*/
825    842, 17*72,       /* max paper width and height */
826    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
827    8,
828    &canon_MULTIPASS_MP250_slotlist, /* rear only */
829    CANON_CAP_STD0|CANON_CAP_P|CANON_CAP_I|CANON_CAP_px|CANON_CAP_T|CANON_CAP_XML,0,control_cmd_PIXMA_iP2700,  /*features */
830    &canon_PIXMA_iP2700_modelist,
831    &canon_PIXMA_iP2700_paperlist,
832    NULL,
833    NULL,
834    NULL,
835    iP4500_channel_order
836  },
837  { /* Canon PIXMA iP3000 */
838    "PIXMA iP3000", 3,          /*model, model_id*/
839    842, 17*72,       /* max paper width and height */
840    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
841    8,
842    &canon_PIXMA_iP4000_slotlist,
843    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
844    &canon_PIXMA_iP3000_modelist,
845    &canon_PIXMA_iP4000_paperlist,
846    NULL,
847    NULL,
848    NULL,
849    NULL
850  },
851  { /* Canon PIXMA iP3100 */
852    "PIXMA iP3100", 3,          /*model, model_id*/
853    842, 17*72,       /* max paper width and height */
854    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
855    8,
856    &canon_PIXMA_iP3100_slotlist,
857    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
858    &canon_PIXMA_iP3100_modelist,
859    &canon_PIXMA_iP3100_paperlist,
860    NULL,
861    NULL,
862    NULL,
863    NULL
864  },
865  { /* Canon PIXMA iP4000 */
866    "PIXMA iP4000", 3,          /*model, model_id*/
867    842, 17*72,       /* max paper width and height */
868    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
869    8,
870    &canon_PIXMA_iP4000_slotlist,
871    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px /*|CANON_CAP_I*/,0x64,control_cmd_PIXMA_iP4000,  /*features */
872    &canon_PIXMA_iP4000_modelist,
873    &canon_PIXMA_iP4000_paperlist,
874    NULL,
875    NULL,
876    NULL,
877    NULL
878  },
879  { /* PIXMA MP740 (== iP4000 without duplex) */
880    "PIXMA MP740", 3,          /*model, model_id*/
881    842, 17*72,       /* max paper width and height */
882    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
883    8,
884    &canon_PIXMA_iP4000_slotlist,
885    CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_px /*,|CANON_CAP_I*/,0x64,control_cmd_PIXMA_iP4000,  /*features */
886    &canon_PIXMA_iP4000_modelist,
887    &canon_PIXMA_iP4000_paperlist,
888    NULL,
889    NULL,
890    NULL,
891    NULL
892  },
893  { /* Canon PIXMA iP5300, MP610 */
894    "PIXMA iP5300", 3,          /*model, model_id*/
895    842, 17*72,       /* max paper width and height */
896    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
897    8,
898    &canon_PIXMA_iP4000_slotlist,
899    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4000,  /*features */
900    &canon_PIXMA_iP5300_modelist,
901    /*&canon_PIXMA_iP4000_paperlist,*/
902    &canon_MULTIPASS_MP600_paperlist,
903    NULL,
904    NULL,
905    NULL,
906    NULL
907  },
908  { /* Canon PIXMA iP4600 */
909    "PIXMA iP4600", 3,          /*model, model_id*/
910    8.5*72, 26.625*72, /* max paper width and height */
911    10, 10, 9, 15,    /*border_left, border_right, border_top, border_bottom */
912    16,
913    &canon_PIXMA_iP4600_slotlist,
914    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x61,control_cmd_MULTIPASS_MP150,  /*features */
915    &canon_PIXMA_iP5300_modelist,
916    &canon_PIXMA_iP4600_paperlist,
917    NULL,
918    NULL,
919    NULL,
920    iP4500_channel_order
921  },
922  { /* Canon PIXMA iP4500 CD-R tray F */
923    "PIXMA iP4500", 3,          /*model, model_id*/
924    842, 17*72,       /* max paper width and height */
925    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
926    8,
927    &canon_PIXMA_iP4500_slotlist,
928    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_MULTIPASS_MP150,  /* features */
929    &canon_PIXMA_iP4500_modelist, /* changed from iP5300 */
930    &canon_PIXMA_iP4500_paperlist,
931    NULL,
932    NULL,
933    NULL,
934    iP4500_channel_order
935  },
936  { /* Canon PIXMA iP4700 CD-R tray G */
937    "PIXMA iP4700", 3,          /*model, model_id*/
938    842, 17*72,       /* max paper width and height */
939    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
940    8,
941    &canon_PIXMA_iP4600_slotlist, /* there is some ESC (r 0x65 command for CD tray also, not sure why */
942    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /* features */
943    &canon_PIXMA_iP4700_modelist,
944    &canon_PIXMA_iP4700_paperlist,
945    NULL,
946    NULL,
947    NULL,
948    iP4500_channel_order
949  },
950  { /* Canon PIXMA iP4200 */
951    "PIXMA iP4200", 3,          /*model, model_id*/
952    842, 17*72,       /* max paper width and height */
953    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
954    8,
955    &canon_PIXMA_iP4000_slotlist,
956    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4200,  /*features */
957    &canon_PIXMA_iP4200_modelist,
958    &canon_PIXMA_iP4000_paperlist,
959    iP4200_lum_adjustment,
960    iP4200_hue_adjustment,
961    iP4200_sat_adjustment,
962    NULL
963  },
964  { /* Canon PIXMA iP4800 CD-R tray G */
965    "PIXMA iP4800", 3,          /*model, model_id*/
966    842, 17*72,       /* max paper width and height */
967    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
968    8,
969    &canon_PIXMA_iP4600_slotlist, /* there is some ESC (r 0x68 command for CD tray also, not sure why */
970    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /* features */
971    &canon_PIXMA_iP4700_modelist,/* same for iP4800 */
972    &canon_PIXMA_iP4700_paperlist,/* same for iP4800 */
973    NULL,
974    NULL,
975    NULL,
976    iP4500_channel_order
977  },
978  { /* Canon PIXMA iP6000 */
979    "PIXMA iP6000", 3,          /*model, model_id*/
980    842, 17*72,       /* max paper width and height */
981    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
982    8,
983    &canon_PIXMA_iP4000_slotlist,
984    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
985    &canon_PIXMA_iP6000_modelist,
986    &canon_PIXMA_iP4000_paperlist,
987    NULL,
988    NULL,
989    NULL,
990    iP4500_channel_order
991  },
992  { /* Canon PIXMA iP6100 */
993    "PIXMA iP6100", 3,          /*model, model_id*/
994    842, 17*72,       /* max paper width and height */
995    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
996    8,
997    &canon_PIXMA_iP4000_slotlist,
998    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
999    &canon_PIXMA_iP6000_modelist,
1000    &canon_PIXMA_iP6100_paperlist,
1001    NULL,
1002    NULL,
1003    NULL,
1004    iP4500_channel_order
1005  },
1006  { /* Canon PIXMA iP6600 */
1007    "PIXMA iP6600", 3,          /*model, model_id*/
1008    842, 17*72,       /* max paper width and height */
1009    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1010    8,
1011    &canon_PIXMA_iP4000_slotlist,
1012    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
1013    &canon_PIXMA_iP6700_modelist,
1014    &canon_PIXMA_iP6600_paperlist,
1015    NULL,
1016    NULL,
1017    NULL,
1018    iP4500_channel_order
1019  },
1020  { /* Canon PIXMA iP6700 */
1021    "PIXMA iP6700", 3,          /*model, model_id*/
1022    842, 17*72,       /* max paper width and height */
1023    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1024    8,
1025    &canon_PIXMA_iP4000_slotlist,
1026    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_P|CANON_CAP_r|CANON_CAP_px,0x64,control_cmd_PIXMA_iP4000,  /*features */
1027    &canon_PIXMA_iP6700_modelist,
1028    &canon_PIXMA_iP6700_paperlist,
1029    NULL,
1030    NULL,
1031    NULL,
1032    iP4500_channel_order
1033  },
1034  { /* Canon PIXMA iX5000 */
1035    "PIXMA iX5000", 3,          /*model, model_id*/
1036    842, 17*72,       /* max paper width and height */
1037    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1038    8,
1039    &canon_MULTIPASS_MP170_slotlist,
1040    /* CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x61,control_cmd_PIXMA_iP4000, */
1041    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I,0,control_cmd_PIXMA_iP4000,  /*features */
1042    &canon_PIXMA_iX5000_modelist,
1043    &canon_PIXMA_iP1500_paperlist,
1044    NULL,
1045    NULL,
1046    NULL,
1047    NULL
1048  },
1049  { /* Canon PIXMA iX6500 --- with XML */
1050    "PIXMA iX6500", 3,          /*model, model_id*/
1051    842, 17*72,       /* max paper width and height */
1052    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1053    8,
1054    &canon_MULTIPASS_MP250_slotlist,
1055    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0,control_cmd_PIXMA_iP4000,  /*features */
1056    &canon_MULTIPASS_MP540_modelist,
1057    &canon_MULTIPASS_MX880_paperlist,
1058    NULL,
1059    NULL,
1060    NULL,
1061    NULL
1062  },
1063  { /* Canon PIXMA iX7000 --- with XML */
1064    "PIXMA iX7000", 3,          /*model, model_id*/
1065    842, 17*72,       /* max paper width and height */
1066    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1067    8,
1068    &canon_PIXMA_iX7000_slotlist,
1069    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r|CANON_CAP_P|CANON_CAP_XML,0x64,control_cmd_PIXMA_iP4200,  /*features */
1070    &canon_PIXMA_iX7000_modelist,
1071    &canon_PIXMA_iX7000_paperlist,
1072    NULL,
1073    NULL,
1074    NULL,
1075    NULL
1076  },
1077  { /* Canon PIXMA MP510 --- like MP520 but without PPGgold paper support */
1078    "PIXMA MP510", 3,          /*model, model_id*/
1079    842, 17*72,       /* max paper width and height */
1080    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1081    8,
1082    &canon_MULTIPASS_MP520_slotlist,
1083    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I,0,control_cmd_PIXMA_iP2700,  /*features */
1084    &canon_MULTIPASS_MP520_modelist,
1085    &canon_MULTIPASS_MP520_paperlist, /* Windows driver lacks PPGgold, but let us try anyway */
1086    NULL,
1087    NULL,
1088    NULL,
1089    NULL
1090  },
1091  { /* Canon PIXMA MP520 */
1092    "PIXMA MP520", 3,          /*model, model_id*/
1093    842, 17*72,       /* max paper width and height */
1094    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1095    8,
1096    &canon_MULTIPASS_MP520_slotlist,
1097    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I,0,control_cmd_PIXMA_iP2700,  /*features */
1098    &canon_MULTIPASS_MP520_modelist,
1099    &canon_MULTIPASS_MP520_paperlist,
1100    NULL,
1101    NULL,
1102    NULL,
1103    NULL
1104  },
1105  { /* Canon PIXMA MP540 */
1106    "PIXMA MP540", 3,          /*model, model_id*/
1107    842, 17*72,       /* max paper width and height */
1108    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1109    8,
1110    &canon_PIXMA_MG5100_slotlist,
1111    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r,0x64,control_cmd_MULTIPASS_MP150,  /*features */
1112    &canon_MULTIPASS_MP540_modelist,
1113    &canon_MULTIPASS_MX330_paperlist,
1114    NULL,
1115    NULL,
1116    NULL,
1117    NULL
1118  },
1119  { /* Canon PIXMA MP550 ---wth XML */
1120    "PIXMA MP550", 3,          /*model, model_id*/
1121    842, 17*72,       /* max paper width and height */
1122    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1123    8,
1124    &canon_PIXMA_MG5100_slotlist,
1125    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /*features */
1126    &canon_MULTIPASS_MP540_modelist, /* seems to have same modes */
1127    &canon_MULTIPASS_MP250_paperlist,
1128    NULL,
1129    NULL,
1130    NULL,
1131    NULL
1132  },
1133  { /* Canon PIXMA MP600 */
1134    "PIXMA MP600", 3,          /*model, model_id*/
1135    842, 17*72,       /* max paper width and height */
1136    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1137    8,
1138    &canon_MULTIPASS_MX850_slotlist,
1139    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4000,  /*features */
1140    &canon_MULTIPASS_MP520_modelist,
1141    &canon_MULTIPASS_MP600_paperlist,
1142    NULL,
1143    NULL,
1144    NULL,
1145    NULL
1146  },
1147  { /* Canon PIXMA MP630 */
1148    "PIXMA MP630", 3,          /*model, model_id*/
1149    842, 17*72,       /* max paper width and height */
1150    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1151    8,
1152    &canon_PIXMA_MG5200_slotlist,
1153    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_r,0x64,control_cmd_PIXMA_iP4200,  /*features */
1154    &canon_MULTIPASS_MP640_modelist,
1155    &canon_MULTIPASS_MP630_paperlist,
1156    NULL,
1157    NULL,
1158    NULL,
1159    NULL
1160  },
1161  { /* Canon PIXMA MP640 */
1162    "PIXMA MP640", 3,          /*model, model_id*/
1163    842, 17*72,       /* max paper width and height */
1164    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1165    8,
1166    &canon_PIXMA_MG5200_slotlist,
1167    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_I|CANON_CAP_XML|CANON_CAP_r,0x64,control_cmd_PIXMA_iP4200,  /*features */
1168    &canon_MULTIPASS_MP640_modelist,
1169    &canon_MULTIPASS_MP640_paperlist,
1170    NULL,
1171    NULL,
1172    NULL,
1173    NULL
1174  },
1175  { /* Canon PIXMA Pro9000 */
1176    "PIXMA Pro9000", 3,          /*model, model_id*/
1177    842, 17*72,       /* max paper width and height */
1178    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1179    8,
1180    &canon_PIXMA_Pro9000_slotlist,
1181    CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4000,  /*features */
1182    &canon_PIXMA_Pro9000_modelist,
1183    &canon_PIXMA_Pro9000_paperlist,
1184    NULL,
1185    NULL,
1186    NULL,
1187    NULL
1188  },
1189  { /* Canon PIXMA Pro9000 Mk.II */
1190    "PIXMA Pro9002", 3,          /*model, model_id*/
1191    842, 17*72,       /* max paper width and height */
1192    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1193    8,
1194    &canon_PIXMA_Pro9000_slotlist,
1195    CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4000,  /*features */
1196    &canon_PIXMA_Pro9000mk2_modelist,
1197    &canon_PIXMA_Pro9000mk2_paperlist,
1198    NULL,
1199    NULL,
1200    NULL,
1201    NULL
1202  },
1203  { /* Canon PIXMA Pro9500 */
1204    "PIXMA Pro9500", 3,          /*model, model_id*/
1205    842, 17*72,       /* max paper width and height */
1206    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1207    8,
1208    &canon_PIXMA_Pro9000_slotlist,
1209    CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4000,  /*features */
1210    &canon_PIXMA_Pro9500_modelist,
1211    &canon_PIXMA_Pro9500_paperlist,
1212    NULL,
1213    NULL,
1214    NULL,
1215    NULL
1216  },
1217  { /* Canon PIXMA Pro9500 Mk.II */
1218    "PIXMA Pro9502", 3,          /*model, model_id*/
1219    842, 17*72,       /* max paper width and height */
1220    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1221    8,
1222    &canon_PIXMA_Pro9000_slotlist,
1223    CANON_CAP_STD0|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4000,  /*features */
1224    &canon_PIXMA_Pro9500mk2_modelist,
1225    &canon_PIXMA_Pro9500mk2_paperlist,
1226    NULL,
1227    NULL,
1228    NULL,
1229    NULL
1230  },
1231  { /* Canon PIXMA iP8500 */
1232    "PIXMA iP8500", 3,          /*model, model_id*/
1233    842, 17*72,       /* max paper width and height */
1234    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1235    8,
1236    &canon_PIXMA_iP4000_slotlist,
1237    /*CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px,0x61,control_cmd_PIXMA_iP4000,*/  /*features */
1238    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P,0x64,control_cmd_PIXMA_iP4000,  /*features */
1239    &canon_PIXMA_iP8500_modelist,
1240    &canon_PIXMA_iP4000_paperlist,
1241    NULL,
1242    NULL,
1243    NULL,
1244    NULL
1245  },
1246  { /* Canon MULTIPASS MP150 */
1247    "PIXMA MP150", 3,          /*model, model_id*/
1248    842, 17*72,       /* max paper width and height */
1249    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1250    8,
1251    /* &canon_PIXMA_iP4000_slotlist, */
1252    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1253    /* CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_T|CANON_CAP_I,0x61,control_cmd_MULTIPASS_MP150, */
1254    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1255    &canon_MULTIPASS_MP150_modelist,
1256    /* &canon_PIXMA_iP4000_paperlist, */
1257    &canon_MULTIPASS_MP150_paperlist,
1258    NULL,
1259    NULL,
1260    NULL,
1261    NULL
1262  },
1263  { /* Canon MULTIPASS MP170 */
1264    "PIXMA MP170", 3,          /*model, model_id*/
1265    842, 17*72,       /* max paper width and height */
1266    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1267    8,
1268    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1269    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1270    &canon_MULTIPASS_MP170_modelist,
1271    &canon_MULTIPASS_MP170_paperlist,
1272    NULL,
1273    NULL,
1274    NULL,
1275    NULL
1276  },
1277  { /* Canon MULTIPASS MP450 */
1278    "PIXMA MP450", 3,          /*model, model_id*/
1279    842, 17*72,       /* max paper width and height */
1280    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1281    8,
1282    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1283    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1284    &canon_MULTIPASS_MP170_modelist,
1285    &canon_MULTIPASS_MP170_paperlist,
1286    NULL,
1287    NULL,
1288    NULL,
1289    NULL
1290  },
1291  { /* Canon MULTIPASS MP480 --- no XML */
1292    "PIXMA MP480", 3,          /*model, model_id*/
1293    842, 17*72,       /* max paper width and height */
1294    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1295    8,
1296    &canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
1297    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1298    &canon_MULTIPASS_MP480_modelist,
1299    &canon_MULTIPASS_MP480_paperlist,
1300    NULL,
1301    NULL,
1302    NULL,
1303    NULL
1304  },
1305  { /* Canon MULTIPASS MP493: new model after MP480(?) --- with XML */
1306    "PIXMA MP493", 3,          /*model, model_id*/
1307    842, 17*72,       /* max paper width and height */
1308    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1309    8,
1310    &canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
1311    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features */
1312    &canon_MULTIPASS_MP480_modelist,
1313    &canon_MULTIPASS_MP493_paperlist,
1314    NULL,
1315    NULL,
1316    NULL,
1317    NULL
1318  },
1319  { /* Canon MULTIPASS MP495 identical to MP280 it seems --- with XML */
1320    "PIXMA MP495", 3,          /*model, model_id*/
1321    842, 17*72,       /* max paper width and height */
1322    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1323    8,
1324    &canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
1325    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features */
1326    &canon_MULTIPASS_MP280_modelist,
1327    &canon_MULTIPASS_MP280_paperlist,
1328    NULL,
1329    NULL,
1330    NULL,
1331    NULL
1332  },
1333  { /* Canon MULTIPASS MP250 */
1334    "PIXMA MP250", 3,          /*model, model_id*/
1335    842, 17*72,       /* max paper width and height */
1336    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1337    8,
1338    &canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T  */
1339    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML,0x61,control_cmd_MULTIPASS_MP150,  /*features */
1340    &canon_MULTIPASS_MP250_modelist,
1341    &canon_MULTIPASS_MP250_paperlist,
1342    NULL,
1343    NULL,
1344    NULL,
1345    NULL
1346  },
1347  { /* Canon MULTIPASS MP270 */
1348    "PIXMA MP270", 3,          /*model, model_id*/
1349    842, 17*72,       /* max paper width and height */
1350    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1351    8,
1352    &canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray. Also uses CAP_T  */
1353    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features */
1354    &canon_MULTIPASS_MP250_modelist,
1355    &canon_MULTIPASS_MP250_paperlist,
1356    NULL,
1357    NULL,
1358    NULL,
1359    NULL
1360  },
1361  { /* Canon MULTIPASS MP280 */
1362    "PIXMA MP280", 3,          /*model, model_id*/
1363    842, 17*72,       /* max paper width and height */
1364    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1365    8,
1366    &canon_MULTIPASS_MP250_slotlist, /* these models only have a rear tray.  */
1367    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_r|CANON_CAP_P|CANON_CAP_I|CANON_CAP_T|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features  Also uses CAP_T. MP280 no duplex, no 0x61 */
1368    &canon_MULTIPASS_MP280_modelist,
1369    &canon_MULTIPASS_MP280_paperlist,
1370    NULL,
1371    NULL,
1372    NULL,
1373    NULL
1374  },
1375  { /* Canon PIXMA MG5100 */
1376    "PIXMA MG5100", 3,          /*model, model_id*/
1377    842, 17*72,       /* max paper width and height */
1378    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1379    8,
1380    &canon_PIXMA_MG5100_slotlist,
1381    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /* features */
1382    &canon_PIXMA_MG5100_modelist,
1383    &canon_PIXMA_MG5100_paperlist,
1384    NULL,
1385    NULL,
1386    NULL,
1387    iP4500_channel_order
1388  },
1389  { /* Canon PIXMA MG5200 --- like MG5100, plus CD tray */
1390    "PIXMA MG5200", 3,          /*model, model_id*/
1391    842, 17*72,       /* max paper width and height */
1392    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1393    8,
1394    &canon_PIXMA_MG5200_slotlist,
1395    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /* features */
1396    &canon_PIXMA_MG5200_modelist,/* there is some ESC (r 0x68 command for CD tray also, not sure why */
1397    &canon_PIXMA_MG5200_paperlist,
1398    NULL,
1399    NULL,
1400    NULL,
1401    iP4500_channel_order
1402  },
1403  { /* Canon PIXMA MG6100 */
1404    "PIXMA MG6100", 3,          /*model, model_id*/
1405    842, 17*72,       /* max paper width and height */
1406    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1407    8,
1408    &canon_PIXMA_MG5200_slotlist, /* same as MG5200 */
1409    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /* features */
1410    &canon_PIXMA_MG6100_modelist,/* there is some ESC (r 0x68 command for CD tray also, not sure why */
1411    &canon_PIXMA_MG6100_paperlist,
1412    NULL,
1413    NULL,
1414    NULL,
1415    iP4500_channel_order
1416  },
1417  { /* Canon PIXMA MG8100 */
1418    "PIXMA MG8100", 3,          /*model, model_id*/
1419    842, 17*72,       /* max paper width and height */
1420    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1421    8,
1422    &canon_PIXMA_MG5200_slotlist, /* same as MG5200 */
1423    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_r|CANON_CAP_I|CANON_CAP_P|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150,  /* features */
1424    &canon_PIXMA_MG8100_modelist,/* there is some ESC (r 0x68 command for CD tray also, not sure why */
1425    &canon_PIXMA_MG6100_paperlist, /* same as MG6100 */
1426    NULL,
1427    NULL,
1428    NULL,
1429    iP4500_channel_order
1430  },
1431  /* MX series */
1432  { /* Canon MULTIPASS MX300 --- MX310 is the same */
1433    "PIXMA MX300", 3,          /*model, model_id*/
1434    842, 17*72,       /* max paper width and height */
1435    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1436    8,
1437    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1438    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1439    &canon_MULTIPASS_MX300_modelist,
1440    &canon_MULTIPASS_MX300_paperlist,
1441    NULL,
1442    NULL,
1443    NULL,
1444    iP4500_channel_order
1445  },
1446  { /* Canon MULTIPASS MX330 */
1447    "PIXMA MX330", 3,          /*model, model_id*/
1448    842, 17*72,       /* max paper width and height */
1449    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1450    8,
1451    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1452    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1453    &canon_MULTIPASS_MX330_modelist,
1454    &canon_MULTIPASS_MX330_paperlist,
1455    NULL,
1456    NULL,
1457    NULL,
1458    iP4500_channel_order
1459  },
1460  { /* Canon MULTIPASS MX340 */
1461    "PIXMA MX340", 3,          /*model, model_id*/
1462    842, 17*72,       /* max paper width and height */
1463    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1464    8,
1465    &canon_MULTIPASS_MP170_slotlist, /* these models only have an auto sheet feeder also uses CAP_T */
1466    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I,0,control_cmd_MULTIPASS_MP150,  /*features */
1467    &canon_MULTIPASS_MX340_modelist,
1468    &canon_MULTIPASS_MX340_paperlist,
1469    NULL,
1470    NULL,
1471    NULL,
1472    iP4500_channel_order
1473  },
1474  { /* Canon MULTIPASS MX360 -- with XML */
1475    "PIXMA MX360", 3,          /*model, model_id*/
1476    842, 17*72,       /* max paper width and height */
1477    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1478    8,
1479    &canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
1480    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features */
1481    &canon_MULTIPASS_MX360_modelist,
1482    &canon_MULTIPASS_MX360_paperlist,
1483    NULL,
1484    NULL,
1485    NULL,
1486    iP4500_channel_order
1487  },
1488  { /* Canon MULTIPASS MX420 --- with XML */
1489    "PIXMA MX420", 3,          /*model, model_id*/
1490    842, 17*72,       /* max paper width and height */
1491    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1492    8,
1493    &canon_MULTIPASS_MP250_slotlist, /* only rear tray also uses CAP_T */
1494    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_T|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150,  /*features */
1495    &canon_MULTIPASS_MP480_modelist,
1496    &canon_MULTIPASS_MX420_paperlist,
1497    NULL,
1498    NULL,
1499    NULL,
1500    NULL
1501  },
1502  { /* Canon MULTIPASS MX700 */
1503    "PIXMA MX700", 3,          /*model, model_id*/
1504    842, 17*72,       /* max paper width and height */
1505    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1506    8,
1507    &canon_MULTIPASS_MP520_slotlist, /* front, rear, button, and front/plain-only */
1508    CANON_CAP_STD0|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0,control_cmd_PIXMA_iP4000, /*features*/
1509    &canon_MULTIPASS_MP520_modelist,
1510    &canon_MULTIPASS_MX300_paperlist,
1511    NULL,
1512    NULL,
1513    NULL,
1514    iP4500_channel_order
1515  },
1516  { /* Canon MULTIPASS MX850 */
1517    "PIXMA MX850", 3,          /*model, model_id*/
1518    842, 17*72,       /* max paper width and height */
1519    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1520    8,
1521    &canon_MULTIPASS_MX850_slotlist,
1522    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4000, /*features*/
1523    &canon_PIXMA_iP4500_modelist, /* same inksets as iP4500 */
1524    &canon_MULTIPASS_MX850_paperlist,
1525    NULL,
1526    NULL,
1527    NULL,
1528    iP4500_channel_order
1529  },
1530  { /* Canon MULTIPASS MX860 */
1531    "PIXMA MX860", 3,          /*model, model_id*/
1532    842, 17*72,       /* max paper width and height */
1533    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1534    8,
1535    &canon_PIXMA_MG5100_slotlist,
1536    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4000, /*features*/
1537    &canon_MULTIPASS_MX860_modelist,
1538    &canon_MULTIPASS_MX330_paperlist,
1539    NULL,
1540    NULL,
1541    NULL,
1542    iP4500_channel_order
1543  },
1544  { /* Canon MULTIPASS MX870 --- with XML */
1545    "PIXMA MX870", 3,          /*model, model_id*/
1546    842, 17*72,       /* max paper width and height */
1547    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1548    8,
1549    &canon_PIXMA_MG5100_slotlist,
1550    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML,0x64,control_cmd_MULTIPASS_MP150, /*features*/
1551    &canon_MULTIPASS_MX870_modelist,
1552    &canon_MULTIPASS_MX340_paperlist,
1553    NULL,
1554    NULL,
1555    NULL,
1556    iP4500_channel_order
1557  },
1558  { /* Canon MULTIPASS MX880 --- with XML */
1559    "PIXMA MX880", 3,          /*model, model_id*/
1560    842, 17*72,       /* max paper width and height */
1561    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1562    8,
1563    &canon_PIXMA_MG5100_slotlist,
1564    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I|CANON_CAP_XML,0,control_cmd_MULTIPASS_MP150, /*features*/
1565    &canon_MULTIPASS_MP540_modelist,
1566    &canon_MULTIPASS_MX880_paperlist,
1567    NULL,
1568    NULL,
1569    NULL,
1570    iP4500_channel_order
1571  },
1572  { /* Canon MULTIPASS MX7600 */
1573    "PIXMA MX7600", 3,          /*model, model_id*/
1574    842, 17*72,       /* max paper width and height */
1575    10, 10, 15, 15,    /*border_left, border_right, border_top, border_bottom */
1576    8,
1577    &canon_MULTIPASS_MX7600_slotlist,
1578    CANON_CAP_STD0|CANON_CAP_DUPLEX|CANON_CAP_r|CANON_CAP_px|CANON_CAP_P|CANON_CAP_I,0x64,control_cmd_PIXMA_iP4000, /*features*/
1579    &canon_MULTIPASS_MX7600_modelist,
1580    &canon_MULTIPASS_MX7600_paperlist,
1581    NULL,
1582    NULL,
1583    NULL,
1584    iP4500_channel_order
1585  },
1586};
1587
1588#endif
1589
1590