Алгоритм в принципе простой и самому придумать его несложно.
Тебе потребуется: список английских слов, список русских слов, расстояние Левенштейна, мануал по написанию кейлогера, мануал по симуляции ввода.
Обычно используют частотный анализ n-грамм строки. Что нужно
словарь слов языка, возможно с частотами.
карты отображения символов в физ. кнопки клавиатуры.
Далее слова переводятся в физ. кода кнопок и разбиваются на n-грамы. Например, «тест» будет условно NTCN и для случая триграм разбивается на 4 триграмы {_NT, NTC, TCN, CN_}. После анализа всех слов должна получиться бд n-грам вида { n-gram-code -> { lang_1 -> score, ..., lang_2 -> score } }.
Входная строка переводится в физ. коды кнопок и тоже бьётся на n-граммы. Далее по бд считается скор для каждого языка.
Лучше всего работают 3-граммы, но обычно в либах юзают 2-граммы.