It's tied to the layout of ASCII encoding and (I'm guessing here) the way teletypes (and the terminals and terminal emulators that followed them) work. To get one of the control codes (0 to 31 in ASCII) which didn't have a dedicated key on the keyboard, one would hit ctrl + key. Behind the scenes, that would take the code for key and blank out the most significant 3 bits (equivalent to a bitwise-and with 0x1f or subtracting 64 from the code for an uppercase letter or 96 from the code for a lowercase letter) to get the control code. So,
I (0x49 hexadecimal or 73 decimal in ASCII) or i (0x69 hexadecimal or 105 decimal in ASCII) -> horizontal tab (0x09 hexadecimal or 9 decimal in ASCII)
M (0x4d hexadecimal or 77 decimal in ASCII) or m (0x6d hexadecimal or 109 decimal in ASCII) -> carriage return (0x0d hexadecimal or 13 decimal in ASCII)
G (0x47 hexadecimal or 71 decimal in ASCII) or g (0x67 hexadecimal or 103 decimal in ASCII) -> audible bell (0x07 hexadecimal or 7 decimal in ASCII)
I (0x49 hexadecimal or 73 decimal in ASCII) or i (0x69 hexadecimal or 105 decimal in ASCII) -> horizontal tab (0x09 hexadecimal or 9 decimal in ASCII)
M (0x4d hexadecimal or 77 decimal in ASCII) or m (0x6d hexadecimal or 109 decimal in ASCII) -> carriage return (0x0d hexadecimal or 13 decimal in ASCII)
G (0x47 hexadecimal or 71 decimal in ASCII) or g (0x67 hexadecimal or 103 decimal in ASCII) -> audible bell (0x07 hexadecimal or 7 decimal in ASCII)
Comment