feat: Logitech K370 keyboard and M240 mouse Bluetooth monitor & auto-pairer with Topmost PIN alert
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Logitech Bluetooth Monitor (LOGI K370 B & LOGI M240 B)
|
||||
|
||||
Windows 환경에서 로지텍 블루투스 키보드(**LOGI K370 B**)와 마우스(**LOGI M240 B**)의 연결 상태를 실시간 모니터링하고, 페어링 모드 진입 시 자동 페어링 및 상시 대기/재연결을 관리하는 고속 네이티브 백그라운드 모니터 프로그램입니다.
|
||||
|
||||
---
|
||||
|
||||
## 주요 기능
|
||||
|
||||
1. **멀티 디바이스 실시간 감시 및 자동 복구**:
|
||||
- **LOGI K370 B** (키보드) & **LOGI M240 B** (마우스)의 연결 상태를 2초 주기로 헬스체크 및 이벤트 기반 실시간 감지.
|
||||
- 키보드/마우스 전원을 끄거나 채널을 돌려 연결이 해제되면 즉시 `대기 모드`로 복귀하여 재연결 또는 새 페어링을 대기합니다.
|
||||
2. **공식 WinRT DeviceWatcher + Passive RF 무선 전파 하이브리드 감지**:
|
||||
- Windows 설정의 '장치 추가' 창과 동일한 공식 WinRT `DeviceWatcher` API로 디바이스 식별.
|
||||
- `BluetoothLEAdvertisementWatcher`의 **Passive 스캔 모드**를 사용하여 무선 전파를 송출하지 않고 청취만 수행하므로, 블루투스 마우스나 타 기기 연결에 간섭(지연/끊김)을 0%로 차단합니다.
|
||||
- 키보드와 마우스가 모두 연결된 정상 동작 중에는 스캐너 자체를 **완전 정지(Stop)**시켜 블루투스 대역폭을 100% 확보합니다.
|
||||
3. **키보드 PIN 감지 시 자동 최상위(Topmost) 창 팝업**:
|
||||
- 사용자가 다른 프로그램을 사용 중이거나 콘솔 창이 최소화되어 있어도, 키보드 신호 및 6자리 PIN 번호 감지 즉시 창을 **원래 크기로 복원하고 화면 최상위(`HWND_TOPMOST`)로 자동 팝업**합니다.
|
||||
- 키보드에서 PIN 번호 입력 및 Enter 완료 시 3초 후 최상위 고정을 자동 해제하여 원활한 작업 환경을 보장합니다.
|
||||
4. **마우스 완전 무인 자동 페어링**:
|
||||
- 마우스(M240)는 PIN 번호 입력이 필요 없는 `ConfirmOnly` 규격으로, 페어링 버튼 활성화 시 1초 만에 시스템 레벨에서 무인 자동 승인되어 즉시 연결됩니다.
|
||||
|
||||
---
|
||||
|
||||
## 구성 파일
|
||||
|
||||
- `main.go` / `logi_k370_monitor.exe`: Win32 Topmost 제어, 로그 출력, 백그라운드 프로세스 생명주기를 관리하는 Go 메인 실행 파일.
|
||||
- `BlePairer.cs` / `BlePairer.exe`: Windows.Devices.Bluetooth / WinRT 네이티브 API를 활용한 블루투스 LE 모니터 및 페어링 C# 백엔드 엔진.
|
||||
- `go.mod`: Go 모듈 정의 파일.
|
||||
|
||||
---
|
||||
|
||||
## 빌드 방법
|
||||
|
||||
### 1. C# 엔진 빌드 (BlePairer.exe)
|
||||
Windows 기본 .NET Framework 컴파일러(`csc.exe`)를 사용하여 빌드합니다:
|
||||
|
||||
```powershell
|
||||
& "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe" `
|
||||
/r:"C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Runtime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.dll" `
|
||||
/r:"C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Runtime.InteropServices.WindowsRuntime\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Runtime.InteropServices.WindowsRuntime.dll" `
|
||||
/r:"C:\Windows\System32\WinMetadata\Windows.Devices.winmd" `
|
||||
/r:"C:\Windows\System32\WinMetadata\Windows.Foundation.winmd" `
|
||||
/r:System.Runtime.WindowsRuntime.dll `
|
||||
/out:BlePairer.exe BlePairer.cs
|
||||
```
|
||||
|
||||
### 2. Go 모니터 빌드 (logi_k370_monitor.exe)
|
||||
```powershell
|
||||
go build -o logi_k370_monitor.exe main.go
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 실행 방법
|
||||
|
||||
```powershell
|
||||
.\logi_k370_monitor.exe
|
||||
```
|
||||
|
||||
- **키보드/마우스 정상 연결 시**:
|
||||
```text
|
||||
[LOGI K370 B] ★ 정상 연결되었습니다 (동작 중)
|
||||
[LOGI M240 B] ★ 정상 연결되었습니다 (동작 중)
|
||||
```
|
||||
- **키보드 페어링 모드(채널 버튼 3초 롱프레스) 시**:
|
||||
창이 화면 맨 앞으로 팝업되며 PIN 번호가 표시됩니다:
|
||||
```text
|
||||
[LOGI K370 B] ★ 키보드 신호 포착! 창을 최상위(Topmost)로 띄웁니다... (d3:c9:dd:64:f1:xx)
|
||||
======================================================
|
||||
★ [LOGI K370 B] 페어링 번호 감지! 키보드에서 [123456] 입력 후 [Enter]를 누르세요!
|
||||
======================================================
|
||||
```
|
||||
- **마우스 페어링 모드(전원/페어링 버튼 활성화) 시**:
|
||||
```text
|
||||
[LOGI M240 B] ★ 마우스 신호 포착! 자동 페어링을 진행합니다... (xx:xx:xx:xx:xx:xx)
|
||||
[LOGI M240 B] ★ 블루투스 페어링 & 연결 완료!
|
||||
```
|
||||
Reference in New Issue
Block a user