# finger-mouse
**Repository Path**: mirrors_theajack/finger-mouse
## Basic Information
- **Project Name**: finger-mouse
- **Description**: Mouse control with hand gestures
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-08-03
- **Last Updated**: 2026-03-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# [指尖鼠标](https://github.com/theajack/finger-mouse)
指尖鼠标是一个基于手势识别的鼠标,通过手指的行为来控制鼠标的移动和点击。同时提供底层识别的手指关节事件,可以自定义交互行为。
[在线Demo](https://theajack.github.io/finger-mouse?cn) | [English](https://github.com/theajack/finger-mouse/blob/master/README.md)
## 快速使用
### npm 使用
```plain
npm i finger-mouse
```
```js
import { initFingerMouse } from 'finger-mouse';
initFingerMouse();
```
### CDN 使用
```html
```
## init 参数
```js
export declare function initFingerMouse(options?: {
showOriginPointer?: boolean; // 是否显示鼠标真实指针,默认为false
showPanel?: boolean; // 是否显示性能面板,默认为false
cdnMirror?: string; // CDN镜像地址
showCamera?: boolean; // 是否显示摄像头画面,默认为false
showHandSkeleton?: boolean; // 是否显示手的骨架绘制画面,默认为true
fingerColor?: string; // 手指颜色,默认为 Red
lineColor?: string; // 节点之间的连接线颜色,默认为 White
touchedFingerColor?: string; // 手指触摸时的颜色,默认为 Green
whichHand?: "left" | "right" | "auto"; // 使用哪个手操作,auto表示使用先识别到的手
touchThreshold?: number; // 判断手指触摸到距离的阈值,默认为25px
showPointer?: boolean; // 是否显示模拟的鼠标指针,默认为true
disableDefaultAction?: boolean; // 是否禁用默认模拟的鼠标操作行为,默认为false
onRenderReady?: () => void; // 渲染准备完成的回调函数
onHandMove?: (x: number, y: number) => void; // 大拇指移动的回调函数
onFingerTouch?: (finger: IFinger, touched: boolean) => void; // 大拇指与四个手指触摸到的回到函数
onOriginData?: (data: any) => void; // 手掌原始数据回调函数
onMouseDown?: (e: IMouseEvent) => void; // 默认鼠标行为下的模拟鼠标点击事件
onMouseUp?: (e: IMouseEvent) => void; // 默认鼠标行为下的模拟鼠标松开事件
onMouseMove?: (e: IMouseMoveEvent) => void; // 默认鼠标行为下的模拟鼠标移动事件
}): Promise;
```
### CDN 镜像
FingerMouse中使用的模型相关资源是使用的第三方CDN,默认使用的是 jsDelivr 中国镜像,你可以通过 CDM_MIRROR 来使用内置的其他镜像或自定义镜像。
```js
import { CDM_MIRROR } from 'finger-mouse';
```
## API
### FingerClient
```js
const client = await initFingerMouse();
await client.ready; // 等待渲染准备完成,等价于 onRenderReady
client.isRenderReady; // 是否渲染准备完成, boolean
client.pointer; // 获取模拟的鼠标指针Dom元素
client.isFingerTouched('index'); // 获取某根手指是否与大拇指触碰到 // 'index' | 'middle' | 'ring' | 'pinky';
client.destroy(); // 销毁实例,销毁后无法再次使用
```
### Mouse
```js
const client = await initFingerMouse();
await client.ready; // 等待渲染准备完成,等价于 onRenderReady
const mouse = client.mouse;
client.clientX; // 模拟的鼠标指针的X坐标
client.clientY; // 模拟的鼠标指针的Y坐标
```