Posted to tcl by evilotto at Tue Dec 20 02:58:53 GMT 2016view pretty

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