L'elemento kbd
rappresenta l'input dell'utente. Esempi di input da parte dell'utente sono:
Key Input
<p>Please, press <kbd><kbd>Shift</kbd>+<kbd>A</kbd></kbd></p>

Terminal Command
<p>Please, input "<kbd>Yes</kbd>" or "<kbd>No</kbd>"</p>

pulsanti o Menu (GUI-Input)
<kbd>File | Open...</kbd>
File | Apri ...

L'elemento samp
rappresenta l'uscita da un sistema di programma o di calcolo. Per esempio un'uscita cmd: 
Come sembrare in HTML usando samp
:
Directory of D:\mydir
11/15/2007 03:03 PM <DIR> .
11/15/2007 03:03 PM <DIR> ..
11/15/2007 01:38 PM 0 10oct2006.txt
11/08/2007 04:28 PM 368 11nov2007.do
11/15/2007 01:39 PM 0 5june2007.txt
03/11/2007 10:39 AM 1,869,429 beameruserguide.pdf
08/10/2007 01:24 PM 22,016 blog - jsm 2007.doc
04/25/2007 03:07 PM 199,887 clarify.pdf
11/15/2007 01:40 PM 0 houseplants.txt
04/25/2007 11:42 AM 371,225 Mardia 1970 - multivar skew and kurt.pdf
03/27/2007 01:18 PM 319,864 multiple imputation a primer by schafer.pdf
11/15/2007 02:49 PM 0 output 1.txt
11/15/2007 02:49 PM 0 output 2.txt
11/15/2007 02:49 PM 0 output 3.txt
11/15/2007 02:49 PM 0 output 4.txt
11/08/2007 03:59 PM 8,514 results.dta
11/15/2007 01:31 PM <DIR> sub1
11/15/2007 01:31 PM <DIR> sub2
11/14/2007 04:27 PM 952 test.txt
05/21/2007 03:23 PM 1,430,743 zelig.pdf
18 File(s) 4,225,738 bytes
4 Dir(s) 249,471,307,776 bytes free
L'elemento code
rappresenta un frammento di codice del computer. Esempi di codice di computer sono: XML nome dell'elemento, il nome del file, programma per computer ecc
Codice esempio:
<pre>
<code>
function Panel(element, canClose, closeHandler) {
this.element = element;
this.canClose = canClose;
this.closeHandler = function() { if (closeHandler) closeHandler() };
}
</code>
</pre>

Voglio anche dire che hai ragione in termini di aspetto visivo. Al massimo c'è una differenza di nota tra kbd, samp e codice. Tutti usano lo stesso tipo di carattere. Comunque sarebbe meglio se lo si usi in modo discribuito, perché il sistema fa la differenza tra loro.
"Mi chiedo perché ci siano così tanti tag diversi che sembrano uguali [...] Non vedo alcuna differenza (ottica) tra' kbd', 'samp' e' code' "- questo è uno dei le cose più importanti per far girare la testa quando si apprende il markup. Le uniche differenze visive che puoi vedere sono quelle prodotte dal foglio di stile predefinito del browser. Markup indica la funzione non forma. – Rounin
100% d'accordo con Rounin. E, per completezza, la DTD HTML 4.01 (https://www.w3.org/TR/REC-html40/struct/text.html#h-9.2.1) definisce un elemento 'var' che" indica un'istanza di una variabile o argomento del programma " –