Se il tuo fine è quello di intercettare in un applicazione a riga di comando il momento in cui l'utente preme il tasto " Q " della sua tastiera, proporrei un codice di questo genere:
Private pr As Process
Private lett As New String[]
Public Sub Main()
Dim s As String
Dim ss As New String[]
Dim j As Short
s = File.Load("/proc/bus/input/devices")
s = Replace$(s, "\n", " ")
ss = Split(s, " ", "", True)
For j = 0 To ss.Max
' Individuiamo la riga contenente il testo "Handlers=sysrq", e quindi raccogliamo l'ultima parola della riga medesima.
' Tale parola sarà in nome del file-device della tastiera:
If ss[j] = "Handlers=sysrq" Then s = ss[j + 2]
Next
' Per leggere il file-device individuato, bisogna avere i necessari permessi. Essi vengono quindi modificati.
' La parola "mia_password" della riga seguente è la password personale dell'utente:
Shell "echo mia_password | sudo -S chmod 4777 /dev/input" &/ s Wait
' Finalmente il file-device viene gestito mediante "Process":
pr = Exec ["cat", "/dev/input" &/ s] For Read As "processo"
End
Public Sub processo_Read() ' Ogni volta che viene premuto un tasto della tastiera....
Dim b As Byte
'...legge i dati provenienti dal file-device della tastiera:
Read #pr, b
lett.Add(CStr(b))
If lett.Count = 144 Then
' Se si preme il tasto della lettera "Q"....
If lett[20] = "16" Then Print "Intercettato tasto "; Quote(" Q "); " della tastiera !"
lett.Clear
Endif
End
:-X