Global Hotkeys i Python 3.3

Tags:    python

Hejsa.
Vi sidder pt i et projekt på skolen og er ved at lave et program med timere.

vi er nået dertil hvor vi gerne vil have Global Hotkeys sat til at starte vores timere, men kan intet finde om hvordan dette er muligt i python 3.3.

Hvis der er nogen er har ideer eller links til hvordan det kan gøres vil vi sætte stor pris på det :)


mvh
Kasper Torp



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Windows måde:

Hvis du med Global Hotkeys mener at du kan trykke på tastaturet og dit program vil kunne opfange det selvom det ikke har fokus så skal du kigge under low-level keyboard (hooks). Det er en del af WINAPI så du skal kommunikere sammen med C-kode fra Python.

Der er et modul der hedder Python Win32 Extensions: http://sourceforge.net/projects/pywin32/files/ som gør det nemmere gør det mere behageligt at kommunikere med WINAPI end ctypes gør alene.

Sørg for at du ved hvad du gør, dvs. læs relevant dokumentation, specielt noter og warning sektions. *Mener* at man kan lave en del ragnarok, blandt andet at låse tasturet helt ude - hvilket vidst nok kan kræve en genstart.

Her er 2 post på stack overflow:
http://stackoverflow.com/questions/9817531/applying-low-level-keyboard-hooks-with-python-and-setwindowshookexa

http://stackoverflow.com/questions/676713/is-there-a-cross-platform-python-low-level-api-to-capture-or-generate-keyboard-e

Ved ikke hvordan du gør det på Linux men det er angiveligt lidt mere vanskeligt (nok også mere sikkert):

On Linux, things are a bit more complex since real OSes protect their users against keyloggers[*]. So here, you will need a root process which watches one of[] the handles in /dev/input/. Your best bet is probably looking for an entry below /dev/input/by-path/ which contains the strings "kbd" or "keyboard". That should work in most cases.





t