I got a little carried away researching for what was just intended to be a mild elaboration on what was already said. The best solution now is to place a diode on each key, which allow any combination and of pressed keys. To be pressed at the same time as other keys. The cheap solution was to use additional inputs for the modifier keys that needed The problem with that second option is that when many keys are pressed simultaneously (more than 2), it is sometimes impossible to determine all pressed keys because they make some short-circuits between lines and columns. Quickly enough to be transparent for the typist. The controller will alternatively scan each of the 10 columns and read the state of the 10 lines. The microcontroller will need 10 inputs and 10 outputs. Simple, but that's a lot of signals, fairly expensive. You can use a microcontroller with 100 inputs and eack switch connected on one side to the power supply and the other side to the microcontroller. Modifier keys were sometimes wired differently than other keys. shift, that is, when games can be played using the keyboard) Hobbyist machines generally require a better multiple keypress handling or it would not be possible to move up & right at the same time & press fire for instance (note that the J+K impossibility on the A1200 machine isn't really a problem since in no sane mapping J could be up and K left, and for fire, game designers usually prefer.
(for instance the Oric 1/Atmos used a matrix and had no multiple keypress restrictions, you could query each key by row/column independently) It seems that the design of "serious" machines like IBM PCs of the time doesn't take into account multiple keypresses like other more hobbyist machines would, one of the reasons could be that hobbyist machines keyboards need to be more performant for games played with the keyboard. That comments tends to restrict my answer to other types of keyboards.
The mainboard processors do not see a matrix of rows and columns, and the remote microcontrollers know that certain keys are modifiers, transmitting their codes as fake modifiers to make newer keyboards work with older machine firmwares
PC/XT, PC/AT, PS/2, and suchlike keyboards have two microcontrollers and a serial link between the mainboard and the keyboard. This J+K thing is just bad luck (and the only example I know).
On a day to day basis, all key combinations aren't useful. So in that case you could not use "J" or "K" as shift since some combinations would not work. It worked perfectly on Amiga 500 model but with the A1200, J+K cannot be detected at the same time due to a different keyboard circuitry/cheaper design on the A1200 (a part of the reason is because they're next to each other on the same matrix line). However there are some limitations when several keys are pressed, depending on the hardware.Ī "famous" example is the Z-Out cheatmode on amiga: "press J+K for invincibility". So one could say that only the operating system makes the shift/control/alt keys different from others. From a pure hardware point of view, a significant amount of computers keyboards see each keypress as a bit set in a matrix of rows & columns, so with another operating system you could theorically map "shift" to another key.