Q:

SendKeys.Send ("%"); does not send "%" symbol

SendKeys.Send ("%"); does not send "%" symbol
    while (true)
    {
        string a2 = @"%%asdf%%";
        foreach (char a in a2)
        {
              SendKeys.Send(a.ToString());
        }
        System.Threading.Thread.Sleep(1000);
    }

A:

From MSDN:

The plus sign (+), caret (^), percent sign (%), tilde (~), and
  parentheses () have special meanings to SendKeys. To specify one of
  these characters, enclose it within braces ({}).

SendKeys.Send also takes a String. 
So why not:
string a2 = @"{%}{%}asdf{%}{%}";
SendKeys.Send(a2);

