Also I don't get that ctrl-shift part, I'm afraid.
Maybe not the best place to talk about this, though
I think this is a reasonable place, since it is of interest to some at least.
Back in the old days, computers were really big boxes in far-off rooms. People used terminals to communicate with them (assuming they were the modern time-sharing kind; otherwise, they would use punched cards).
Depending on who made the computer, and when, it might be that they would use ASCII terminals, which were made as commodity products by many different manufacturers. DEC, in particular, did a lot to standardize ASCII video terminals, which is why many terminal emulation programs will by default follow the protocols of the DEC VT-100 terminal.
ASCII terminals, though, were ultimately based on such devices as the good old ASR 33 Teletype.
When you press the "Carriage Return" key on an ASCII terminal, or when you hold down CTRL and press M, the terminal will send the character whose code is the number 13 (or 0001101 in binary). So the computer at the receiving end
cannot tell which one of those two alternatives you chose to do.
A Teletype, and some ASCII terminals, also have a LINE FEED key; that sends the same code as control-J; the number 10 (or 0001010 in binary).
The Teletype did not have a Backspace key, but most ASCII terminals did; that sent the same code as control-H, the number 8.
And so on.
Later on, some ASCII terminals had keys on their keyboards which didn't correspond to ASCII codes either for control characters or printable characters. Thus,
! might be used to set a tab; #1 might be sent when the F1 key is pressed.
Originally, each terminal was different; eventually, a standard for escape codes was adopted that allowed numerical parameters in escape codes to vary in length - this standard meant that every escape code had to contain some character other than a digit, and if it did contain digits, the digits came first. This was the opposite of the previous practice, and it required more processing power; this standard came out when small 8-bit microprocessors started to be used inside terminals.
In the old days, therefore, the tendency was that except in some systems (such as the IBM 3270 terminal environment) every key on the keyboard (except the shift keys) had as its primary function transmitting some ASCII code or code, and it was the ASCII codes that actually 'did something'.
An exotic and expensive kind of terminal, the "block mode" terminal, tried to behave a bit like an IBM 3270, and so the cursor arrow keys didn't send ASCII codes anywhere, but instead were used locally inside the terminal to let you place characters on the screen, and then a "send" key would transmit all the characters in a certain part of the screen (i.e. the field in which the cursor is located, or all entry fields) to the host computer at once.