fixed comment into code

This commit is contained in:
2026-08-09 20:02:23 +05:00
parent 778fc1034b
commit 7e4e569d53
34 changed files with 332 additions and 306 deletions
+12 -11
View File
@@ -5,23 +5,24 @@ using CursorLang.Models;
namespace CursorLang.Services;
/// <summary>
/// Настройки слежения за раскладкой.
/// The settings of layout tracking.
/// </summary>
public sealed class KeyboardLayoutOptions
{
/// <summary>Как часто проверять раскладку активного окна.</summary>
/// <summary>How often to check the layout of the active window.</summary>
public TimeSpan PollInterval { get; init; } = TimeSpan.FromMilliseconds(150);
}
/// <summary>
/// Опрашивает активное окно по таймеру.
/// Polls the active window on a timer.
/// </summary>
/// <remarks>
/// Опрос выбран не от простоты: событийных способов узнать о смене раскладки
/// в чужом процессе из managed-кода нет. HSHELL_LANGUAGE от RegisterShellHookWindow
/// в Windows 10/11 не приходит, а уведомления TSF (ITfLanguageProfileNotifySink)
/// сообщают только о смене языка внутри своего процесса — оба варианта проверены
/// и не сработали. Один тик — три вызова Win32, читающих данные из памяти ядра.
/// Polling was chosen not for simplicity: there is no event-based way to learn about
/// a layout change in another process from managed code. HSHELL_LANGUAGE from
/// RegisterShellHookWindow does not arrive on Windows 10/11, and TSF notifications
/// (ITfLanguageProfileNotifySink) report only language changes inside our own process
/// — both options were tried and did not work. One tick is three Win32 calls reading
/// data from kernel memory.
/// </remarks>
public sealed class KeyboardLayoutService : IKeyboardLayoutService, IDisposable
{
@@ -75,9 +76,9 @@ public sealed class KeyboardLayoutService : IKeyboardLayoutService, IDisposable
_lastLocaleId = localeId;
// Переход в другое приложение со своей раскладкой — не то же самое,
// что переключение раскладки пользователем, и подписчики вправе
// реагировать на эти случаи по-разному
// Moving to another application with a layout of its own is not the same as
// the user switching the layout, and the subscribers are free to react to
// these cases differently
LayoutChangeReason reason = appSwitched
? LayoutChangeReason.ApplicationSwitched
: LayoutChangeReason.UserSwitched;