Lua能否发送扩展功能键,例 F13-F24?

我尝试用kb.stroke("F13");发送F13,但它不起作用,对于F12及以下的内容均表现良好。

我正在尝试在Unified Remote应用程序的自定义远程中使用它,所以目前唯一的解决方法是使用os.start运行一个执行键盘发送的ahk脚本,但这是一种非常缓慢的方法。

任何帮助将不胜感激。

点赞
用户1847592
用户1847592
local ffi = require"ffi"

ffi.cdef[[
typedef struct {
   uintptr_t type;
   uint16_t  wVk;
   uint16_t  wScan;
   uint32_t  dwFlags;
   uint32_t  time;
   uintptr_t dwExtraInfo;
   uint32_t  x[2];
} INP;
int SendInput(int, void*, int);
]]

local inp_t = ffi.typeof"INP[2]"

local function PressAndReleaseKey(vkey)
   local inp = inp_t()
   for j = 0, 1 do
      inp[j].type = 1
      inp[j].wVk = vkey
      inp[j].dwFlags = j * 2
   end
   ffi.C.SendInput(2, inp, ffi.sizeof"INP")
end

PressAndReleaseKey(0x57)  -- W
PressAndReleaseKey(0x7C)  -- F13

VKeys:

https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes

2020-10-22 00:31:35