精华内容
下载资源
问答
  • 虚拟键盘驱动

    热门讨论 2012-04-10 14:45:01
    虚拟键盘驱动,驱动级模拟键盘按键,没有物理键盘时也可以使用
  • 虚拟键盘驱动程序

    千次阅读 2018-11-16 17:09:27
    虚拟键盘驱动程序

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    虚拟键盘驱动程序
    Saturday, September 12th, 2009 | Author: admin

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

    前段时间写一个程序,要向系统中注入按键事件,我又不想信赖于具体的GUI,就写一个虚拟键盘设备驱动程序,感觉挺好用的,不过后来发现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 vkeyboard_major = 201;
    module_param(vkeyboard_major, int, 0);
    MODULE_AUTHOR("Li XianJing <xianjimli@hotmail.com>");
    MODULE_LICENSE("GPL");
     
    static struct input_dev* vkeyboard_idev = NULL;
     
    int vkeyboard_open(struct inode* inode, struct file* filp)
    {
        return 0;
    }
     
    int vkeyboard_release(struct inode* inode, struct file* filp)
    {
        return 0;
    }
     
    ssize_t vkeyboard_read(struct file* filp, char __user *buf, size_t count, loff_t* f_pos)
    {
        printk(KERN_INFO"%s/n", __func__);
        return count;
    }
     
    struct keyboard_event
    {
        int press;
        int key;
    };
     
    ssize_t vkeyboard_write(struct file* filp, const char __user * buf, size_t count, loff_t* f_pos)
    {
        int ret = 0;
        struct keyboard_event event;
     
        while(ret < count)
        {
            if(copy_from_user(&event, buf + ret, sizeof(event)))
            {
                return -EFAULT;
            }
            ret += sizeof(event);
     
            input_event(vkeyboard_idev, EV_MSC, MSC_SCAN, event.key);
            input_report_key(vkeyboard_idev, event.key, event.press);
            input_sync (vkeyboard_idev);
     
            printk(KERN_INFO"%s p=%d key=%d with scan code/n", __func__, event.press, event.key);
        }
     
        return ret;
    }
     
    static struct file_operations vkeyboard_fops =
    {
        .owner = THIS_MODULE,
        .open    = vkeyboard_open,
        .release = vkeyboard_release,
        .read    = vkeyboard_read,
        .write   = vkeyboard_write,
    };
     
    static int __init vkeyboard_init(void)
    {
        int result = register_chrdev(vkeyboard_major, "vkeyboard", &vkeyboard_fops);
        vkeyboard_input_dev_setup();
     
        return result;
    }
     
    static void __exit vkeyboard_cleanup(void)
    {
        input_unregister_device(vkeyboard_idev);
        unregister_chrdev(vkeyboard_major, "vkeyboard");
     
        return;
    }
     
    module_init(vkeyboard_init);
    module_exit(vkeyboard_cleanup);

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

    static int vkeyboard_input_dev_open(struct input_dev* idev)
    {
        printk(KERN_INFO"%s/n", __func__);
     
        return 0;
    }
     
    static void vkeyboard_input_dev_close(struct input_dev* idev)
    {
        printk(KERN_INFO"%s/n", __func__);
     
        return;
    }
     
    static int vkeyboard_input_dev_setup(void)
    {
        int ret = 0;
        int i = 0;
        vkeyboard_idev = input_allocate_device();
     
        if(vkeyboard_idev == NULL)
        {
            return -ENOMEM;
        }
     
        vkeyboard_idev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_ABS) | BIT_MASK(EV_MSC);
        vkeyboard_idev->mscbit[0] = BIT_MASK(MSC_SCAN) | BIT_MASK(MSC_SERIAL) | BIT_MASK(MSC_RAW);
     
        bitmap_fill(vkeyboard_idev->keybit, KEY_MAX);
        bitmap_fill(vkeyboard_idev->relbit, REL_MAX);
        bitmap_fill(vkeyboard_idev->absbit, ABS_MAX);                
     
        vkeyboard_idev->name = "vkeyboard";
        vkeyboard_idev->phys = "vkeyboard/input0";
        vkeyboard_idev->open = vkeyboard_input_dev_open;
        vkeyboard_idev->close = vkeyboard_input_dev_close;
     
        for(i = 32; i < KEY_MAX; i++)
        {
            input_set_capability(vkeyboard_idev, EV_KEY, i);
        }
        __set_bit(EV_KEY, vkeyboard_idev->evbit);
     
        ret = input_register_device(vkeyboard_idev);
     
        return ret;
    }

    o Makefile

    obj-m := vkeyboard.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/vkeyboard里写入要注入的事件,事件将会转发到/dev/input/eventX输入设备文件里,系统会从这里自动读取事件。

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • 虚拟键盘驱动 Fakey

    2009-04-14 14:24:15
    别人写的 虚拟键盘驱动 Fakey,包括源码和安装说明,用vc编译可以通过的
  • 虚拟键盘驱动的实现

    千次阅读 2016-07-15 14:55:21
    虚拟键盘驱动的实现和鼠标的相似,如果需要源代码的可以加我的QQ商谈。
    虚拟键盘驱动的实现和鼠标的相似,如果需要源代码的可以加我的QQ商谈。
    
    展开全文
  • DD 虚拟键盘驱动无法卸载问题: 打开系统路径:C:\Windows\System32;找到DD开头的文件,强制删除后重启;右键我的电脑----管理----设备管理器----键盘,选中后卸载即可

    DD 虚拟键盘驱动无法卸载问题:
    打开系统路径:C:\Windows\System32;找到DD开头的文件,强制删除后重启;右键我的电脑----管理----设备管理器----键盘,选中后卸载即可

    展开全文
  • 7.3 虚拟键盘驱动  上一节注册了一个input键盘设备,注册设备的同时需要找到 它的驱动。 7.3.1 键盘区的的初始化 7.3.2 与设备建立连接 7.3.3 启动键盘设备 7.3.4 输入设备和主机系统之间的事件 7.4 键盘中断 ...


    7.3 虚拟键盘驱动

      上一节注册了一个input键盘设备,注册设备的同时需要找到 它的驱动。

    7.3.1 键盘区的的初始化

    7.3.2 与设备建立连接

    7.3.3 启动键盘设备

    7.3.4 输入设备和主机系统之间的事件


    7.4 键盘中断

    7.4.1 q40kbd设备的中断处理

    7.4.2 serio总线的中断处理

    7.4.3 驱动提供的中断处理



    展开全文
  • 正常用devcon.exe安装的驱动,但怎么都卸载不了 ![图片说明](https://img-ask.csdn.net/upload/201811/02/1541143420_559987.jpg)
  • 因为公司智能终端放置在外面,有一个像ATM机器一样的密码键盘.... 现在为了方便维护,一些简单的系统操作,就利用...所以,用到了uinput虚拟输入驱动,简单的说:用它可以在用户空间实现输入设备,向系统中注入输入事
  • 虚拟键盘鼠标驱动源码

    热门讨论 2011-08-29 14:46:38
    虚拟键盘鼠标驱动源码和测试程序,建议在vw上测试,否则,嘻嘻嘻,鼠标键盘不听话可就苦了
  • Windows虚拟鼠标键盘驱动 完整源代码包含visual studio项目文件
  • 驱动虚拟键盘模块
  • 虚拟鼠标键盘驱动DDV

    热门讨论 2010-08-27 10:02:35
    利用VS2008编写的虚拟鼠标驱动DDV 适用Microsoft Windows 2000 以上操作系统。实测通过 WINXP , WIN2003 , WIN2008 , VISTA , WIN7 .(驱动在64位操作系统上需要付费的签名认证,所以目前暂不支持)。 DDV同时支持 ...
  • 源码:张栗炜虚拟键盘设备驱动 下载地址:http://www.pudn.com/downloads229/sourcecode/windows/vxd/detail1077750.html (yyxhhx 2014年提供) 今天调试了虚拟键盘的源码,发现几个问题 直接上源码: #include ...
  • hid keyboard device...不过万一出现这些状况不要急撒 开开机输入密码的时候 左下角有一个 键可以调处虚拟键盘 可以用这个键盘输入密码 和修复电脑键盘驱动 整个修复过程只要 鼠标 虚拟键盘  现在开始修复 ...
  • DD驱动 虚拟键盘 虚拟鼠标

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

    千次阅读 2019-03-25 10:32:02
    开发DNF连点功能时,常规的PyMouse PyKeyboard无效 猜测原因是DNF屏蔽了模拟信号 尝试使用驱动级按键 作者:石头三颗 ...来源:知乎 著作权归作者所有。...比如DD虚拟键盘虚拟鼠标 这个官方例子里就有p...
  • 参数: 参数1 ,请查看[DD虚拟键盘码表]。 参数2,1=按下,2=放开 例子: 模拟大写字母A, (需要触发SHIFT+小写字母a) HIVK_KEY(500,1) //SHIFT按下 HIVK_KEY(401,1) //a键按下 HIVK_KEY(401,2) //a键抬起 ...
  • 需全部源码的请加QQ156722569
  • 简单的说,有一块触摸屏,安装到电脑上,我们想在这块触摸屏上运行虚拟键盘软件,当键盘用,目前触摸屏驱动虚拟键盘程序都是现成的,问题是怎么能让这个虚拟键盘程序运行或者说只显示在触摸屏上,可不可以把虚拟...
  • 虚拟键盘指示灯

    千次阅读 热门讨论 2013-06-12 19:24:40
    一般情况下,键盘都配置了键盘指示灯,它们指示CapsLock、NumLock以及ScrollLock按键的锁定状态,对于经常从事文本输入活动的用户来说,这些灯能带来很大方便。但在今天,笔记本电脑大行其道,出于环保或提高电池...
  • USB虚拟总线驱动的使用范围是非常广泛的,可以使用它来模拟各种通用的USB设备。 以前的文章阐述过基于windows平台和基于linux平台中的USB虚拟总线驱动开发, 比如如下链接阐述的是在linux平台中的虚拟USB总线驱动...
  • Linux X86 PS/2键盘驱动分析记录

    千次阅读 2017-05-07 12:18:16
    1,Linux X86 PS/2 键盘驱动框架流程(以下均已Intel 8042键盘控制器为例): 1.1 设备初始化注册流程: 键盘控制器硬件驱动(i8042.c) -> 串口驱动核心(serio.c) -> 串口驱动(atkbd.c) -> 输入驱动核心...
  • VMware增强型键盘驱动程序

    千次阅读 2020-06-13 06:37:07
    我相信很多人在安装VMware Workstation Pro的时候,都曾发现有一个“增强型键盘驱动程序“,默认是没有打勾的,同样,我也相信很多人都有如下这样的疑问: VMware增强型键盘驱动程序是什么? VMware增强型键盘驱动...
  • 背景:公司有一个PS2键盘驱动的项目,没有控制器,需要模拟PS2协议,检测按键并通过input子系统将按键时间上报一、准备: 1、PS2协议: PS2有两个控制线,时钟线和数据线。当按键按下或抬起,设备会向主机发送键码...
  • linux usb键盘驱动详解

    千次阅读 2017-12-21 15:03:06
    1.首先我们通过上节的代码中修改,来打印下键盘驱动的数据到底是怎样的 先来回忆下,我们之前写的鼠标驱动的id_table是这样:   所以我们要修改id_table,使这个驱动为键盘的驱动,如下图所示:   然后修改中断函数...
  • 帮手虚拟(BBVirtual下简称BBV),以最简单最便洁的方式提供了驱动级模拟键盘和鼠标操作功能。 用户只需简单的编程,即可在桌面应用,网页游戏,普通网络游戏等中,按自己的需求实现按键模拟。 适用Microsoft Windows ...
  • WINCE 键盘驱动 分析

    2010-06-12 15:45:00
    键盘驱动有点繁杂,可以配合以下资料查阅: 1. Platform Build自带的帮助文件. 2. 阅读源代码: 2.1 C:/WINCE420/Public/common/oak/drivers/keybd 2.2 C:/WINCE420/Platform/smdk2410/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,300
精华内容 14,920
关键字:

虚拟键盘驱动