Merhaba hocam. Verdiğin detaylar ve denediğin yöntemler, sorunun tam olarak Windows'un çekirdek mimarisine ve Ring 3 (User-Mode) sınırlarına takıldığını gösteriyor
Sadece User-Mode (Ring 3) yetkileriyle, API veya Syscall kullanarak LLKHF_INJECTED flag'ini set etmeden tuş girişi göndermen imkansızdır. Sen NtUserSendInput ile doğrudan Syscall yapsan bile, bu çağrı kernel tarafında win32k.sys (veya win32kbase.sys) modülüne düşer. Windows'un girdi işleme mekanizması, gelen verinin bir donanım kesmesi (hardware interrupt) sonucu kbdclass.sys (Klavye Sınıf Sürücüsü) üzerinden gelip gelmediğine bakar. Eğer veri bir donanım kuyruğundan (hardware queue) gelmiyorsa, Windows bunu "Yazılım tarafından üretilmiş" olarak kabul eder ve LLKHF_INJECTED (hatta duruma göre LLKHF_LOWER_IL_INJECTED) flag'ini direkt yansıtır.
Bu flag'i atlatmanın tek yolu, işletim sisteminin Ring 0 (Kernel-Mode) seviyesine inerek donanımı taklit etmektir ancak bu da imzasız çalışmaz. Sanal HID Sürücüsü (Virtual HID Driver) Kullanmak / Yazmak: En temiz (mimari açıdan) ve en "yazılımsal" çözüm budur. Sisteme sanal bir USB Klavye sürücüsü yüklersin. Senin User-Mode yazılımın (Python, C++ vs.) bu sürücüye özel bir IOCTL mesajı gönderir. Sürücü de bu mesajı alıp Windows'a sanki fiziksel bir USB klavyeden tuşa basılmış gibi IRP (I/O Request Packet) iletir.
Interception Kütüphanesi (Driver Tabanlı): Oblita'nın geliştirdiği Interception aracı, doğrudan klavye donanımı ile işletim sistemi arasına bir filtre sürücüsü (keyboard.sys) enjekte eder. Dezavantaj olarak sanırım çoğu oyun anticheat sürücüleri Interception'u kara listeye aldı, ban yiyebilirsin (indirmek bile yeterli.)
Custom Kernel Driver (KMD) Yazmak: Kendi sürücünü (C/C++ ile WDK kullanarak) yazıp doğrudan kbdclass.sys cihaz nesnelerine (device objects) veri yazabilirsin. (Pek önermem, zordur.)
Özetle hocam: Yazılım tarafında çözüm var, ancak bu çözüm senin uygulamanın exe'sinden çıkıp bir .sys (sürücü) dosyasına geçiş yapmanı zorunlu kılıyor.