Не в Python, но подход, предложенный в http://www.codeproject.com/KB/DLL/trackuseridle.aspx, выглядит интересным.
[править] Код - это стандартная C DLL, поэтому вы должны иметь возможность использовать его с ctypes.То, как код C написан с использованием SetWindowsHookEx
, означает, что вы можете переписать его напрямую Python + pywin32.Для получения дополнительной информации см. Stackoverflow.com/questions/6458812 и python-forum.org/pythonforum/viewtopic.php?f=2&t=11154 (в первой ссылке упоминаются виды событий, которые вы можете получить без написания DLL, а на другихпример с питоном).