获取用户选中
百度翻译的桌面端软件可以做到滑译,即鼠标选中内容就在下方进行翻译,生成翻译框很好搞,electron支持窗口定位,但是怎么监听鼠标选中内容和获取内容呢,electron没有这种功能
最终发现用一个hack方法来实现这一功能:
- 监听用户按下鼠标、松开鼠标事件
- 调用系统命令,复制选中内容到剪贴版命令(如windows的ctrl+v),electron再获取剪贴板
- 调用系统命令保存前,先保存用户之前的粘贴内容,最后恢复原先的粘贴内容,从而达到用户无感知的效果
综上,我们需要能监听系统鼠标事件、能调用系统复制功能的npm包,最好是多平台支持(windows、mac、linux)
robot.js
js
const robot = require('robotjs');
// 监听鼠标按下事件
robot.mouseClick(function(mouseStatus) {
console.log('Mouse clicked at x:' + mouseStatus.x + ' y:' + mouseStatus.y);
});
// 监听鼠标抬起事件
robot.mouseToggle("up", "left");
// 复制文本到剪贴板
robot.keyTap("c", "control");
const robot = require('robotjs');
// 监听鼠标按下事件
robot.mouseClick(function(mouseStatus) {
console.log('Mouse clicked at x:' + mouseStatus.x + ' y:' + mouseStatus.y);
});
// 监听鼠标抬起事件
robot.mouseToggle("up", "left");
// 复制文本到剪贴板
robot.keyTap("c", "control");