Skip to content

leetzzx/cpp

Repository files navigation

本软件为个人项目,功能是录制与播放键盘宏

程序效果

软件效果-使用peek进行录制

需要权限对input设备的读写权力,测试时可以直接把用户添加到input用户组

sudo usermod -a -G input username

编译命令

make kbdcros.out

运行命令

  1. 请先在个人目录下创建macros文件夹mkdir ~/macros,或者把本文件中的macro拷贝到个人目录中,里面有一个实例文件可以使用
  2. ./kbdcros.out -mr -n macroname 此命令会创建一个以macroname为文件名的存储键盘宏的文件存放在macros中,m代表模式,r代表record,s代表simulate,n代表name,退出录制请按ESC
  3. ./kbdcros.out -ms -n macroname 此命令会实时模拟录制的键盘宏,模拟时因为需要单独创建一个虚拟设备,所以需要消耗一些时间,如果有需要可以修改源代码,直接把虚拟文件映射到实体键盘设备文件上,并取消sleep时间,会提高启动速度,两者除一些细微区别以外,使用效果是相同的
  4. ./kbdcros.out -l 列出已经录制好的键盘宏

其他的声明

  1. 需要在用户的目录下创建macros文件夹
  2. 录制文件中的ENTER Release 是正常现象,就常理而言发送一个键的释放事件不会对程序产生任何影响。如有需要可以使用 sleep && ./kbdcros.out -mr -n helloworld 命令进行录制
  3. 因为此处使用一个线程来专门录制键盘宏,其生命周期随着主线程的死亡而死亡,主进程的生命周期使用sleep进行控制,设置了20s的时长,睡眠结束,程序终止,会创建响应的键盘宏文件,但不会写入任何内容
  4. 因为loadkeymap()函数需要的keymap文件是放在本文件夹中的,所以将可执行文件移动到其他地方是运行不了的,或者说会运行出错
  5. 此外,命名后缀为cpp是因为本人缺乏GUI编程,从Web编程的角度来思考各种问题。无法确定QT程序的结构,又因QT以cpp为后缀,为了稳妥起见或者说以后构建QT程序的方便起见,此处采用cpp后缀命名,但使用的是c的语法和功能,使用的各种库也是c的库。
  6. 本人在编写c程序过程中使用的是valgrind程序来进行内存方面的检查,如果需要测试,测试过程中可能会出现内存泄露问题,经过排查,应该是没有对RawLink结构进行合适的free,会出现一次或多次内存泄露问题,属于正常现象,也已经找到源头,不包含语义错误。
  7. 但是对于 “-l" 命令参数,由于编程能力,对于使用的函数不是很熟悉。既会出现内存泄露,又会出现语义错误,不得其解,但不影响使用
  8. 可以在develop.org文件中查看更多信息,里面有我走的一些坑和一些思路,以及出现了哪些错误
  9. 本文档和本程序有改进的可能,但应该承认优化是没有尽头的,到此为止吧,peace

个人邮箱:[email protected]

Releases

No releases published

Packages

No packages published