Unity实现模拟按键

模拟键盘输入首先要用到一个API函数:keybd_event。我现在要实现模拟ESC键按钮,通过下面的键值对照表可知ESC键的键码是27,然后我在下面实现了一个简单的例子。

附:常用模拟键的键值对照表。

                      键盘键与虚拟键码对照表

      字母和数字键     数字小键盘的键       功能键         其它键
      键   键码     键   键码       键   键码     键      键码
      A   65      0   96        F1   112     Backspace    8
      B   66      1   97        F2   113     Tab        9
      C   67               2   98        F3   114     Clear        12
      D   68      3   99                     F4   115     Enter       13
      E   69       4   100                   F5   116     Shift        16
      F   70       5   101                   F6   117     Control       17
      G   71       6   102        F7   118       Alt          18
      H   72       7   103        F8   119     Caps Lock     20
      I   73       8   104       F9   120      Esc         27
      J   74       9   105       F10  121     Spacebar    32
      K   75                 *   106       F11  122     Page Up      33
      L   76                 +   107       F12  123     Page Down    34
      M   77       Enter  108       --   --     End         35
      N   78                 -    109       --   --       Home      36
      O   79       .   110       --   --       Left Arrow     37
      P   80       /    111       --   --      Up Arrow      38
      Q   81       --   --       --   --        Right Arrow     39
      R   82       --   --       --   --        Down Arrow     40
      S   83       --   --       --   --        Insert           45
      T   84       --   --       --   --        Delete          46
      U   85       --   --       --   --        Help          47
      V   86       --   --       --   --        Num Lock      144
      W   87          
      X   88      
      Y   89      
      Z   90      
      0   48      
      1   49      
      2   50       
      3   51       
      4   52       
      5   53       
      6   54       
      7   55       
      8   56       
      9   57  

----------------------------------

例子:using UnityEngine;

using System.Collections;

using System.Runtime.InteropServices;

public class KeybdEvent : MonoBehaviour {

[DllImport("user32.dll", EntryPoint = "keybd_event")]

public static extern void Keybd_event(

byte bvk,//虚拟键值 ESC键对应的是27

byte bScan,//0

int dwFlags,//0为按下,1按住,2释放

int dwExtraInfo//0

);

void Start()

{

Keybd_event(27,0,0,0);

Keybd_event(27, 0, 1, 0);

Keybd_event(27, 0, 2, 0);

}

void Update()

{

if (Input.GetKeyDown(KeyCode.Escape))

{

print("按下了ESC键");

}

if (Input.GetKey(KeyCode.Escape))

{

print("按住了ESC键");

}

if(Input.GetKeyUp(KeyCode.Escape))

{

print("松开了ESC键");

}

}

}

时间: 2024-12-08 00:19:17

Unity实现模拟按键的相关文章

jQueryAjax模拟按键消抖(可设置抖动延迟时间)

在硬件中,按键等都会有抖动现象,如何消除抖动,不重复触发事件呢,这就要用到消抖机制了. 这是我用jQuery模拟硬件消抖原理,额,可能是吧...又不对的地方,希望有高手指点指点. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

C语言模拟按键代码

其实 keybd_event 这个API的模拟按键需要按键码,如果用户输入一个字符,怎么用这个API打印出来呢?其实很简单.这个我是在易语言中发现的易语言中的一个 #R键 的值和R的ASCII码是一样的.也就是说,用户输入一个字符,用keybd_event这个API打印出来是很简单的.我们可以全部读取,取出一个字符的ASCII码,然后打出来,再取出另一个,以此类推......全部读取的话用动态数组是很好实现的. 拼音必须是大写的,否则打的可能都是数字还有一个MFC版本的 http://www.c

Android(Linux)模拟按键、触摸屏等事件

前提: 在我们应用程序或者在写Android自动化测试时候常常会需要模拟实体按键,来给我们做测试用.这也是我要整理的目的.主要的涉及的是Linux Input Event事件.以下的例子基于Android 5.1(Linux-3.10). 一.利用getevent.sendevent模拟按键 (1)命令:getevent -t 结果: ... add device 6: /dev/input/event9 bus: 0000 vendor 0000 product 0000 version 00

windows 模拟按键与鼠标

windows 模拟按键与鼠标 函数功能:模拟按键或鼠标.一次完整的按键由KEYEVENTF_KEYDOWN和KEYEVENTF_KEYUP两个子事件组成. 函数原型: VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo): bVk:定义一个虚拟键码.键码值必须在1-254之间. bScan:定义该键的硬件扫描码. dwFlags:若为KEYEVENTF_KEYUP,该键将被释放:指定为0,该键将被按下. dw

使用WinAPI全局热键注册和全局模拟按键

一.全局热键注册 1.先引用DLL [System.Runtime.InteropServices.DllImport("user32.dll")] //导入WinAPI public static extern bool RegisterHotKey( //设置热键 IntPtr hWnd, // 窗口句柄,一般使用Handle属性 int id, // 区别热键的ID号,这个可以随便写,只是用来区分不同热键 uint fsModifiers, // 修正键用户接下哪些键是发生 可能

android 实现模拟按键

android 实现模拟按键方法一 通过Runtime实现,代码如下: try { String keyCommand = "input keyevent " + KeyEvent.KEYCODE_MENU; Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec(keyCommand); } catch (IOException e) { // TODO Auto-generated catch bloc

C#驱动级模拟按键操作

C#驱动级模拟按键操作 2013-09-26 03:17 ·AB叔 447 3 <- 点击左侧的数字“攒”一个吧 昨天遇到一个程序自动输入财付通密码的任务. 因为财付通密码控件是有安全保护的,所以不能通过传统的Keybd_event来操作. 网上找了很多资料,终于找到winio.dll这个端口操作驱动程序组件来解决这个难题. 首先是需要用C#封装winio.dll,让它变得更加好用. 我这里已经封装好了SupKey.dll 注意,我的环境是win2003 32位,63位或者其他版本的时候可能需要

Android及Robotium学习总结【环境变量,真机调试及根据id模拟按键】

本文为转载文章,原文地址为:http://blog.sina.com.cn/s/blog_6abda9bc01015zoc.html Keyword:Android,Robotium,自动化测试,黑盒测试,已知id如何模拟按键 纯属爱好,最近学习了Android及其自动化测试,总算对Android有了个大概的了解. 毕业后就是用的C,从未用过java,并且最近4年几乎没怎么摸过代码,现在学习android还是有点费劲:不过还好,自我觉得理解的很快,别人碰到的问题我都碰到了,很多网上都有答案.其中

Android随笔之——模拟按键操作的几种方式

前几天转过一篇Android上模拟按键操作.触屏事件的博客,昨天又去找了百度.谷歌了一下,写了一点简单的测试代码,留待不时之需.有需要看之前转载的那篇博客的请看这里→_→转:Android随笔之——使用Root权限实现后台模拟全局按键.触屏事件方法(类似按键精灵),这里我就直接上代码了. 1 package com.lsj.keyboardsample; 2 3 import android.app.Activity; 4 import android.app.Instrumentation;