dev/diff/ ExampleDiff1


15c15,18
<   SendKeys("hello",5,0);
---
>   char *str = "echo hello worldR";
>   printf("%s %d\n",str,strlen(str));
>   SendKeys(str,strlen(str),0);
>   //SendKeys("v",1,kCtrl|kShift);
17a21,35
> // alt l r
> // ctrl l r
> // lwin rwin
> // back delete end insert home
> // return tab
> //
> const WORD specials[26] = {
>   VK_MENU,VK_BACK,VK_CONTROL,VK_DELETE,VK_END, // A-E
>   VK_LMENU,VK_RMENU,VK_HOME,VK_INSERT,0, // FGHIJ
>   VK_LCONTROL,VK_RCONTROL,VK_LWIN,VK_RWIN,VK_APPS, // KLMNO
>   VK_CAPITAL,VK_PAUSE,VK_RETURN,VK_SNAPSHOT,VK_TAB,// PQRST
>   VK_PRIOR,VK_NEXT,// UV
>   VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN // WXYZ
> };
> 
19,20c37
<   // ignore modifiers for now
<   INPUT* inputs = (INPUT*)calloc(nkeys,sizeof(INPUT));
---
>   INPUT* inputs = (INPUT*)calloc(nkeys+8,sizeof(INPUT));
22c39,64
<   for( int i=0; i<nkeys; i++ ) {
---
>   int j = 0;
>   if( modifiers & kShift ) { 
>     printf("shift\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_SHIFT;
>     j++;
>   }
>   if( modifiers & kCtrl ) { 
>     printf("ctrl\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_CONTROL;
>     j++;
>   }
>   if( modifiers & kAlt ) { 
>     printf("alt\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_MENU;
>     j++;
>   }
>   if( modifiers & kMeta ) { 
>     printf("meta\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_LWIN;
>     j++;
>   }
>   for(int i=0; i<nkeys; i++ ) {
23a66
>     printf("send %c == %x\n",k,k);
25,30c68,75
<       k -= 'a' - 'A';
<       inputs[2*i].type = INPUT_KEYBOARD;
<       inputs[2*i].ki.wVk = k;
<       inputs[2*i+1].type = INPUT_KEYBOARD;
<       inputs[2*i+1].ki.wVk = k;
<       inputs[2*i+1].ki.dwFlags = KEYEVENTF_KEYUP;
---
>       char s = k - ('a' - 'A');
>       printf("char '%c' == '%c' == %x\n",k,s,s);
>       inputs[j].type = INPUT_KEYBOARD;
>       inputs[j].ki.wVk = s;
>       inputs[j+1].type = INPUT_KEYBOARD;
>       inputs[j+1].ki.wVk = s;
>       inputs[j+1].ki.dwFlags = KEYEVENTF_KEYUP;
>       j += 2;
32,36c77,87
<       inputs[2*i].type = INPUT_KEYBOARD;
<       inputs[2*i].ki.wVk = k;
<       inputs[2*i+1].type = INPUT_KEYBOARD;
<       inputs[2*i+1].ki.wVk = k;
<       inputs[2*i+1].ki.dwFlags = KEYEVENTF_KEYUP;
---
>       char s = k-'A';
>       printf("special %d = %x\n",k,s);
>       k = specials[k-'A'];
>       if( k ) {
>         inputs[j].type = INPUT_KEYBOARD;
>         inputs[j].ki.wVk = k;
>         inputs[j+1].type = INPUT_KEYBOARD;
>         inputs[j+1].ki.wVk = k;
>         inputs[j+1].ki.dwFlags = KEYEVENTF_KEYUP;
>         j += 2;
>       }
38,43c89,130
<       inputs[2*i].type = INPUT_KEYBOARD;
<       inputs[2*i].ki.wVk = k;
<       inputs[2*i+1].type = INPUT_KEYBOARD;
<       inputs[2*i+1].ki.wVk = k;
<       inputs[2*i+1].ki.dwFlags = KEYEVENTF_KEYUP;
<     } 
---
>       inputs[j].type = INPUT_KEYBOARD;
>       inputs[j].ki.wVk = k;
>       inputs[j+1].type = INPUT_KEYBOARD;
>       inputs[j+1].ki.wVk = k;
>       inputs[j+1].ki.dwFlags = KEYEVENTF_KEYUP;
>       j += 2;
>     } else if( k == ' ' || k == '-' || k == '=' || k == ';' || k == '\'' || k == '#' || k == ',' || k == '.' || k == '/' || k == '\\' || k == '`' ) {
>       inputs[j].type = INPUT_KEYBOARD;
>       inputs[j].ki.wVk = k;
>       inputs[j+1].type = INPUT_KEYBOARD;
>       inputs[j+1].ki.wVk = k;
>       inputs[j+1].ki.dwFlags = KEYEVENTF_KEYUP;
>       j += 2;
>     }
>   }
>   if( modifiers & kMeta ) { 
>     printf("meta up\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_LWIN;
>     inputs[j].ki.dwFlags = KEYEVENTF_KEYUP;
>     j++;
>   }
>   if( modifiers & kAlt ) { 
>     printf("alt up\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_MENU;
>     inputs[j].ki.dwFlags = KEYEVENTF_KEYUP;
>     j++;
>   }
>   if( modifiers & kCtrl ) { 
>     printf("ctrl up\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_CONTROL;
>     inputs[j].ki.dwFlags = KEYEVENTF_KEYUP;
>     j++;
>   }
>   if( modifiers & kShift ) { 
>     printf("shift up\n"); 
>     inputs[j].type = INPUT_KEYBOARD;
>     inputs[j].ki.wVk = VK_SHIFT;
>     inputs[j].ki.dwFlags = KEYEVENTF_KEYUP;
>     j++;
46,47c133,134
<   UINT uSent = SendInput(nkeys*2, inputs, sizeof(INPUT));
<   if( uSent != nkeys*2 ) {
---
>   UINT uSent = SendInput(j, inputs, sizeof(INPUT));
>   if( uSent != j ) {