PDA

View Full Version : [indipendente dal linguaggio] Intercettare eventi di tastiera e reinviarli


ingframin
18-11-2016, 14:26
Buon pomeriggio,
mi è venuta un'idea per un programma che mi aiuterebbe moltissimo sia a lavoro che a casa.
Quello che vorrei fare è un app che gira come demone in background e intercetta gli eventi di tastiera. Se intercetta una combinazione di tasti programmata, deve inviare al resto del sistema una serie di eventi di tastiera diversi, mentre se la combinazione non è programmata, non manda niente.
Esempio:
- Avvio il mio programma
- Avvio word
- Premo contemporanemente 'd' ed 's' e per word è come se avessi digitato 'distinti saluti'

È solo un esempio ma pensavo di fare una cosa del genere anche per altre applicazioni.

In pratica è come quel programma che mappa il pad dell'XBOX360 come mouse e frecce direzionali (http://xpadder.com/?lang=italian&country=IT)

Avete idea di cosa andare a guardare a parte le api di win32?
Io stavo pensando a pyhook o di vedere se fosse possibile in C++ o in C# o in java(?).

Ogni suggerimento è ben accetto

malatodihardware
18-11-2016, 20:54
Auto hotkey

x_Master_x
19-11-2016, 10:11
- Avvio il mio programma
- Avvio word
- Premo contemporanemente 'd' ed 's' e per word è come se avessi digitato 'distinti saluti'


TyperTask Portable (http://portableapps.com/apps/utilities/typertask-portable)

Non contemporaneamente ma una di seguito all'altra:
ds=Distinti saluti

Se ci tieni proprio a sapere le API:
SetWindowsHookEx (https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx)
WH_KEYBOARD_LL
Installs a hook procedure that monitors low-level keyboard input events. For more information, see the LowLevelKeyboardProc hook procedure

cdimauro
20-11-2016, 22:34
SetWindowsHookEx dovrebbe essere facilmente utilizzabile anche in Python, usando ctypes. Mentre per inviare eventi, inclusi tasti premuti, a un'applicazione servirebbe qualche altra API, o sfruttare un framework per l'automazione come fMBT (https://01.org/fmbt/) (a cui ho e sto contribuendo di recente anch'io).

U235
21-11-2016, 17:25
Ciao,
se usi net c'è qualcosa di già pronto e facile da usare :
https://inputsimulator.codeplex.com/

71106
23-11-2016, 16:21
SetWindowsHookEx dovrebbe essere facilmente utilizzabile anche in Python, usando ctypes. Non sempre. Alcuni tipi di hook richiedono che la callback risieda in una DLL che verra' poi caricata all'interno del processo a cui e' indirizzato il keystroke, quindi Python e' fuori gioco.

Alla tenera eta' di 22 anni raccolsi un'esperienza non indifferente riguardo alla questione. La roba che ho sniffato nei laboratori dell'universita' con quel keylogger... :asd:

ingframin
25-11-2016, 17:09
Grazie a tutti per i consigli!
Al momento ho 3 opzioni sul tavolo:
typer task e Windows Input Simulator suggerite da voi e la terza è una libreria di Arduino per emulare un dispositivo HID (certo che li ho bisogno di un Arduino...).
https://www.arduino.cc/en/Reference/MouseKeyboard