#import <Cocoa/Cocoa.h> #import <Carbon/Carbon.h> #import <lauxlib.h> static int cursor_warpToPoint(lua_State* L){ int x = luaL_checknumber(L, 1); int y = luaL_checknumber(L, 2); NSPoint target = CGPointMake(roundf(x), roundf(y)); CGWarpMouseCursorPosition(target); return 1; } static int cursor_position(lua_State* L){ NSPoint mouseLoc; mouseLoc = [NSEvent mouseLocation]; lua_newtable(L); lua_pushnumber(L, mouseLoc.x); lua_setfield(L, -2, "x"); lua_pushnumber(L, mouseLoc.y); lua_setfield(L, -2, "y"); return 1; } static const luaL_Reg cursorlib[] = { {"warptopoint", cursor_warpToPoint}, {"position", cursor_position}, {} // necessary sentinel }; int luaopen_mjolnir_jstevenson_cursor_internal(lua_State* L) { luaL_newlib(L, cursorlib); return 1; }