精华内容
下载资源
问答
  • 虚拟鼠标应用

    2013-01-01 22:38:16
    虚拟鼠标的实现及虚拟鼠标应用等。虚拟鼠标的实现及虚拟鼠标应用等。
  • 虚拟鼠标驱动

    2013-09-30 10:58:56
    虚拟鼠标驱动 模拟鼠标点击 简单的鼠标模拟
  • 虚拟鼠标(实用工具)

    2019-11-04 09:43:37
    只有键盘没有鼠标的情况下可以解决一下燃眉之急,虚拟鼠标
  • Windows虚拟鼠标键盘驱动 完整源代码包含visual studio项目文件
  • 虚拟鼠标软件

    2013-03-02 14:48:27
    一个简单实用的虚拟鼠标软件,可以用来对那些滚轮坏了的又急需用滚轮的很有帮助...
  • 虚拟鼠标驱动程序

    千次阅读 2019-02-26 10:34:32
    虚拟鼠标驱动程序

    分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

                   


    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli at hotmail dot com>

    前段时间写一个程序,要向系统中注入mouse事件,我又不想信赖于具体的GUI,就写一个虚拟mouse设备驱动程序,感觉挺好用的,不过后来发现 linux其实有一个uinput驱动程序实现了类似的功能。幸好后来才发现uinput这玩意儿,否则就没有机会去写了,有时真是宁愿知识面窄一点,这样才有机会重复发明一些轮子,从中获得一些乐趣。

    o 先写一个字符驱动程序。

    #include <linux/module.h>
    #include <linux/moduleparam.h>
    #include <linux/init.h>
    #include <linux/kernel.h>
    #include <linux/slab.h>
    #include <linux/fs.h>
    #include <linux/errno.h>
    #include <linux/types.h>
    #include <linux/proc_fs.h>
    #include <linux/fcntl.h>   
    #include <linux/aio.h>
    #include <asm/uaccess.h>
    #include <linux/ioctl.h>
    #include <linux/cdev.h>
    #include <linux/input.h>
     
    int vmouse_major = 200;
    module_param(vmouse_major, int, 0);
    MODULE_AUTHOR("Li XianJing <xianjimli@hotmail.com>");
    MODULE_LICENSE("GPL");
     
    static struct input_dev* vmouse_idev = NULL;
     
    int vmouse_open(struct inode* inode, struct file* filp)
    {
        return 0;
    }
     
    int vmouse_release(struct inode* inode, struct file* filp)
    {
        return 0;
    }
     
    ssize_t vmouse_read(struct file* filp, char __user *buf, size_t count, loff_t* f_pos)
    {
        printk(KERN_INFO"%s/n", __func__);
        return count;
    }
     
    struct mouse_event
    {
        int press;
        int x;
        int y;
    };
     
    ssize_t vmouse_write(struct file* filp, const char __user * buf, size_t count, loff_t* f_pos)
    {
        int ret = 0;
        struct mouse_event event;
     
        while(ret < count)
        {
            if(copy_from_user(&event, buf + ret, sizeof(event)))
            {
                return -EFAULT;
            }
            ret += sizeof(event);
     
            if(event.press == 1)
            {
                input_report_key(vmouse_idev, BTN_TOUCH, 1);
                input_report_abs(vmouse_idev, ABS_X, event.x & 0xfff);
                input_report_abs(vmouse_idev, ABS_Y, event.y & 0xfff);
                input_report_abs(vmouse_idev, ABS_PRESSURE, 0xff);
                input_sync (vmouse_idev);
            }
            else if(event.press == -1)
            {
                input_report_abs(vmouse_idev, ABS_X, event.x & 0xfff);
                input_report_abs(vmouse_idev, ABS_Y, event.y & 0xfff);
                input_sync (vmouse_idev);
            }
            else
            {
                input_report_abs(vmouse_idev, ABS_PRESSURE, 0);
                input_report_key(vmouse_idev, BTN_TOUCH, 0);
                input_sync (vmouse_idev);
            }
            printk(KERN_INFO"%s p=%d x=%d y=%d/n", __func__, event.press, event.x, event.y);
        }
     
        return ret;
    }
     
    static struct file_operations vmouse_fops =
    {
        .owner = THIS_MODULE,
        .open    = vmouse_open,
        .release = vmouse_release,
        .read    = vmouse_read,
        .write   = vmouse_write,
    };
    static int __init vmouse_init(void)
    {
        int result = register_chrdev(vmouse_major, "vmouse", &vmouse_fops);
        vmouse_input_dev_setup();
     
        return result;
    }
     
    static void __exit vmouse_cleanup(void)
    {
        input_unregister_device(vmouse_idev);
        unregister_chrdev(vmouse_major, "vmouse");
     
        return;
    }
     
    module_init(vmouse_init);
    module_exit(vmouse_cleanup);

    o 再实现一个虚拟输入设备。

    static int vmouse_input_dev_open(struct input_dev* idev)
    {
        printk(KERN_INFO"%s/n", __func__);
     
        return 0;
    }
     
    static void vmouse_input_dev_close(struct input_dev* idev)
    {
        printk(KERN_INFO"%s/n", __func__);
     
        return;
    }
     
    static int vmouse_input_dev_setup(void)
    {
        int ret = 0;
        vmouse_idev = input_allocate_device();
     
        if(vmouse_idev == NULL)
        {
            return -ENOMEM;
        }
     
        vmouse_idev->name = "vmouse";
        vmouse_idev->phys = "vmouse/input0";
        vmouse_idev->open = vmouse_input_dev_open;
        vmouse_idev->close = vmouse_input_dev_close;
     
        __set_bit(EV_ABS, vmouse_idev->evbit);
        __set_bit(EV_KEY, vmouse_idev->evbit);
        __set_bit(ABS_X, vmouse_idev->absbit);
        __set_bit(ABS_Y, vmouse_idev->absbit);
        __set_bit(ABS_PRESSURE, vmouse_idev->absbit);
        __set_bit(BTN_TOUCH, vmouse_idev->keybit);
     
        ret = input_register_device(vmouse_idev);
     
        return ret;
    }

    o Makefile

    obj-m := vmouse.o

    KDIR := /lib/modules/$(shell uname -r)/build
    PWD := $(shell pwd)

    default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
    install:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
    clean:
        rm -f *.mod.c *.ko *.o Module.markers  modules.order  Module.symvers

    加载模块后,向/dev/vmouse里写入要注入的事件,事件将会转发到/dev/input/eventX输入设备文件里,系统会从这里自动读取事件。

               

    分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • 虚拟鼠标英文版

    2014-09-20 16:47:28
    用于WIN8平板的虚拟鼠标英文版,方便WIN8平板的使用
  • 虚拟鼠标VisualC++

    2018-10-04 20:23:46
    很好的C++软件代码,一个桌面窗口类的C++项目,模拟鼠标的操作的虚拟鼠标
  • Linux虚拟鼠标驱动及测试程序,包括驱动程序源文件以及对应的测试文件。
  • dd81010版本的DD虚拟键盘虚拟鼠标,目前官方已经暂停下载,分享出来给大家学习研究
  • 建立单摄像机虚拟鼠标的数学模型,提出一种虚拟鼠标的现场标定方法。以二维实体靶标为中介,利用计算机屏幕生成的虚拟靶标,确定摄像机坐标系到屏幕坐标系的变换,建立空间三维控制点图像坐标到鼠标指针的映射,实现了单...
  • C# 虚拟鼠标驱动源码

    2013-03-02 11:30:30
    C# 虚拟鼠标驱动源码
  • 本资源包含 虚拟鼠标驱动程序源代码 及 最新驱动程序开发包WDK(WDK是WIN10平台下的SDK,如在其他平台,请下载相应的开发包)。安装SDK成功后,可在Visual Studio 2017下成功编译(Visual Studio 2012,Visual Studio ...
  • 电子-基于PDIUSBD12的虚拟鼠标.zip,单片机/嵌入式STM32-F0/F1/F2
  • 虚拟鼠标设备驱动

    千次阅读 2018-09-06 13:42:02
    虚拟鼠标设备驱动 #include &lt;linux/device.h&gt; #include &lt;linux/module.h&gt; #include &lt;linux/input.h&gt; #include &lt;linux/err.h&gt; #include &lt;linux/...

    虚拟鼠标设备驱动

    #include <linux/device.h>  
    #include <linux/module.h>
    #include <linux/input.h>
    #include <linux/err.h>
    #include <linux/cdev.h>
    #include <asm/uaccess.h>
    #include <linux/slab.h> 
    
    static struct input_dev *vir_mouse_device = NULL;
    int vir_mouse_open(struct input_dev *dev)
    {
        return 0;
    }
    
    void vir_mouse_release(struct input_dev *dev)
    {
    
    }
    static int vir_mouse_setup(void){
        int ret ;
    
        vir_mouse_device = input_allocate_device();
    
        if(IS_ERR(vir_mouse_device)){
            ret = PTR_ERR(vir_mouse_device);
    
            return ret;
        }
        vir_mouse_device->open = vir_mouse_open;
        vir_mouse_device->close = vir_mouse_release;
        vir_mouse_device->name = "virmouse";
        vir_mouse_device->phys = "virmouse/input0";
    
        set_bit(EV_KEY, vir_mouse_device->evbit);
        set_bit(EV_REL, vir_mouse_device->evbit);
        set_bit(EV_REP, vir_mouse_device->evbit);
        set_bit(REL_X, vir_mouse_device->relbit);
        set_bit(REL_Y, vir_mouse_device->relbit);
        set_bit(REL_WHEEL, vir_mouse_device->relbit);
    
        set_bit(BTN_LEFT,vir_mouse_device->keybit);
        set_bit(BTN_RIGHT,vir_mouse_device->keybit);
        set_bit(BTN_MIDDLE,vir_mouse_device->keybit);
        ret = input_register_device(vir_mouse_device);
        if(ret < 0)                                                            
        {                                                                           
            input_free_device(vir_mouse_device);
        }
        return ret;
    }
    
    static void vir_mouse_destroy(void){
    
        input_unregister_device(vir_mouse_device);
        input_free_device(vir_mouse_device);         
    }
    
    #define VIRMDEV_MAJOR 0//using dynamic major
    
    static int virmouse_major = VIRMDEV_MAJOR;
    #define device_name "virmouse"
    typedef struct _tagvirmouse{
            struct cdev cdev;
    }virmouseDev;
    
    virmouseDev *pVirmouseDev = NULL;
    struct class *virmouse_class;  
    
    int virmouse_dev_open(struct inode* inode, struct file* filp)
    {
        return 0;
    }
    
    int virmouse_dev_release(struct inode* inode, struct file* filp)
    {
        return 0;
    }
    
    ssize_t virmouse_dev_read(struct file* filp, char __user *buf, size_t count, loff_t* f_pos)
    {
        printk(KERN_INFO "%s/n", __func__);
        return count;
    }
    
    /*
    *定义协议,写入到系统内部
    */
    
    ssize_t virmouse_deve_write(struct file* filp, const char __user * buf, size_t count, loff_t* f_pos)
    {
        int ret = 0;
        signed char mousebuf[4];
    
        signed int rel;
        int i;
        while(ret < count)
        {
            if(copy_from_user(mousebuf, buf + ret, sizeof(mousebuf)))
            {
                printk(KERN_ALERT "%s copy error \n",__func__);
                return -EFAULT;
            }
    
            for( i =0 ;i< count ;i++){
                printk(KERN_ALERT "buf[%d]:%#x ",i,mousebuf[i]);
            }
            printk("count: %d  \n",count);
            ret += sizeof(mousebuf);
            //rel = (signed int )mousebuf[1];
            input_report_key(vir_mouse_device, BTN_LEFT,   mousebuf[0] & 0x01);
            input_report_key(vir_mouse_device, BTN_RIGHT,  mousebuf[0] & 0x02);
            input_report_key(vir_mouse_device, BTN_MIDDLE, mousebuf[0] & 0x04);
            //input_report_key(vir_mouse_device, BTN_SIDE,   mousebuf[0] & 0x08); 
            //input_report_key(vir_mouse_device, BTN_EXTRA,  mousebuf[0] & 0x10);
            rel = (signed int )mousebuf[1];
            //printk("1-%d \n",rel);
            input_report_rel(vir_mouse_device, REL_X,     rel);
    
            rel = (signed int )mousebuf[2];
            //printk("2-%d \n",rel);
            input_report_rel(vir_mouse_device, REL_Y,     rel);
            rel = (signed int )mousebuf[3];
            //printk("3-%d \n",rel);
            input_report_rel(vir_mouse_device, REL_WHEEL, rel);
            input_sync(vir_mouse_device);
    
        }
    
        return ret;
    }
    
    static struct file_operations file_ops ={
        .owner = THIS_MODULE,
        .open    = virmouse_dev_open,
        .release = virmouse_dev_release,
        .read    = virmouse_dev_read,
        .write   = virmouse_deve_write,
    };
    static void virmouse_setup_cdev(virmouseDev* dev , int index){
    
    
        int err,devno=MKDEV(virmouse_major,index);
        cdev_init(&dev->cdev,&file_ops);
        dev->cdev.owner = THIS_MODULE;
        dev->cdev.ops= &file_ops;
        err= cdev_add(&dev->cdev,devno,1);
        if(err)
            printk(KERN_NOTICE "ERROR %d adding virmouse device",err);
    
    }
    static int __init  virmouse_device_init(void){
        int result;
        dev_t devno;
        devno = MKDEV(virmouse_major,0);
        if(virmouse_major){
            result = register_chrdev_region(devno,1,device_name);
        }
        else{
            result = alloc_chrdev_region(&devno,0,1,device_name);
            virmouse_major = MAJOR(devno);
        } 
        if(result<0){
            return result;
        }
        pVirmouseDev = kmalloc(sizeof(virmouseDev), GFP_KERNEL);
        if (!pVirmouseDev){ 
            result = -ENOMEM;
            goto fail_malloc;
        }
        memset(pVirmouseDev,0,sizeof(pVirmouseDev));
    
        virmouse_class = class_create(THIS_MODULE,device_name);  
        if(IS_ERR(virmouse_class)){ 
          printk("%s create class error\n",__func__);
          unregister_chrdev_region(devno, 1);
          return -1;  
        }  
    
        device_create(virmouse_class, NULL, devno, NULL, device_name);  
        virmouse_setup_cdev(pVirmouseDev,0);
        vir_mouse_setup();
        return 0;
    
    fail_malloc:
    
        unregister_chrdev_region(devno, 1);
        return 0;
    
    }
    
    static void __exit  virmouse_device_exit(void){
        dev_t devno;
        devno = MKDEV(virmouse_major,0);
        cdev_del(&pVirmouseDev->cdev);
        device_destroy(virmouse_class,devno);  
        class_destroy(virmouse_class);
        kfree(pVirmouseDev);
        unregister_chrdev_region(MKDEV(virmouse_major,0),1);
        vir_mouse_destroy();
    
    }
    
    module_init(virmouse_device_init); 
    module_exit(virmouse_device_exit);
    MODULE_LICENSE("GPL");
    展开全文
  • 虚拟鼠标的驱动代码

    2011-09-16 21:51:20
    能够在设备管理器中模拟出虚拟鼠标和键盘的驱动程序源码
  • WIN8平板虚拟鼠标触控板,可替代鼠标方便手指操作,放置桌面文字太小,误操作
  • 有了虚拟鼠标,再小的字都可以点到,全屏模式可以用win8触摸屏玩游戏
  • 操作一个虚拟鼠标

    2019-06-29 19:09:56
    创建一个虚拟鼠标,在AddDevice中 status = IoCreateDevice (DriverObject, sizeof(DEVICE_EXTENSION), NULL, FILE_DEVICE_MOUSE, 0, true, // Not exclusive &fdo);这样创建的设备,即便创建...

    创建一个虚拟鼠标,在AddDevice中

    	status = IoCreateDevice (DriverObject,
    		sizeof(DEVICE_EXTENSION),
    		NULL,
    		FILE_DEVICE_MOUSE,
    		0,
    		true,	// Not exclusive
    		&fdo);
    这样创建的设备,即便创建符号链接,也不可能在应用程序中打开。
    这需要在DriverEntry中创建一个另外一个设备,然后操作这个设备。
     
    	UNICODE_STRING deviceLinkUnicodeString;
    	RtlInitUnicodeString(&deviceLinkUnicodeString, DOS_DEVICE_NAME);
    	status = IoCreateSymbolicLink(&deviceLinkUnicodeString, &deviceNameUnicodeString);
    	if (!NT_SUCCESS(status))
    	{
    		if (FunctionDevice)
    		{
    			IoDeleteDevice(FunctionDevice);
    			return status;
    		}
    	}

    转载于:https://www.cnblogs.com/fanzi2009/archive/2009/11/01/1594240.html

    展开全文
  • 虚拟鼠标键盘驱动DDV

    热门讨论 2010-08-27 10:02:35
    利用VS2008编写的虚拟鼠标驱动DDV 适用Microsoft Windows 2000 以上操作系统。实测通过 WINXP , WIN2003 , WIN2008 , VISTA , WIN7 .(驱动在64位操作系统上需要付费的签名认证,所以目前暂不支持)。 DDV同时支持 ...
  • 主要介绍了jQuery移动页面开发中的触摸事件与虚拟鼠标事件的简单编写方法,jQuery是当今人气最高的Javascript库并被广泛应用于移动web的开发,需要的朋友可以参考下
  • 最简单好用的驱动级虚拟鼠标虚拟键盘支持 WINXP , WIN2003 , WIN2008 , VISTA , WIN7 ,32位和64位操作系统。适用 VB6, DELPHI, VC, BC, VB.NET, C#, 易语言等各种编程语言写的应用程序调用。一键安装和卸载,...

    最简单好用的驱动级虚拟鼠标虚拟键盘

    支持 WINXP , WIN2003 , WIN2008 , VISTA , WIN7 ,32位和64位操作系统。

    适用 VB6, DELPHI, VC, BC, VB.NET, C#, 易语言等各种编程语言写的应用程序调用。

    一键安装和卸载,实现模拟按键操作只需加载DD入口文件DD_EntryNNNNN.dll ,然后调用接口函数即可。

    个人桌面应用和游戏工作室装机必备

    接口函数说明:

    1. DD_btn(参数)

    功能:模拟鼠标点击

    参数: 1=左键按下,2=左键放开 ,4=右键按下,8=右键放开

    例子:模拟鼠标右键只需要连写 dd_btn(4) ; dd_btn(8)

    2. DD_mov(参数x,参数y)

    功能:模拟鼠标移动

    参数: 参数x , 参数y 以屏幕左上角为原点。

    例子:把鼠标移动到分辨率1920*1080 的屏幕正中间,

    int x = 1920/2 ; int y = 1080/2;

    DD_mov(x,y) ;

    3. DD_key(参数1,参数2)

    功能:模拟键盘按键

    参数:参数1,DD键码,参数2,1=按下,2=放开

    例子:模拟TAB按键,只需连写

    DD_key(15, 1);

    DD_key(15, 2);

    鼠标键盘模拟操作都只需这 DD_btn , DD_mov , DD_key 三个简单的函数即可完成。

    展开全文
  • Kinect骨架追踪应用于虚拟鼠标,Kinec相关基础学习。来自台湾的资料...
  • 电视端虚拟鼠标的设计

    千次阅读 2018-03-24 11:51:49
    下面是虚拟鼠标控制的java代码SimMouse.java/** * native tool for browser */public class SimMouse { //private static final String LOGTAG = "BrowserUtil"; public static boolean mToo...
  • 虚拟鼠标实验

    2020-11-02 21:07:38
    虚拟键盘实验 实验现象 理论学习 原理图 代码编写
  • 虚拟鼠标驱动程序.rar

    2008-10-25 16:19:41
    虚拟鼠标驱动程序.rar很不错的代码例子
  • DD驱动 虚拟键盘 虚拟鼠标

    千次阅读 2010-04-18 21:59:00
    最简单好用的驱动级虚拟鼠标虚拟键盘支持 WINXP , WIN2003 , WIN2008 , VISTA , WIN7 ,32位和64位操作系统。适用 VB6, DELPHI, VC, BC, VB.NET, C#, 易语言等各种编程语言写的应用程序调用。一键安装和卸载,...
  • vc6虚拟鼠标源程序

    2010-05-28 11:05:33
    这是一个虚拟鼠标的源程序,VC6++的代码,需要的请下载,如果有能把它转化成vc2005或易的请与190092181联系
  • PointerStick(虚拟鼠标指针软件)绿色版是一款便捷的虚拟桌面魔术棒鼠标指针绿色软件,PointerStick(虚拟鼠标指针软件)小巧易用、绿色免费类似教鞭一样的指针,PointerStick(虚拟鼠标指针软件)比较适合教师们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,331
精华内容 1,332
关键字:

虚拟鼠标