Paul G. Tobey said:
1. I don't see any explanation of that. Can you step into it and see where
the period is being dropped?
The relavent code is this:
-------------------
public static void Send(string keys)
{
byte [] mods = new byte[3];
char ch;
int pos;
int index = 0;
byte group = 0;
while(index < keys.Length)
{
ch = keys[index];
switch(ch)
{
case '(': // start group
if (group > 3) throw new ArgumentException("Nesting error.");
group++;
SetMods(mods, 4, group);
break;
case ')': // end group
if (group < 1) throw new ArgumentException("'(' is missing.");
CancelMods(mods, group);
group--;
break;
case '+':
if (mods[SHIFTPOS] != 0) throw new ArgumentException("Invalid SendKey
string.");
mods[SHIFTPOS] = 4;
SendKey(SHIFTVK, KEYEVENTF_KEYDOWN);
break;
case '^':
if (mods[CONTROLPOS] != 0) throw new ArgumentException("Invalid
SendKey string.");
mods[CONTROLPOS] = 4;
SendKey(CONTROLVK, KEYEVENTF_KEYDOWN);
break;
case '%':
if (mods[ALTPOS] != 0) throw new ArgumentException("Invalid SendKey
string.");
mods[ALTPOS] = 4;
SendKey(ALTVK, KEYEVENTF_KEYDOWN);
break;
case '~': // ENTER key
SendChar(13, mods);
break;
case '{':
{
index++;
if ((pos = keys.IndexOf('}', index)) < 0) throw new
ArgumentException("'}' is missing.");
string t = keys.Substring(index, pos - index);
if (t.Length == 0) // {}}?
{
index++;
if (keys.Length > index && keys[index] == '}')
SendChar((byte)'}', mods);
else
throw new ArgumentException("'{}' is invalid sequence.");
}
else
{
int count;
index += t.Length;
string [] s = t.Split(new char[]{' '});
if (s.Length > 2) throw new ArgumentException("Incorrect string in
the {...}");
if (s.Length == 2)
{
t = s[0];
count = Convert.ToInt32(s[1]);
}
else
count = 1;
int vk = MatchKeyword(t);
if (vk < 0) // key has not been found
{
if (t.Length == 1) // is it {+}, {~}, {^}, etc.
vk = (byte)t[0];
else
throw new ArgumentException("Keyword '" + t + "' has not been
found.");
}
for(int i = 0; i < count; i++)
SendChar((byte)vk, mods);
}
break;
}
default:
SendChar((byte)ch, mods);
break;
}
index++;
}
CancelMods(mods, 4);
}
---------------------------------------
It does not appear to do anything with periods per se.
We are worried this is a device specific problem.