Canon and HP driver profiles for quick actions

Canon: CNColorMode color/mono, CNDuplex, PageSize=Letter. HP: HPColorAsGray or
HPColorMode; duplex and Letter from the generic profile. Profiles can mark an action
unavailable with a reason (Canon department IDs, HP accounting codes). Use Letter
Paper only says Fit to Nearest Size when the profile sets a fit option. Offline tests
sweep every Canon and HP PPD found in CUPSKIT_PPD_DIRS or /Library/Printers/PPDs.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kfattic
2026-09-16 21:04:02 -05:00
parent 7a98cb3bd3
commit 795ab7a981
9 changed files with 219 additions and 17 deletions

View File

@@ -1,5 +1,5 @@
{
"comment": "Quick Action mappings per driver. First matching profile that defines an action AND whose keyword=value pairs this queue supports wins; 'generic' (empty match) must stay last. An action is either one list of pairs (all applied together) or a list of alternative lists. {value} is replaced with the user's input. Find keywords with: cupsadmin ppdreport <queue>",
"comment": "Quick Action mappings per driver. First matching profile that defines an action AND whose keyword=value pairs this queue supports wins; 'generic' (empty match) must stay last. An action is either one list of pairs (all applied together) or a list of alternative lists. {value} is replaced with the user's input. 'unavailable' maps an action id to the reason it can't be done with this driver (no later profile is tried). Find keywords with: cupsadmin ppdreport <queue | file.ppd>",
"profiles": [
{
"id": "ricoh-m-c251fw",
@@ -27,6 +27,33 @@
"letter": ["PageSize=Letter", "RIPaperPolicy=NearestSizeAdjust"]
}
},
{
"id": "canon",
"name": "Canon UFR II / LIPSLX / CARPS2",
"match": { "manufacturer": "^Canon$" },
"actions": {
"color": ["CNColorMode=color"],
"bw": ["CNColorMode=mono"],
"duplex": ["CNDuplex=DuplexFront"],
"simplex": ["CNDuplex=None"],
"letter": ["PageSize=Letter"]
},
"unavailable": {
"usercode": "Canon department IDs are set by the Canon driver, not the PPD"
}
},
{
"id": "hp",
"name": "HP",
"match": { "manufacturer": "^HP$" },
"actions": {
"color": [["HPColorAsGray=False"], ["HPColorMode=colorsmart"]],
"bw": [["HPColorAsGray=True"], ["HPColorMode=grayscale"]]
},
"unavailable": {
"usercode": "HP drivers have no accounting code option"
}
},
{
"id": "generic",
"name": "Generic (standard PPD keywords, IPP Everywhere)",