是否可以覆盖python中的按键功能?

时间:2019-04-08 00:19:36

标签: python

我正在写一个像脚本一样的速记技术,这样,当您按键盘上的特定组合键(例如“ ASDF”)时,它将转换为一个单词并键入该单词,而不是按键盘。但是,我找不到替代按键的方法,以至于记事本之类的程序将忽略我键入“ ASDF”的内容。

我目前唯一的解决方案是让脚本退格所键入的字符,然后粘贴要键入的单词。

到目前为止,这是我的脚本:

import ctypes

def main():
    GetAsyncKeyState = ctypes.windll.user32.GetAsyncKeyState
    key_states = [0] * 26
    pressed_keys = [0] * 26
    chord = ''
    while True:
        for k in range(65,91):
            key_states[k-65] = GetAsyncKeyState(k)
            if GetAsyncKeyState(k): pressed_keys[k-65] = 1
        if sum(key_states) == 0:
            for k in range(26):
                if pressed_keys[k] == 1:
                    chord += chr(k+65)
            if chord != '': write(chord)
            chord = ''
            pressed_keys = [0] * 26

dictionary = open('dictionary.txt','r').read()
entries = dictionary.split('\n')
chords = [[0,0]]*len(entries)
for e in range(len(entries)):
    s = entries[e].split('-')
    chords[e] = [s[0],s[1]]

def write(chord):
    found = 0
    for c in chords:
        if chord==c[0]:
            found = 1
            _type(c[1])
    if not found:
        _type(chord)

def _type(word):
    '''
    This is where the code would go...
    '''

main()

预期的结果是,直到脚本粘贴最后一个单词之前,我输入的所有字符都不会出现。但是,相反,我所按下的构成单词的字符会首先显示。

我的计划是重写键,而不执行任何操作。 即当我按“ e”时,什么也不会发生。

0 个答案:

没有答案