A maioria dos terminais simplesmente não faz distinção entre Ctrl e Ctrl Deslocamento - a entrada resultante sempre tem os mesmos bits indefinidos (0x6f o ou 0x4f O → 0x0f ^O ).
Você pode verificar isso usando stty cbreak; xxd -c1 e pressionando várias combinações de Ctrl O e Ctrl Deslocamento < kbd> O ; você verá o programa vendo tudo como 0x0f .