Simba Code:
Function NearbyKey(Key : String) : String;
Var
Keys : array of String;
begin
Case Key of
'1' : Keys := ['q', '2', 'w']; //I wrote some code to generate this, so I am sorry if there are mistakes, It takes up lots of space so is there a way to compress this?
'2' : Keys := ['1', 'w', '3', 'q', 'e'];
'3' : Keys := ['2', 'e', '4', 'w', 'r'];
'4' : Keys := ['3', 'r', '5', 'e', 't'];
'5' : Keys := ['4', 't', '6', 'r', 'y'];
'6' : Keys := ['5', 'y', '7', 't', 'u'];
'7' : Keys := ['6', 'u', '8', 'y', 'i'];
'8' : Keys := ['7', 'i', '9', 'u', 'o'];
'9' : Keys := ['8', 'o', '0', 'i', 'p'];
'0' : Keys := ['9', 'p', '-', 'o', '['];
'-' : Keys := ['0', '[', '=', 'p', ']'];
'=' : Keys := ['-', ']', '['];
'q' : Keys := ['1', 'a', 'w', '2', 's'];
'w' : Keys := ['2', 'q', 's', 'e', '1', '3', 'a', 'd'];
'e' : Keys := ['3', 'w', 'd', 'r', '2', '4', 's', 'f'];
'r' : Keys := ['4', 'e', 'f', 't', '3', '5', 'd', 'g'];
't' : Keys := ['5', 'r', 'g', 'y', '4', '6', 'f', 'h'];
'y' : Keys := ['6', 't', 'h', 'u', '5', '7', 'g', 'j'];
'u' : Keys := ['7', 'y', 'j', 'i', '6', '8', 'h', 'k'];
'i' : Keys := ['8', 'u', 'k', 'o', '7', '9', 'j', 'l'];
'o' : Keys := ['9', 'i', 'l', 'p', '8', '0', 'k', ';'];
'p' : Keys := ['0', 'o', ';', '[', '9', '-', 'l', #39];
'[' : Keys := ['-', 'p', #39, ']', '0', '=', ';', '#'];
']' : Keys := ['=', '[', '#', '-', #39];
'a' : Keys := ['q', '\', 's', 'w', 'z'];
's' : Keys := ['w', 'a', 'z', 'd', 'q', 'e', '\', 'x'];
'd' : Keys := ['e', 's', 'x', 'f', 'w', 'r', 'z', 'c'];
'f' : Keys := ['r', 'd', 'c', 'g', 'e', 't', 'x', 'v'];
'g' : Keys := ['t', 'f', 'v', 'h', 'r', 'y', 'c', 'b'];
'h' : Keys := ['y', 'g', 'b', 'j', 't', 'u', 'v', 'n'];
'j' : Keys := ['u', 'h', 'n', 'k', 'y', 'i', 'b', 'm'];
'k' : Keys := ['i', 'j', 'm', 'l', 'u', 'o', 'n', ','];
'l' : Keys := ['o', 'k', ',', ';', 'i', 'p', 'm', '.'];
';' : Keys := ['p', 'l', '.', #39, 'o', '[', ',', '/'];
#39 : Keys := ['[', ';', '/', '#', 'p', ']', '.'];
'#' : Keys := [']', #39, '[', '/'];
'\' : Keys := ['a', ' ', 'z', 's', ' '];
'z' : Keys := ['s', '\', ' ', 'x', 'a', 'd'];
'x' : Keys := ['d', 'z', ' ', 'c', 's', 'f'];
'c' : Keys := ['f', 'x', ' ', 'v', 'd', 'g'];
'v' : Keys := ['g', 'c', ' ', 'b', 'f', 'h'];
'b' : Keys := ['h', 'v', ' ', 'n', 'g', 'j'];
'n' : Keys := ['j', 'b', ' ', 'm', 'h', 'k'];
'm' : Keys := ['k', 'n', ' ', ',', 'j', 'l'];
',' : Keys := ['l', 'm', ' ', '.', 'k', ';'];
'.' : Keys := [';', ',', ' ', '/', 'l', #39];
'/' : Keys := [#39, '.', ' ', ';', '#'];
' ' : Keys := ['c', 'v', 'b', 'n', 'm', ','];
'!' : Keys := ['Q', '"', 'W'];
'"' : Keys := ['!', 'W', 'Q', 'E'];
'$' : Keys := ['R', '%', 'E', 'T'];
'%' : Keys := ['$', 'T', '^', 'R', 'Y'];
'^' : Keys := ['%', 'Y', '&', 'T', 'U'];
'&' : Keys := ['^', 'U', '*', 'Y', 'I'];
'*' : Keys := ['&', 'I', '(', 'U', 'O'];
'(' : Keys := ['*', 'O', ')', 'I', 'P'];
')' : Keys := ['(', 'P', '_', 'O', '{'];
'_' : Keys := [')', '{', '+', 'P', '}'];
'+' : Keys := ['_', '}', '{'];
'Q' : Keys := ['!', 'A', 'W', '"', 'S'];
'W' : Keys := ['"', 'Q', 'S', 'E', '!', 'A', 'D'];
'E' : Keys := ['W', 'D', 'R', '"', '$', 'S', 'F'];
'R' : Keys := ['$', 'E', 'F', 'T', '%', 'D', 'G'];
'T' : Keys := ['%', 'R', 'G', 'Y', '$', '^', 'F', 'H'];
'Y' : Keys := ['^', 'T', 'H', 'U', '%', '&', 'G', 'J'];
'U' : Keys := ['&', 'Y', 'J', 'I', '^', '*', 'H', 'K'];
'I' : Keys := ['*', 'U', 'K', 'O', '&', '(', 'J', 'L'];
'O' : Keys := ['(', 'I', 'L', 'P', '*', ')', 'K', ':'];
'P' : Keys := [')', 'O', ':', '{', '(', '_', 'L', '@'];
'{' : Keys := ['_', 'P', '@', '}', ')', '+', ':', '~'];
'}' : Keys := ['+', '{', '~', '_', '@'];
'A' : Keys := ['Q', '|', 'S', 'W', 'Z'];
'S' : Keys := ['W', 'A', 'Z', 'D', 'Q', 'E', '|', 'X'];
'D' : Keys := ['E', 'S', 'X', 'F', 'W', 'R', 'Z', 'C'];
'F' : Keys := ['R', 'D', 'C', 'G', 'E', 'T', 'X', 'V'];
'G' : Keys := ['T', 'F', 'V', 'H', 'R', 'Y', 'C', 'B'];
'H' : Keys := ['Y', 'G', 'B', 'J', 'T', 'U', 'V', 'N'];
'J' : Keys := ['U', 'H', 'N', 'K', 'Y', 'I', 'B', 'M'];
'K' : Keys := ['I', 'J', 'M', 'L', 'U', 'O', 'N', '<'];
'L' : Keys := ['O', 'K', '<', ':', 'I', 'P', 'M', '>'];
':' : Keys := ['P', 'L', '>', '@', 'O', '{', '<', '?'];
'@' : Keys := ['{', ':', '?', '~', 'P', '}', '>'];
'~' : Keys := ['}', '@', '{', '?'];
'|' : Keys := ['A', ' ', 'Z', 'S'];
'Z' : Keys := ['S', '|', ' ', 'X', 'A', 'D'];
'X' : Keys := ['D', 'Z', ' ', 'C', 'S', 'F'];
'C' : Keys := ['F', 'X', ' ', 'V', 'D', 'G'];
'V' : Keys := ['G', 'C', ' ', 'B', 'F', 'H'];
'B' : Keys := ['H', 'V', ' ', 'N', 'G', 'J'];
'N' : Keys := ['J', 'B', ' ', 'M', 'H', 'K'];
'M' : Keys := ['K', 'N', ' ', '<', 'J', 'L'];
'<' : Keys := ['L', 'M', ' ', '>', 'K', ':'];
'>' : Keys := [':', '<', ' ', '?', 'L', '@'];
'?' : Keys := ['@', '>', ' ', ':', '~'];
else
begin
Result := Key;
exit;
end;
end;
Result := Keys[Random(GetArrayLength(Keys))];
end;