Please help with a bit of strange matrix ghosting.
I'm using the controller for a commodore 64 keyboard, it uses a 8x8 matrix, with no diode blocking.
Everything works fine for the keyboard, and then I've added the 2 joystick ports. These use 5 signal plus one common. (Up, Down, Left, Right, Fire , Common(gnd))
The joysticks are floating when plugged in, and not being pushed in a direction, but just having J1 plugged in causes the insert key to trigger itself, and the 1 key.
Unplugging the joystick, the key only triggers insert.
Any suggestions on why it's causing this behavior?
# Matrix setup for COMMODORE 64
matrix
scanrate 1
debounce 5
blocking 1
# PROMicroPins 13 14 15 20 17 18 19 16 1 PromicroPins
Joy Pins
sense PB6 PB2 PB3 PF4 PF7 PF6 PF5 PB1 PD3
strobe PB5 BACKSPACE ENTER RIGHT F7 F1 F3 F5 DOWN PAD_PERIOD #12 -J1 6(F)
strobe PD0 3 W A 4 Z S E LSHIFT PAD_ASTERIX #6 -J1 2(D)
strobe PD4 5 R D 6 C F T X PAD_2 #7 -
strobe PC6 7 Y G 8 B H U V PAD_3 #8 -
strobe PD7 9 I J 0 M K O N PAD_PLUS #9 -J1 4(R)
strobe PE6 MINUS P L EQUAL PERIOD SEMICOLON LEFT_BRACE COMMA PAD_5 #10 -
strobe PB4 INSERT RIGHT_BRACE QUOTE HOME RSHIFT BACKSLASH DELETE SLASH PAD_MINUS #11 -J1 3(L)
strobe PD1 1 ESC TAB 2 SPACE LCTRL Q LALT PAD_SLASH #5 -J1 1(U)
strobe PD2 UNASSIGNED PAD_2 PAD_8 PAD_0 UNASSIGNED PAD_6 UNASSIGNED PAD_4 F10 #2 -J2 8(Common)
# Joypins |N| |J2 2(D)| |J2 1(U)| |J2 6(F)| |N| |J2 4(R)| |N| |J2 3(L)| J1 8 (Common)
end
macroblock
#Left Shift Keys....
macro DOWN LSHIFT # Left Shift + Down = Up
CLEAR_META LSHIFT
MAKE UP
onbreak
BREAK UP
endmacro
macro RIGHT LSHIFT # Left Shift + Right = Left
CLEAR_META LSHIFT
MAKE LEFT
onbreak
BREAK LEFT
endmacro
macro F1 LSHIFT # Left Shift + F1 = F2
CLEAR_META LSHIFT
MAKE F2
onbreak
BREAK F2
endmacro
macro F3 LSHIFT # Left Shift + F3 = F4
CLEAR_META LSHIFT
MAKE F4
onbreak
BREAK F4
endmacro
macro F5 LSHIFT # Left Shift + F5 = F6
CLEAR_META LSHIFT
MAKE F6
onbreak
BREAK F6
endmacro
macro F7 LSHIFT # Left Shift + F7 = F8
CLEAR_META LSHIFT
MAKE F8
onbreak
BREAK F8
endmacro
macro F10 LSHIFT # Left Shift + Restore = F12
CLEAR_META LSHIFT
MAKE F12
onbreak
BREAK F12
endmacro
# ALT Keys (Runstop Key)
macro F1 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE F11
onbreak
BREAK F11
endmacro
macro F3 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE BACK_QUOTE
onbreak
BREAK BACK_QUOTE
endmacro
macro F5 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE PAGE_UP
onbreak
BREAK PAGE_UP
endmacro
macro F7 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE PAGE_DOWN
onbreak
BREAK PAGE_DOWN
endmacro
macro F10 LALT # Left Shift + F7 = F8
BREAK LALT
MAKE F9
onbreak
BREAK F9
endmacro
endblock