@@ -70,7 +70,7 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
7070 case "F5" :
7171 err = handle .HandleEvent (plugging .PortPanel , ports .PanelTogglePlayer1Pro , nil )
7272
73- // joystick
73+ // joystick (left player)
7474 case "Left" :
7575 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .Left , ports .DataStickTrue )
7676 case "Right" :
@@ -82,6 +82,11 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
8282 case "Space" :
8383 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .Fire , true )
8484
85+ // joystick (right player)
86+ // * keypad and joystick share some keys (see below for other inputs)
87+ case "J" :
88+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Right , ports .DataStickTrue )
89+
8590 // keypad (left player)
8691 case "1" , "2" , "3" :
8792 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .KeypadDown , rune (ev .Key [0 ]))
@@ -105,6 +110,7 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
105110 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .KeypadDown , '#' )
106111
107112 // keypad (right player)
113+ // * keypad and joystick share some keys (see below for other inputs)
108114 case "4" :
109115 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '1' )
110116 case "5" :
@@ -115,20 +121,39 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
115121 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '4' )
116122 case "T" :
117123 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '5' )
118- case "Y" :
119- err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '6' )
120- case "F" :
121- err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '7' )
122- case "G" :
123- err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '8' )
124- case "H" :
125- err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '9' )
126124 case "V" :
127125 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '*' )
128126 case "B" :
129127 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '0' )
130128 case "N" :
131129 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '#' )
130+
131+ // keypad (right player) *OR* joystick (right player)
132+ // * keypad and joystick share some keys (see above for other inputs)
133+ case "Y" :
134+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
135+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '6' )
136+ } else {
137+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Up , ports .DataStickTrue )
138+ }
139+ case "F" :
140+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
141+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '7' )
142+ } else {
143+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Fire , true )
144+ }
145+ case "G" :
146+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
147+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '8' )
148+ } else {
149+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Left , ports .DataStickTrue )
150+ }
151+ case "H" :
152+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
153+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadDown , '9' )
154+ } else {
155+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Down , ports .DataStickTrue )
156+ }
132157 }
133158 } else {
134159 switch ev .Key {
@@ -138,7 +163,7 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
138163 case "F2" :
139164 err = handle .HandleEvent (plugging .PortPanel , ports .PanelReset , false )
140165
141- // josytick
166+ // josytick (left player)
142167 case "Left" :
143168 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .Left , ports .DataStickFalse )
144169 case "Right" :
@@ -150,13 +175,46 @@ func (c *Controllers) keyboard(ev EventKeyboard, handle HandleInput) error {
150175 case "Space" :
151176 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .Fire , false )
152177
178+ // joystick (right player)
179+ // * keypad and joystick share some keys (see below for other inputs)
180+ case "J" :
181+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Right , ports .DataStickFalse )
182+
153183 // keyboard (left player)
154184 case "1" , "2" , "3" , "Q" , "W" , "E" , "A" , "S" , "D" , "Z" , "X" , "C" :
155185 err = handle .HandleEvent (plugging .PortLeftPlayer , ports .KeypadUp , nil )
156186
157187 // keyboard (right player)
158- case "4" , "5" , "6" , "R" , "T" , "Y" , "F" , "G" , "H" , "V" , "B" , "N" :
188+ // * keypad and joystick share some keys (see below for other inputs)
189+ case "4" , "5" , "6" , "R" , "T" , "V" , "B" , "N" :
159190 err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadUp , nil )
191+
192+ // keypad (right player) *OR* joystick (right player)
193+ // * keypad and joystick share some keys (see above for other inputs)
194+ case "Y" :
195+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
196+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadUp , nil )
197+ } else {
198+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Up , ports .DataStickFalse )
199+ }
200+ case "F" :
201+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
202+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadUp , nil )
203+ } else {
204+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Fire , false )
205+ }
206+ case "G" :
207+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
208+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadUp , nil )
209+ } else {
210+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Left , ports .DataStickFalse )
211+ }
212+ case "H" :
213+ if handle .PeripheralID (plugging .PortRightPlayer ) == plugging .PeriphKeypad {
214+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .KeypadUp , nil )
215+ } else {
216+ err = handle .HandleEvent (plugging .PortRightPlayer , ports .Down , ports .DataStickFalse )
217+ }
160218 }
161219 }
162220
0 commit comments