Pagina 1 di 4

La guida completa e definitiva al KEYHACK

Inviato: 09/05/2012, 18:42
da MasterKOF
A differenza dei joypad la tastiera (se con attacco PS/2) non necessita di
alcun driver e può funzionare indipendentemente sotto qualunque sistema
operativo senza alcun problema. Putroppo nonostante le tastiere abbiano oltre
100 tasti con questa tecnica possiamo utilizzarne solo 25 – 30 senza che
problemi di Ghosting e Blocking rendano i controlli inutilizzabili. Quindi al massimo potremmo crearci un hack per 2 giocatori e non di piu!

Funzionamento della tastiera

Una normalissima tastiera Italiana comprende 105 tasti e alla pressione di ognuno, un controller invia un segnale diverso al pc alla pressione, ed uno al rilascio.
Essendo i tasti 105, non aspettatevi di trovare 106 contatti^^ si impazzirebbe. Le tastiere fortunatamente utilizzano un sistema chiamato a matrice, che riduce di molto la quantità di fili necessari.

Immagine

A prima vista la figura in alto, potrebbe sembrare un sistema molto efficace, ma cosi facendo abbiamo bisogno di 1 comune e di 12 input diversi: TOT 13 fili
Quindi possiamo dire che, il numero dei pulsanti è uguale al numero dei fili + 1

Immagine

La figura qui sopra è un tipico esempio di matrice. Con tre colonne A,B,C e 4 righe 1,2,3,4 possiamo ottenere sempre 12 pulsanti.
Quindi sommando i diversi fili, ce ne serviranno soltanto 7 anzi che i 13 di prima.

Come funziona la matrice?

La matrice funziona in maniera molto semplice. Ciclicamente un controller invia un segnale alle colonne (prima A poi B poi C), contemporaneamente sulle righe viene "ascoltato" se arriva qualcosa. Se ad esempio mentre è attiva la colonna “A” il controller rileva
il segnale sulla riga 3 questo vorrà dire che inequivocabilmente è stato premuto il
tasto 7.
Questo espediente permette di risparmiare un notevole quantitativo di fili (nel nostro
caso 7 anziché 13), infatti il prodotto tra numero di linee e numero di colonne fornisce
quanti tasti la nostra matrice può gestire.
Tutto questo ha però dei limiti, chiamati Ghosting e Blocking!!

Ghosting e Blocking

Allora, il ghosting è il fenomeno per cui alla pressione di 3 tasti disposti in punti critici della matrice la tastiera “crede” che in realtà siano premuti 4 tasti.
Esempio

Immagine

In figura sono stati premuti ad esempio i tasti 1, 3 e 6. La linea verde rappresenta il percorso: si vede che la pressione di questa combinazione di tasti fa si che
quando il controller manda il segnale di check alla colonna A lo ritrovi sia sulla riga 1 che sulla riga 2; quindi lo interpreta come pressione contemporanea dei tasti 1 e 4.
Questo è un esempio di Ghosting!
in linea generale possiamo dire che:
“Ogni qualvolta vengono premuti i tasti corrispondenti ai 3 lati di un rettangolo sulla matrice viene generato il ghosting sul tasto corrispondente al quarto lato”.
Il blocking invece è una condizione di errore che genera il controller per prevenire il ghosting: vengono infatti inabilitati alcuni tasti; nel nostro caso se premessimo 1, 3 e 6 contemporaneamente il controller restituirebbe al pc un messaggio di errore e quest'ultimo non riconoscerebbe la pressione di nessun tasto. Quindi cosa da tenere bene impressa a mente è che in nessun caso dobbiamo generare situazioni di ghosting o blocking!

Creazione delle input necessarie

Prendete una "bella" tastiera, smontatela del tutto e tenete soltanto la PCB interna

Immagine

Come potete vedere, io ho numerato i primi 18 conttatti da 1 a 18 e i restanti attribuendo le lettere da A a H
Fatto ciò, mi sono creato una bella tabella per fare una mappatura perfetta dei contatti.
In questo ci vengono in aiuto alcuni semplici programmi Ghost Key e KeyScan, che ci permettono di effettuare una mappatura completa della tastiera. Vi ci serve solo un po' di tempo, ma alla fine il risultato è piu o meno come questo

Immagine

Notate come anche se la mia tastiera era da 105 tasti, la mappatura ne ha sviluppati 144, anche se alla fine si possono notare che ci sono molti tasti che neanche sapevate di avere (apertura Windows media player, Outlook e cavolate simili)

A questo punto c'è da scegliere quali tasti utilizzare nel nostro controller stando bene
attenti a non causare il ghosting; in prima istanza possiamo dire che se io uso un tasto
per ogni riga posso stare certo che non avrò mai ghosting.. quindi sono partito da
questa considerazione ed ho colorato le caselle che avrei avuto intenzione di usare

Immagine

