{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "ko",
  "slug": "openmouse",
  "url": "https://tesign.com/item/openmouse/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/openmouse/",
      "json": "https://tesign.com/item/openmouse/index.json",
      "markdown": "https://tesign.com/item/openmouse/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/openmouse/",
      "json": "https://tesign.com/en/item/openmouse/index.json",
      "markdown": "https://tesign.com/en/item/openmouse/index.md"
    }
  },
  "name": "OpenMouse",
  "use_label": "게이머용 브라우저 마우스 설정",
  "one_liner": "게이밍 마우스의 DPI·폴링 레이트를 브랜드 드라이버 설치 없이 브라우저(WebHID)에서 바꾸는 제어판",
  "text": {
    "why": "브랜드마다 따로 깔던 설정 앱 대신, 브라우저의 WebHID로 마우스에 직접 패킷을 보내 정보를 읽고 DPI·폴링 레이트 같은 설정을 바꾼다. 패킷 코덱과 드라이버는 별도 라이브러리 @openmouse/protocol에 있고, 그 README에는 Razer·Logitech·Pulsar·Lamzu·Glorious·Finalmouse·SteelSeries Rival 3 등 32개 브랜드/프로토콜 진입점이 실려 있다. 단, 프로토콜이 구현됐다는 것과 그 브랜드의 모든 기종이 동작한다는 것은 다르며, 실기기 검증 여부는 카탈로그의 verified 필드로 구분한다고 명시한다.",
    "take": "브랜드마다 깔던 설정 앱을 한 웹페이지로 대체하려는 시도인데, '프로토콜 구현됨'과 '실기기 검증됨'이 다른 말이라는 점을 README가 스스로 못 박는다.",
    "build": [
      "@openmouse/protocol의 코덱 진입점은 WebHID 없이도 쓸 수 있어 Node.js 기반 마우스 설정 CLI나 리눅스용 자체 설정 도구를 만들 수 있다. AGPL-3.0이라 서비스 형태로 배포해도 소스 공개 의무가 있다."
    ],
    "who": [
      {
        "role": "여러 브랜드 마우스를 쓰는 게이머",
        "situation": "설정 앱 여러 개 대신 한 페이지"
      },
      {
        "role": "리눅스 사용자",
        "situation": "공식 앱이 없는 환경에서 DPI·폴링 변경(hidraw udev 규칙 필요)"
      },
      {
        "role": "마우스 프로토콜을 리버스 엔지니어링하는 개발자",
        "situation": "브랜드별 코덱 라이브러리에 기여"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "# 바로 쓰기: 브라우저로 https://openmouse.app 접속 후 마우스 연결"
      },
      {
        "command": false,
        "text": "npm install    # 로컬 개발"
      },
      {
        "command": false,
        "text": "npm run dev"
      },
      {
        "command": false,
        "text": "# 리눅스에서 'Failed to open the device'가 나오면 README의 udev 예시(VXE R1 SE+용 70-openmouse-vxe.rules)를 lsusb로 확인한 자기 기기 ID로 고쳐 넣은 뒤:"
      },
      {
        "command": false,
        "text": "sudo udevadm control --reload-rules"
      }
    ],
    "caveat": [
      "AGPL-3.0 — 네트워크로 제공해도 소스 공개 의무",
      "WebHID 기반이며 README는 Chromium 선택창 기준으로 설명; 다른 브라우저 지원 여부 [확인 필요]. 리눅스는 hidraw 권한 udev 규칙 필요",
      "지원 기기 목록은 별도 mouse-protocol 저장소에 있고, 브랜드 프로토콜 구현이 그 브랜드 전 기종 지원을 뜻하진 않음(verified 필드 확인); GitHub 릴리스 없음(웹 배포)"
    ]
  },
  "cta": {
    "type": "try",
    "label": "TRY",
    "url": "https://openmouse.app/"
  },
  "ready": "browser",
  "categories": [
    "hardware",
    "games"
  ],
  "categories_confirmed": true,
  "tags": [
    "webhid",
    "gaming-mouse",
    "dpi",
    "polling-rate",
    "typescript",
    "agpl"
  ],
  "platform": [
    "web"
  ],
  "license": {
    "spdx": "AGPL-3.0",
    "scope": "copyleft",
    "scope_text": "사용·수정은 자유. 배포는 물론 네트워크 서비스로 제공해도 소스 공개.",
    "url": "https://spdx.org/licenses/AGPL-3.0.html",
    "note": null,
    "open_source": true
  },
  "language": "TypeScript",
  "source_urls": {
    "canonical": "https://openmouse.app/",
    "github": "https://github.com/openmouse-project/openmouse",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/openmouse-project/openmouse",
        "posted_at": "2026-09-04T17:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 1931,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:04.368Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": null,
    "star_delta_30d": 102,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      36,
      60,
      6,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다."
  },
  "ranks": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "all_time": null,
    "rising": {
      "24h": null,
      "7d": null,
      "30d": null
    },
    "categories": [
      {
        "category": "games",
        "label": "게임",
        "rank": 7
      },
      {
        "category": "hardware",
        "label": "하드웨어",
        "rank": 3
      }
    ]
  },
  "activity": {
    "pushed_at": "2026-09-15T05:40:34.000Z",
    "owner_type": "Organization",
    "open_issues": 24,
    "contributors": 36,
    "releases_count": 0,
    "latest_release": null,
    "checked_at": "2026-09-15T19:35:04.368Z",
    "core_checked_at": "2026-09-15T19:35:04.368Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "과거 기록",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/openmouse-b9bd418845.png",
    "cover": "https://tesign.com/img/openmouse-b9bd418845.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/openmouse-b9bd418845.png",
      "https://tesign.com/img/openmouse-d2c51ee4d9.png"
    ],
    "alt": "OpenMouse 웹 제어판 — 연결된 마우스의 정보와 DPI·폴링 레이트 설정 항목이 표시된 화면",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:39:32.403Z",
    "source_created_at": "2026-07-27T03:22:31.000Z",
    "discovery_hours": 1158.2837230555556,
    "launch_signal_at": "2026-09-04T17:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.599Z",
    "first_published_at": "2026-09-14T19:27:43.743Z",
    "updated_at": "2026-09-15T04:36:56.942Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "이 파일은 tesign.com 항목 페이지와 같은 빌드에서 같은 데이터로 만들어졌습니다. 소개 글은 편집자가 쓴 것이고, 숫자는 저장된 관측값입니다.",
    "JSON의 null은 관측하지 않았다는 뜻입니다 — 0이 아닙니다. 마크다운에서는 [확인 필요]로 적습니다.",
    "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다.",
    "과거 데이터를 되짚어 채운 항목입니다. 라이브 발견이 아닙니다.",
    "요약이며 법적 조언이 아닙니다."
  ]
}
