Skip to main content
2 of 7
deleted 5 characters in body

##JS, 303##

function z(s){return s.split('').map(function(d){if((r=Math.random)()>.1)return d
if((c=r()*(/[a-z]/i.test(d)?3:2))<2)return c>1?d+d:''
if((x=(b="qwertyuiop0asdfghjkl000zxcvbnm").indexOf(d))<0)x=(b=b.toUpperCase()).indexOf(d)
for(a=0,n=11;i=!a;a=b[x+n])for(v=r()*4;v>i;n=i++%2?-n:1);return a}).join('')}

Algorithm for the keyslip:

  • find char in string (or uppercase)
  • add 11, -11, 1 or -1 to the index.
  • if it's invalid (0 or null), re-roll