isn't it simply that 39 is not in the activated ranges?
\@inpenc@loop\^^A\^^H%
\@inpenc@loop\^^K\^^K%
\@inpenc@loop\^^N\^^_%
\@inpenc@loop\^^?\^^ff%
In that case
\catcode`\'=\active \DeclareInputText{39}{\textquotesingle}
% ^ this is input character 39
would work?