Dependendo da implementação do NKR (N-Key rollover), o teclado pode exigir diodos para interromper o 'ghosting', que é o que você está experimentando.
Isso basicamente impede que o sinal de varredura salte através de uma conexão de tecla para o outro lado e, em seguida, vice-versa, resultando em diferentes dados interpretados para o microcontrolador, que acha que você pressionou uma tecla diferente.
Seria ridículo ter 100 pinos diferentes em um microcontrolador para 100 teclas diferentes, então o que eles fazem é ter dois trilhos (ou seja, lado alto e terra) com um monte de chaves nesses trilhos, onde a tecla pressiona o alta e terra e assim um sinal pode passar. Isto é feito enviando ondas quadradas para o alto e, em seguida, essencialmente 'tempo' quanto tempo levará para que o sinal volte (veja debounce )
Diodos (como eles são essencialmente válvulas elétricas unidirecionais) impedem que este sinal salte do trilho alto para o trilho de aterramento de volta para o trilho alto e de volta para o trilho de aterramento, se você me seguir. Como isso mudaria a hora / posição do sinal e seria interpretado como um keystoke diferente
EDIT: Há um monte desses conjuntos de trilhos no teclado, cada um controla 8-12 teclas ou mais, dependendo do layout