Determine si JavaScript e.keyCode es un carácter imprimible (sin control)

Solo me gustaría saber el rango (s) de JavaScriptkeyCodes que corresponden a caracteres tipificables; o alternativamente, el rango de caracteres no controlables (control) como retroceso, escape, comando, cambio, etc. para que pueda ignorarlos.

La razón por la que pregunto es llamandoString.fromCharCode() está resultando en caracteres impares para las teclas de control. Por ejemplo, obtengo "[" para el comando izquierdo, "%" para la flecha izquierda. Raro como eso.