As far as I know, Window-Eyes was the only screen reader ever to give that flexibility. It had separate caps and punctuation levels for screen and keyboard.
Irrelevant here, but Speakup for Linux does. I think some of the DOS screen readers did as well (Tinytalk I believe, and maybe Vocal-Eyes).