Вам нужно написать драйвер, чтобы действительно получить виртуальную клавиатуру. Драйверы клавиатуры не могут быть написаны на C #.
Драйверы написаны на C (даже не на C ++; только на C), и они используют Windows Driver Kit для разработки. Недостаточно документации, срок (чем скорее вы это признаете, тем лучше). Возьмите копию следующих книг, если у вас их еще нет: Внутренние компоненты Windows , Расширенная отладка Windows , Oney's Программирование модели драйвера Windows и Разработка драйверов с помощью Windows Driver Foundation . Я настоятельно рекомендую использовать KMDF , поскольку это делает написание драйверов только чрезвычайно трудным, а не безумно почти невозможным. Подпишитесь на NTInsider OSR и читайте их архивы списков рассылки (это единственный известный мне источник, в котором есть все недостающие сведения о написании драйверов). Начните работать со своими личными контактами, потому что есть шанс, что вам нужно поговорить с кем-то глубоко в Microsoft.
Честно говоря, намного проще нанять существующего специалиста в этой области. Разработка драйверов стоит не дешево, но дешевле, чем делать это самостоятельно.