Uttered "Paul W. Frields" stickster@gmail.com, spake thus:
I'm not sure if I got Tommy's meaning right, but I think what he was getting at didn't have to do with the difference between printable and nonprintable characters, but rather the difference between something the user types and sees echoed on the screen (like ":wq" in the vi example), as opposed to Ctrl+Alt+Del.
Er, Paul, if you can see the echo: it's printable!
More formally, I would reserve keycaps, et. al., to mark-up "function keys": F1 and friends, as well as Ctl+Alt+Del, including the you-would-never-type-this-character-in-typing-class category that emacs loves so well.
Attend me. It matters not that VI treats ":wq" specially in some instances. What is important is that it's a readable sequence. All VI commands follow the general form of either "<reps><action><destination>" like "4cw" or a logical process like "wq". Massively <keycap>'ing them destroys the semantics. On the other hand, the emacs key binding of "Ctl-C Ctl-F foo \n" is not readable and should be <keycap>'ed because there are two logical "function" keys introducing the sequence. If only emacs had the kind of keyboard it needed, there would be a special function key whose labels was "Funky Emacs Function".
See the difference? A key or keys treated as a virtual function key should be <keycap>'ed; anything else is just <userinput>. Reserve the <keycap> family to convey the notion of a function key.
And it just so happens that most logical function key combos are non-printing...
That any better?