diff --git a/lib/mouse.class.ts b/lib/mouse.class.ts index 6acea133..9f773512 100644 --- a/lib/mouse.class.ts +++ b/lib/mouse.class.ts @@ -221,4 +221,34 @@ export class MouseClass { } }); } + + /** + * {@link click} clicks a mouse button + * @param btn The {@link Button} to click + */ + public async click(btn: Button): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.providerRegistry.getMouse().click(btn); + resolve(this); + } catch (e) { + reject(e); + } + }); + } + + /** + * {@link doubleClick} performs a double click on a mouse button + * @param btn The {@link Button} to click + */ + public async doubleClick(btn: Button): Promise { + return new Promise(async (resolve, reject) => { + try { + await this.providerRegistry.getMouse().doubleClick(btn); + resolve(this); + } catch (e) { + reject(e); + } + }); + } } diff --git a/lib/provider/mouse-provider.interface.ts b/lib/provider/mouse-provider.interface.ts index bc58d6dd..7bad08af 100644 --- a/lib/provider/mouse-provider.interface.ts +++ b/lib/provider/mouse-provider.interface.ts @@ -26,6 +26,20 @@ export interface MouseProviderInterface { */ currentMousePosition(): Promise; + /** + * click should allow to perform a single click via OS event + * + * @param btn The {@link Button} to click + */ + click(btn: Button): Promise; + + /** + * doubleClick should allow to perform a double click via OS event + * + * @param btn The {@link Button} to click + */ + doubleClick(btn: Button): Promise; + /** * leftClick should allow to perform a left click via OS event */ diff --git a/lib/provider/native/libnut-mouse.class.ts b/lib/provider/native/libnut-mouse.class.ts index c47bdbea..11ff2027 100644 --- a/lib/provider/native/libnut-mouse.class.ts +++ b/lib/provider/native/libnut-mouse.class.ts @@ -1,7 +1,7 @@ import libnut = require("@nut-tree/libnut"); -import { Button } from "../../button.enum"; -import { Point } from "../../point.class"; -import { MouseProviderInterface } from "../mouse-provider.interface"; +import {Button} from "../../button.enum"; +import {Point} from "../../point.class"; +import {MouseProviderInterface} from "../mouse-provider.interface"; export default class MouseAction implements MouseProviderInterface { public static buttonLookup(btn: Button): any { @@ -41,10 +41,10 @@ export default class MouseAction implements MouseProviderInterface { })); } - public leftClick(): Promise { + public click(btn: Button): Promise { return new Promise(((resolve, reject) => { try { - libnut.mouseClick(MouseAction.buttonLookup(Button.LEFT)); + libnut.mouseClick(MouseAction.buttonLookup(btn)); resolve(); } catch (e) { reject(e); @@ -52,10 +52,10 @@ export default class MouseAction implements MouseProviderInterface { })); } - public rightClick(): Promise { + public doubleClick(btn: Button): Promise { return new Promise(((resolve, reject) => { try { - libnut.mouseClick(MouseAction.buttonLookup(Button.RIGHT)); + libnut.mouseClick(MouseAction.buttonLookup(btn), true); resolve(); } catch (e) { reject(e); @@ -63,15 +63,16 @@ export default class MouseAction implements MouseProviderInterface { })); } + public leftClick(): Promise { + return this.click(Button.LEFT); + } + + public rightClick(): Promise { + return this.click(Button.RIGHT); + } + public middleClick(): Promise { - return new Promise(((resolve, reject) => { - try { - libnut.mouseClick(MouseAction.buttonLookup(Button.MIDDLE)); - resolve(); - } catch (e) { - reject(e); - } - })); + return this.click(Button.MIDDLE); } public pressButton(btn: Button): Promise {