[C] Differenza teorica nella digitazione pulsante tastiera

Return89
Salve a tutti,
sto sviluppando una tesina universitaria sulla sicurezza informatica ed un collega ha posto una domanda teorica a cui, in effetti, non abbiamo saputo dar risposta.
Sapreste dirmi qual è la differenza teorica tra quando digito un pulsante io e quando lo stesso pulsante viene digitato dal PC mediante software?
Mi spiego meglio: quando io ad esempio devo digitare la lettera 'A' mando un input (che sarà associato ad un valore binario) e verrà visualizzata a schermo la lettera 'A'.
Nel caso invece in cui è il computer a digitare la lettera 'A' viene inviato lo stesso input?

Per far un esempio: se scrivo questo semplice programma in C: (su google ho letto che lettera A dovrebbe essere associata a quel valore, in ogni caso non valutate errori nel codice in quanto serve solo come esempio!)
#define VK_A 0x41
int main(){
keybd_event( VK_A, 0, 0, 0 );
}

In linea teorica ci sarà qualche differenza rispetto a quando sarò io a digitare il pulsante?

Grazie in anticipo a chiunque voglia aiutarmi!

Risposte
Return89
Nessuno sa rispondere a questa domanda? :(

Rggb1
Prima cosa,
#define "digitato dal pc mediante software"

o almeno definisci meglio la questione. In linea generale direi che
1) premere un tasto -> si altera un valore di una porta/locazione di memoria/genera un intr -> leggere la memoria
2) eseguire un programma -> leggere la memoria
sono due cose differenti.

vict85
La domanda non è tanto legata al C++, ma al sistema operativo (e dei vari software e hardware collegati). Puoi ovviamente costruire una tastiera virtuale, ma per farlo devi chiamare specifiche librerie di sistema (nel tuo caso penso sia windows).

Riguardo al caso di quanto premi i pulsandi della tastiera. La tua tastiera invia un segnale al tuo computer che viene interpretato dal driver e che immagino possa chiamare keybd_event o similari. So molto poco di driver e sistemi operativi, ma penso che ogni buona introduzione sui sistemi operativi possa darti un overview di cosa succede. Per il resto del sistema non cambia nulla chi ha materialmente chiamato quell'evento. Il sistema fornisce semplicemente una interfaccia in modo tale da trasformale il signale che gli arriva in qualcosa di comprensibile per il sistema.

Cronovirus
Come hanno già detto sopra anche io penso che l'unica differenza sia come gestisce il sistema operativo l'interrupt che viene generato dal device o dalla tastiera. Dopodichè i caratteri sono utilizzati (e meno male..) alla stessa maniera. Se sei curioso di come facciano le librerie a simulare i device potrebbe essere utile vedere qualche libreria open source come questa https://github.com/jordansissel/xdotool

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.