В среде Win32 вы можете использовать вызов API GetLastInputInfo в документации Microsoft . По сути, этот метод возвращает последний тик, который соответствует тому, когда пользователь последний раз вводил данные, и вы должны сравнить его с текущим тиком, чтобы определить, как давно это было.
У Xavi23cr есть хороший пример C # в codeproject .
Любые предложения для других сред?
Что касается Linux, я знаю, что Pidgin должен определить время простоя, чтобы через некоторое время изменить свой статус на отсутствующий. Вы можете открыть исходный код и посмотреть, сможете ли вы найти код, который делает то, что вам нужно.
Кажется, вы ответили на свой вопрос, Натан ;-) "GetLastInputInfo" - это путь.
Одна хитрость заключается в том, что если ваше приложение работает на настольном компьютере, а пользователь подключается к виртуальной машине, то GetLastInputInfo не сообщит об активности (так как на хост-машине нет активности).
Это может отличаться от поведения, которое вы хотите, в зависимости от того, как вы хотите применить пользовательский ввод.