Что бы я сделал, используйте AutoHotKey , или python SendKeys или какой-нибудь визуальный базис, который отправил бы мне все возможные ключи (также с измененным и не примененным) к Документ Word.
В SendKeys это будет скрипт вида
chars = ''.join([chr(i) for i in range(ord('a'),ord('z'))])
nums = ''.join([chr(i) for i in range(ord('0'),ord('9'))])
specials = ['-','=','\','/',','.',',','`']
all = chars+nums+specials
SendKeys.SendKeys("""
{LWIN}
{PAUSE .25}
r
winword.exe{ENTER}
{PAUSE 1}
%(all)s
+(%(all)s)
"testQuotationAndDashAutoreplace"{SPACE}-{SPACE}a{SPACE}{BS 3}{LEFT}{BS}
{Alt}{PAUSE .25}{SHIFT}
changeLanguage
%(all)s
+%(all)s
"""%{'all':all})
Затем я сохраню документ в виде текста и буду использовать его в качестве базы данных для всех перемещаемых клавиш в вашей раскладке клавиатуры (вы можете заменить язык ввода по умолчанию более одного раза, чтобы получить абсолютно все отображаемые символы).
Если символ в текстовом документе результата - он отображается, в противном случае нет. Нет необходимости в регулярных выражениях. После этого вы, конечно, можете встраивать диапазон символов в скрипт или программу.