Molto bene, in questo modo siamo arrivati a 16 tasti disponibili; peccato che a me ne
servissero 25! (6 tasti per giocatore + 2 manopole direzionali da 4 contatti l'una + i
due contatti delle gettoniere + i due pulsanti per selezionare 1 o 2 player + il bottone
per far avviare il gioco selezionato nel menù) quindi son dovuto scendere a
compromessi:
– innanzitutto nei joystick c'è da considerare che tasti come “destra” e “sinistra” o
“su” e “giu” non possono fisicamente essere premuti contemporaneamente
– poi c'è da considerare che alcuni tasti, tipo il contatto della gettoniera per
aumentare i credits, è decisamente improbabile che vengano premuti in
contemporanea ad altri tasti.
Ho applicato questi concetti ed ho colorato in rosa le caselle da dare ai
comandi che si autoescludono: ad esempio F3 e D potrebbero essere affibiati ai
pulsanti DX e SX mentre H e M potrebbero essere UP e DOWN nel joystick 1.
Ho inoltre spostato un paio di caselle rosse che erano capitate su incroci che non
fornivano nulla.
In ogni caso, potete facilmente apprezzare che nel peggiore dei casi sarebbe premuto
al più un tasto per ogni riga quindi stiamo certi che non si possa creare ghosting.

Immagine

Ok il lavoro è quasi completato; ci mancano solo altri 5 tasti.
Purtroppo la mappa non ci da molte possibilità quindi i 5 tasti che assegneremo ora
avranno qualche possibilità di avere ghosting. Per fortuna ormai tutti e 12 i tasti di
gioco ed entrambe le manopole sono state mappate quindi quelli che rimangono sono
tasti di servizio che non verranno mai premuti contemporaneamente ad altri.

Immagine

Potete apprezzare l'assegnazione completa dei tasti: ho colorato di verde le
caselle che possono dare problemi infatti a titolo di esempio fo notare che Z genera
ghosting se premuto assieme a Q e a un tasto a scelta tra M INVIO o la virgola.
Stessa cosa pure per F1, 4, U, O.
però questo non rappresenta un problema, l'importante è che i tasti di gioco non diano
noie e con la nostra mappa possiamo stare tranquilli di poter giocare anche un doppio a
Street Fighter senza che i tasti che diano ghosting!

Spero che questo piccolo tutor serva a qualche pazzo che si vuole cimentare come me in quest'impresa!!
Ricordatevi una cosa che ho scoperto solo dopo. Ogni tastiera ha una propria matrice, quindi la tabella è solo un esempio. Il sistema anti-ghosting va bene, ma i risultati degli incroci non prendeteli per buoni!!!


Costruiamoci il Controller

Questa è forse la parte un po' piu pratica nella quale dovrete eseguire qualche saldatura (a me molto ostiche); in sostanza si tratta di collegare i contatti della PCB della tastiera ad una normalissima morsettiera. Di modi per farlo c'è ne sono a valanga, piu o meno ordinati. Io personalmente ho realizzato il mio controller come in figura (la foto non è la mia, ma è quella da cui presi spunto) in modo da ottenere una unica base e poter star sicuro che bruschi movimenti non potessero staccare qualche saldatura; (che mi è successo un mare di volte)

Immagine

Collegamenti ai tasti di gioco

Questa è la fase che richiede maggiore attenzione ma soprattutto maggiore ordine; è facile sbagliare un filo e toppare tutto il cablaggio. In pratica i microswitch non sono altro che dei deviatori ;

Immagine

dei tre contatti disponibili il primo è comune, il secondo è normalmente aperto mentre il terzo è normalmente chiuso, noi useremo quindi i contatti 1 e 2 cablati in modo che alla pressione del tasto vengano messi in corto la riga e la colonna da
noi prescelti. Prima di iniziare i collegamenti occorre decidere dove disporremo il nostro controller, dopodiché dovremo procurarci un filo colorato per ogni riga e colonna.
Una volta posizionato il controller e fatti arrivare i fili alla plancia dovrete iniziare a collegare i fili ai rispettivi interruttori; praticamente tutti i fili dovranno andare ad almeno un paio di switch, ad esempio dalla tabella in figura si vede chiaramente che il filo della colonna A dovrà andare a due pulsanti di gioco e a due di servizio, il filo della colonna B invece andrà a due pulsanti di gioco e a uno switch del joystick, ecc...

Note personali

Il Keyhack è senza ombra di dubbio una operazione che richiede un po' di attenzione, ma non è di difficoltà estrema, anzi! E' un ottimo espediente per fare anche un po' di pratica con le saldature e poi, come penso sempre, quando un lavoro te lo fai da te...è meglio!!

Re: La guida completa e definitiva al KEYHACK

Inviato: 09/05/2012, 18:54
da PaTrYcK
MasterKOF complimenti!
Karma +1 x te <-clap->

Re: La guida completa e definitiva al KEYHACK

Inviato: 09/05/2012, 19:27
da MasterKOF
PaTrYcK ha scritto:MasterKOF complimenti!
Karma +1 x te <-clap->
8-)

Re: La guida completa e definitiva al KEYHACK

Inviato: 09/05/2012, 23:15
da Puccilillo
Fresca fresca sembra fatta apposta per me... ora vado in cantina a finire il lavoro :D

+1 a te, sisi !!!

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 9:44
da Kernel
Ho pinnato il thread <-happy->

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 9:48
da MasterKOF
Kernel ha scritto:Ho pinnato il thread <-happy->
Thank you!! Oggi aggiungo anche la seconda parte, quella relativa al cablaggio!!

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 11:15
da r77
Bravo MasterKOF <-thumbup->

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 11:51
da inuyaksa
Ottimo lavoro, complimenti!

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 12:17
da eldiau
Bello, grazie, dovrebbe passare nel wiki

Re: La guida completa e definitiva al KEYHACK

Inviato: 10/05/2012, 16:44
da MasterKOF
mi fate piangere.... :on_cry: :on_cry: :on_cry:

cmq, oggi finisco con la seconda parte, poi ci potete fare quello che volete :love: