baitang36 发表于 2023-2-2 09:22:48

【原创】用lsp模拟按键

本帖最后由 baitang36 于 2023-11-8 08:25 编辑

用lsp程序实现的模拟按键。
程序定义了三个函数:syz_keydown(vk)syz_keyup(vk)syz_press (k)
syz_keydown是模拟按下按键
syz_keyup是模拟松开按键
syz_press 是模拟按下立即松开按键
参数vk是按键的ASCII码,是个数字。A就是65,是VK_A
例如,模拟alt_f4,代码是:
(syz_keydown VK_LMENU)
(syz_press vk_f4)
(syz_keyup VK_LMENU)
为了和c++语言的习惯统一,程序中定义了VK_开头的变量,可以直接用变量名,当然也可以用ascii数字。
按键定义如下:

(setq VK_LBUTTON      1      );鼠标左键
(setq VK_RBUTTON      2      );鼠标右键
(setq VK_CANCEL                3      );Ctrl-Break键
(setq VK_MBUTTON      4      );鼠标中键
(setq VK_BACK      8      );Backspace键
(setq VK_TAB      9      );Tab键
(setq VK_CLEAR      12      );Clear键
(setq VK_RETURN                13      );Enter键
(setq VK_SHIFT                16      );Shift键
(setq VK_CONTROL      17      );Ctrl键
(setq VK_MENU      18      );Alt键
(setq VK_PAUSE      19      ); Pause键
(setq VK_CAPITAL      20      );Caps Lock键
(setq VK_ESCAPE                27);Esc键
(setq VK_SPACE      32      );Space键
(setq VK_PRIOR      33      ); page Up键
(setq VK_NEXT      34      ); Page Down键
(setq VK_END      35      );End键
(setq VK_HOME      36      );Home键
(setq VK_LEFT      37      );←键
(setq VK_UP      38      );↑键
(setq VK_RIGHT         39      );→键
(setq VK_DOWN         40      );↓键
(setq VK_SELECT      41      );Select键
(setq VK_PRINT      42      ); Print键
(setq VK_EXECUTE      43      );Execute键
(setq VK_SNAPSHOT      44      );44      Print Screen键
(setq VK_INSERT                45      );Ins键
(setq VK_DELETE                46      );Del键
(setq VK_HELP                47      );Help键
(setq VK_0                48      );0键
(setq VK_1                49      );1键
(setq VK_2                50      );2键
(setq VK_3                51      );3键
(setq VK_4                52      );4键
(setq VK_5                53      );5键
(setq VK_6                54      );6键
(setq VK_7                55      );7键
(setq VK_8                56      );8键
(setq VK_9                57      );9键
(setq VK_A                65      );A键
(setq VK_B                66      );B键
(setq VK_C                67      );C键
(setq VK_D                68      );D键
(setq VK_E      69      );E键
(setq VK_F            70      );F键
(setq VK_G      71      );G键
(setq VK_H      72      );H键
(setq VK_I         73      );I键
(setq VK_J         74      );J键
(setq VK_K      75      );K键
(setq VK_L            76      );L键
(setq VK_M      77      );M键
(setq VK_N      78      );N键
(setq VK_O      79      );O键
(setq VK_P             80      ); P键
(setq VK_Q      81      );Q键
(setq VK_R      82      );R键
(setq VK_S         83      );S键
(setq VK_T      84      );T键
(setq VK_U      85      );U键
(setq VK_V      86      );V键
(setq VK_W      87      );W键
(setq VK_X      88      );X键
(setq VK_Y      89      );Y键
(setq VK_Z      90      );Z键
(setq VK_LWIN      91      );左Windows键
(setq VK_RWIN      92      );右Windows键
(setq VK_APPS      93      );应用程序键
(setq VK_SLEEP      95      );休眠键
(setq VK_NUMPAD0      96      );小数字键盘0键
(setq VK_NUMPAD1      97      );小数字键盘1键
(setq VK_NUMPAD2      98      );小数字键盘2键
(setq VK_NUMPAD3      99      );小数字键盘3键
(setq VK_NUMPAD4      100      );小数字键盘4键
(setq VK_NUMPAD5      101      );小数字键盘5键
(setq VK_NUMPAD6      102      );小数字键盘6键
(setq VK_NUMPAD7      103      );小数字键盘7键
(setq VK_NUMPAD8      104      );小数字键盘8键
(setq VK_NUMPAD9      105      );小数字键盘9键
(setq VK_MULTIPLY      106      );乘号键
(setq VK_ADD                107      );加号键
(setq VK_SEPARATOR      108      );分割键
(setq VK_SUBSTRACT      109      );减号键
(setq VK_DECIMAL      110      );小数点键
(setq VK_DIVIDE          111      );除号键
(setq VK_F1      112      );F1键
(setq VK_F2      113      );F2键
(setq VK_F3      114      );F3键
(setq VK_F4      115      );F4键
(setq VK_F5      116      );F5键
(setq VK_F6      117      );F6键
(setq VK_F7      118      );F7键
(setq VK_F8      119      );F8键
(setq VK_F9      120      );F9键
(setq VK_F10      121      );F10键
(setq VK_F11      122      );F11键
(setq VK_F12      123      );F12键
(setq VK_NUMLOCK            144      );Num Lock键
(setq VK_SCROLL                145      );Scroll Lock键
(setq VK_LSHIFT                160      );左Shift键
(setq VK_RSHIFT                161      );右Shift键
(setq VK_LCONTROL                162);左Ctrl键
(setq VK_RCONTROL                163);右Ctrl键
(setq VK_LMENU                164      );左Alt键
(setq VK_RMENU                165      );右Alt键




用程序实现对键盘的控制,用lsp调用快捷键。
至于用途吗,看你的想象力了。比如控制输入法。
甚至还可以用它来做个游戏外挂。

baitang36 发表于 2023-2-2 14:02:35

没币的朋友可以在这里下载

gwar 发表于 2023-10-23 15:30:31

666666666,必须下载一个

baitang36 发表于 2023-10-20 10:11:57

aws 发表于 2023-3-20 14:57
我也是想到做成输入法,控制开启大写就行了,但是,不知道如何去自动运行,怎么识别,大写是否开启的状态

看这里 http://bbs.mjtd.com/thread-188759-1-1.html

aws 发表于 2023-3-20 14:57:07

我也是想到做成输入法,控制开启大写就行了,但是,不知道如何去自动运行,怎么识别,大写是否开启的状态

chixun99 发表于 2023-2-11 14:38:04

必须收藏,这么完整和整齐列举了所需的按键,厉害。

alexmai 发表于 2023-2-11 08:29:51

游戏挂机时:
时间停顿,或者延迟20秒再执行下个函数,lsp 应该怎样写?

baitang36 发表于 2023-2-3 14:56:57

yaojing38 发表于 2023-2-3 13:48
请问是加载插件,直接调用 (syz_press VK_INSERT) 就可以??新手,,呵呵!

是的,就是这样

海盗曹 发表于 2023-2-3 15:26:51

无限扩展可能,想到了按键精灵,感谢大佬分享

baitang36 发表于 2023-2-3 22:20:22

boboxiake 发表于 2023-2-3 18:45
外挂的话,只能开着CAD玩游戏吗

看起来像是在画图,其实是在挖矿

cq4920 发表于 2023-2-10 01:41:29

感觉这个东西是不是可以和grread配合?
我有一个悬浮图标,鼠标点击它,想到得到执行效果的是单击空格!
这样在我运行lisp程序的过程中,用鼠标点击 悬浮图标 等于 单击空格,然后用grread来获取空壳的按键值,lisp命令会继续执行,而不被打断!

bonny 发表于 2023-2-2 09:41:15

:victory::victory::victory::victory::victory:

paulpipi 发表于 2023-2-2 10:13:56

牛人,支持你!

magicheno 发表于 2023-2-2 10:34:20

大佬太牛了

cqu20104225 发表于 2023-2-2 11:16:25

666666666,必须下载一个

czb203 发表于 2023-2-2 11:29:13

大佬太牛了

guosheyang 发表于 2023-2-2 11:34:43

老大这两个键 ctr键和空格键 组合按下如何用呢 谢谢!
(setq VK_SPACE 32 );Space键
(setq VK_LCONTROL 162);左Ctrl键

guosheyang 发表于 2023-2-2 11:38:41

(syz_keydown VK_LMENU)
(syz_press vk_LCONTROL_SPACE)
(syz_keyup VK_LMENU)

guosheyang 发表于 2023-2-2 11:51:12

guosheyang 发表于 2023-2-2 11:38
(syz_keydown VK_LMENU)
(syz_press vk_LCONTROL_SPACE)
(syz_keyup VK_LMENU)

这个不对头啊

陨落 发表于 2023-2-2 12:20:21

这个也太牛了吧,我瞬间都能想到好多可能的用法了
页: [1] 2 3 4 5 6
查看完整版本: 【原创】用lsp模拟按键