簡體   English   中英

輸入事件(鍵盤/鼠標)的NSEvent時間戳的准確性?

[英]Accuracy of NSEvent timestamp for input events (keyboard/mouse)?

在Cocoa中,NSEvents具有timestamp屬性,該屬性返回一個timeinterval,表示“事件發生的時間,自系統啟動以來以秒為單位”。 我正在編寫一個應用程序,正是在用戶按下按鍵時才需要此信息。 但是我擔心時間戳可能不夠准確。 Timeinterval本身具有亞毫秒級的精度,這非常好。 是否有任何文檔表明亞毫秒精度是否用於為代表鍵盤和鼠標輸入的NSEvent提供准確的時間戳?

如果我不得不猜測蘋果的實現方式,我希望NSEvent的時間戳可以在硬件中斷后立即生成,這真是太好了。 但是,我也可以想象有一個系統會輪詢鍵盤/鼠標輸入,並且僅在下一個輪詢間隔到來並讀取輸入時才填充timestamp字段。

非常感謝您的見解。

您可能會發現Apple的Cocoa事件處理指南:事件體系結構文檔非常有用。 從那:

窗口服務器在將事件分發給應用程序之前,會以各種方式對其進行處理。 它給它加上時間戳,並用相關的窗口和進程端口對其進行注釋,並且還可能執行其他任務。

這似乎表明駐留在內核和應用程序層之間的Window Server應用了時間戳記……盡管這樣做可能會讀取較低級別生成的元數據。

我認為更好地理解這一點的最佳方法是編寫一個應用程序,該應用程序記錄按鍵按下/按下事件的時間戳,並在相鄰事件中查找精確匹配項。 如果您連續看到幾個具有(幾乎)相同的時間戳記的事件,則很有可能在時間戳記之前,它們已在某個緩沖區中排隊。 如果相鄰事件之間有足夠的間隔,則很有可能被標記得更靠近硬件事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM