Posted to tcl by aspect at Tue Dec 20 02:58:55 GMT 2016view pretty

proc M a\ b {string map $a $b}
proc S a\ b\\\ @ {split $a $b}
regsub -all {[^@|]} [set b [M {|||| |||  $ "BS   " % "TAB  " & "CAPS  " ? ENTER * "SHIFT   "} [regsub -all {([^@])} {`1234567890-=$@%QWERTYUIOP[]\@&ASDFGHJKL;'?@*ZXCVBNM,./*} {||\1 ||}]]] _ f
set h [M {\\ _ / _ | \ } [set g [M {||_ |/_  _|| _\\|} [M {||| \\|/} $f]]]]
lmap x [S $h] y [S $b] z [S $f] w [S $g] {
puts $x\n$y\n$z\n$w
}