0.0.16-beta • Published 5 months ago

rubick-native v0.0.16-beta

Weekly downloads
-
License
-
Repository
-
Last release
5 months ago

Rubick Native

封装常用跨平台能力

// 安装
pnpm add rubick-native

贡献

  1. Fork & Clone 本项目
  2. 贡献 Rust 部分: 进入 addon 文件下, 基于 napi 教程进行开发; 使用 pnpm build 命令打包生成 npm 包
  3. 贡献 JavaScript 部分: 在根目录下进行开发, 通过 import { func } from "../addon" 调用 Rust 函数
  4. 提起 PR

API

1. Keyborad & Mouse ✅

  1. mouseClick: 鼠标点击
  2. mouseDown: 鼠标按下
  3. mouseUp: 鼠标抬起
  4. mouseLocaion: 获取鼠标位置
出参 eg
{ x: 485, y: 449 }
  1. mouseMove: 鼠标移动
  2. mouseScrollX: 鼠标滚轮左右滑动(正值向右,负值向左)
  3. mouseScrollY: 鼠标滚轮上下滑动(正值向下,负值向上)
  4. sendKeyboardSimulation: 模拟键盘输入
入参 eg
// - 为按下, - 为抬起;所有可用键 https://github.com/enigo-rs/enigo/blob/master/src/keycodes.rs
 {+CTRL}a{-CTRL}{+SHIFT}Hello World{-SHIFT}
  1. onInputEvent: 键鼠事件监听
入参 eg
(event: MouseKeyBoardEvent) => void;
  • callback: function 监听输入事件的函数
event object eg
{
  "time": { "secs_since_epoch": 1695999163, "nanos_since_epoch": 631148700 }, // 触发时间
  "name": "a", // 输入内容
  "event": { 
    "type":"KeyPress", // 事件类型
    "value": "KeyA" // 事件值
  } 
}
  1. grabInputEvent 键鼠事件监听&拦截

比 onInputEvent 多了拦截键鼠事件的功能,但是在 MacOS 下需要被授予 Accessibility 权限此 API 才能工作,故无拦截需求建议使用 onInputEvent

入参 eg
(event: MouseKeyBoardEvent) => boolean;
  • callback: function 监听输入事件的函数, 返回是否将事件发送给系统

2. Clipboard ✅

可以获取剪贴板中复制的内容:

getClipboardContent()

出参 eg
// type: file
{
  type: 'file',
  content: [
    'C:/Download/test.txt',
    'C:/Download/mywork',
  ]
}
// type: text
{
  type: 'text',
  content: 'hello world'
}
  • type: 'file' | 'text'
  • content: Array | string

3. 获取系统已安装的 app 🕑(Mac/Linux 未支持)

原理:解析系统中所有存放快捷方式的文件夹,解析快捷方式生成应用列表(win)

getSystemApp()

获取系统安装的 APP 列表

入参 eg
  • callback: (app: App) => void | Promise 用于接收应用信息的回调函数
  • extraPath: string 额外需要检索的文件夹

App object:

{
  "name": "TIM",
  "description": null,
  "execPath": "C:\\Program Files (x86)\\Tencent\\TIM\\Bin\\QQScLauncher.exe",
  "shortCutPath": "C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\腾讯软件\\TIM\\TIM.lnk",
  "workingDir": "C:\\Program Files (x86)\\Tencent\\TIM\\Bin"
}
  • name: 应用的名称
  • description: 应用详情
  • execPath: 应用的路径
  • shortCutPath: 应用快捷方式地址
  • workingDir: 应用工作目录

getAppIcon()

获取 APP 的图标

入参 eg
  • path: string windows 平台下填写 exe 文件地址;
出参 eg
  • img: string 图标的 base64 编码

4. 获取当前活跃窗口 ✅

  1. getActiveWin: 获取当前活跃窗口
  2. getOpenWin: 获取所有打开的窗口信息
出参 eg
{
  "id": 13200, // 进程 pid
  "os": "win32", // 运行平台
  "title": "test.ts - rubick-native - Visual Studio Code", // 窗口标题
  "position": { "x": -7, "y": -7, "width": 1550, "height": 830 }, // 窗口位置大小
  "info": {
    "processId": 13200, // 进程 pid
    "path": "C:\\Program Files\\Microsoft VS Code\\Code.exe", // 进程地址
    "name": "Visual Studio Code", // 进程名称
    "execName": "Code" // 进程名称
  },
  "usage": { "memory": 111030272 }, // 进程内存占用
  "url": "" // 进程关联 URL
}

5. 获取 finder(macos) 或者 explorer(win) 文件夹当前打开的路径 🕑(Linux 未支持)

  1. getFolderOpenPath
出参 eg
"C://Download/mywork";
  • path: string 返回打开的文件夹路径
0.0.16-beta

5 months ago

0.0.11

7 months ago

0.0.12

7 months ago

0.0.13

7 months ago

0.0.14

7 months ago

0.0.15-beta

7 months ago

0.0.11-beta

7 months ago

0.0.12-beta

7 months ago

0.0.13-beta

7 months ago

0.0.10-beta

7 months ago

0.0.9

7 months ago

0.0.9-beta

7 months ago

0.0.8

7 months ago

0.0.8-beta

7 months ago

0.0.6-beta

7 months ago

0.0.1-beta

7 months ago

0.0.0

7 months ago