← All posts English version →

玩遊戲只用手把,電腦卻以為你不在?

原因是 Windows 判斷「有沒有人在」的方式,只看鍵盤和滑鼠,看不到遊戲手把(Xbox/PS 手把、藍牙手把等 XInput 裝置)的輸入。這不是某個軟體的 bug。靠 Windows 系統 API 判斷閒置的工具,包括 PowerDoze 在內,都會遇到同樣的限制。

Windows 到底怎麼知道你「在不在」?

Windows 用 GetLastInputInfo 這個系統層級 API 來判斷。它只認鍵盤按鍵和滑鼠移動/點擊,沒有涵蓋手把的 XInput/DirectInput 訊號。這個 API 推出之後幾乎沒有改變。手把的輸入走的是另一套驅動程式(讓 Windows 能控制手把的程式),系統沒有把它接給「閒置偵測」使用。

這是 PowerDoze 特有的問題嗎?

不是。靠系統 API 判斷閒置的軟體,都有同樣的盲區。我們檢查過 PowerDoze 的程式碼,目前沒有偵測手把輸入的功能。省電、螢幕保護類的工具如果也靠這個 API 判斷閒置,就會遇到同樣的狀況。只有另外整合遊戲手把的 SDK(程式開發套件)去監聽輸入,才能避開。

這就像感應燈只認得「手有沒有在偵測範圍內揮動」,你人好好坐在那,手上操作著搖桿玩賽車遊戲,感應燈卻看不到,過一陣子照樣把燈關掉。

有 DIY 解法嗎?

有兩個方向:拉長閒置門檻(閒置多久才算你不在),或用防閒置的小工具模擬鍵盤滑鼠訊號。拉長門檻最直接(例如把「螢幕變暗」門檻從 5 分鐘拉到 60 分鐘),代價是離開電腦時反應會變慢。另外安裝防閒置的模擬工具,則要多裝一套軟體,用起來比較複雜,也可能有相容性問題。

白名單能不能解決?

可以。把正在玩的遊戲加進 PowerDoze 的白名單(App 裡的「白名單管理」),該遊戲在前景(正在使用的視窗)執行時,離開模式就不會調暗、模糊畫面或鎖定,等於直接繞過手把偵測不到輸入的問題。這個做法不用猜閒置門檻該設多少,其他情境的省電效果也不受影響。要注意一點:離開模式裡的「離開時電源模式」不受白名單影響,閒置時間到了照樣會切換。

全螢幕玩遊戲,一般會自動放行

離開模式在決定要不要調暗、模糊畫面或鎖定之前,會先看目前在前景的視窗有沒有占滿整個螢幕(大約 95% 以上),占滿就先不動作。它只比視窗大小,所以獨佔全螢幕、無邊框全螢幕一般都算。用獨佔全螢幕或無邊框全螢幕玩,通常不用另外設定;視窗化玩、視窗沒有占滿螢幕時,才需要把遊戲加進白名單。另外,它只看前景視窗,大約每 3 秒檢查一次。

輸入方式對照表

輸入裝置系統會判定為「有動作」嗎建議做法
鍵盤會不需處理
滑鼠會不需處理
觸控螢幕/觸控板會不需處理
遊戲手把(XInput/藍牙手把)不會全螢幕玩通常免處理;視窗化玩就加入白名單,或拉長閒置門檻
方向盤/搖桿等特殊控制器多數不會全螢幕玩通常免處理;視窗化玩就加入白名單,或拉長閒置門檻

常見問題

為什麼玩賽車遊戲只用手把,螢幕會自動變暗?
因為 Windows 的閒置偵測只認鍵盤滑鼠輸入,手把的操作在系統層級看不到,久了就會被判定為「沒人在用」。

PowerDoze 有計畫支援偵測手把輸入嗎?
目前 PowerDoze 沒有偵測手把的功能(我們檢查過程式碼確認),需要額外整合手把 SDK 才能做到。這是目前的現況,不是承諾一定會做。

除了加白名單,還有別的辦法嗎?
可以拉長閒置門檻,但代價是離開電腦時反應變慢。相對之下,針對遊戲加白名單更精準,不影響其他情境的省電效果。

這個問題只有 PowerDoze 有嗎?
不是。只要是靠 Windows 系統 API 做閒置判斷的軟體都有一樣的盲區,這是平台限制,不是特定廠商的技術缺陷。

目前的限制

PowerDoze 目前偵測不到手把輸入。全螢幕或無邊框全螢幕玩時,離開模式會先暫停;視窗化玩的話,建議把遊戲加入白名單。離開時自動調暗/鎖定是 Pro 功能,白名單本身免費版也能用。免費版沒有離開模式,PowerDoze 不會讓你的螢幕變暗或鎖定。這篇的做法適用於有開啟離開模式的 Pro 使用者。

如果你不想玩到一半螢幕就被關掉、還要手動叫醒:全螢幕玩時 PowerDoze 會自動先暫停,視窗化玩的遊戲加進白名單,在前景執行時就不會被誤判為離開。

從 Microsoft Store 取得 PowerDoze從 Microsoft Store 取得 PowerDoze

Nisonxi

我是 Nisonxi,PowerDoze 的開發者。我會做這個工具,是因為自己的 Windows 桌機整天閒置卻幾乎滿功率運轉,市面上找不到能自動判斷情況並切換的工具。這個部落格是這段過程的筆記。

關於作者與 PowerDoze →