Unity键盘钩子[通俗易懂]

Unity键盘钩子[通俗易懂]http://blog.csdn.net/qq452626100/article/details/52398830privatestaticintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam){ if(nCode==HC_ACTION ) { varkc=(KeyCode)(wParam+97-65)

大家好,又见面了,我是你们的朋友全栈君。

http://blog.csdn.net/qq452626100/article/details/52398830

private static int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
	if (nCode == HC_ACTION	)
	{
		var kc = (KeyCode)(wParam+97-65);

		// https://msdn.microsoft.com/en-us/library/windows/desktop/ms644984(v=vs.85).aspx
		int int32Param = lParam.ToInt32();
		var repeat_count	= (ushort) (int32Param&		0xFFFF); //0 - 15	The repeat count.The value is the number of times the keystroke is repeated as a result of the user's holding down the key.
		var scan_code		= (ushort)((int32Param&	  0xFF0000)>>16); //16 - 23The scan code.The value depends on the OEM.
		var extended_key	= 0!=  ((int32Param&  0x1000000)>>24); //24 Indicates whether the key is an extended key, such as a function key or a key on the numeric keypad.The value is 1 if the key is an extended key; otherwise, it is 0.
		var reserved		= (ushort)((int32Param&	0x1E000000)>>25); //25 - 28Reserved.
		var context_code	= 0!=  ((int32Param&	0x20000000)>>29); //29The context code.The value is 1 if the ALT key is down; otherwise, it is 0.
		var previous_key_state=0!= ((int32Param&	0x40000000)>>30); //30The previous key state.The value is 1 if the key is down before the message is sent; it is 0 if the key is up.
		var transition_state= 0!=  ((int32Param&	0x80000000)>>31);//31	The transition state. The value is 0 if the key is being pressed and 1 if it is being released.

		if( !previous_key_state && !transition_state)//有键按下
		{
			Debug.Log ("钩子键盘按下:"+kc);
		}
		else if( previous_key_state && transition_state)
		{
			Debug.Log ("钩子键盘抬起:"+kc);
		}
		return 1;
	}

	return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam); 

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139934.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MAC安装Ruby Rails brew gem

    MAC安装Ruby Rails brew gem

  • CentOS搭建GitLab代码管理平台

    CentOS搭建GitLab代码管理平台

  • Elasticsearch学习,请先看这一篇!

    题记:Elasticsearch研究有一段时间了,现特将Elasticsearch相关核心知识、原理从初学者认知、学习的角度,从以下9个方面进行详细梳理。欢迎讨论……0.带着问题上路——ES是如何产生的?(1)思考:大规模数据如何检索?如:当系统数据量上了10亿、100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题:1)用什么数据库好?(mysql、sybase、oracle、达

  • 支持向量回归-SVR

    支持向量回归-SVR对于一般的回归问题,给定训练样本D={(x1,y1),(x2,y2),…,(xn,yn)},yi€R,我们希望学习到一个f(x)使得,其与y尽可能的接近,w,b是待确定的参数。在这个模型中,只有当发f(x)与y完全相同时,损失才为零,而支持向量回归假设我们能容忍的f(x)与之间最多有ε的偏差,当且仅当f(x)与y的差别绝对值大于ε时,才计算损失,此时相当于以f(x)为中心,构建一个宽度为2ε的

  • 常见逻辑漏洞[通俗易懂]

    常见逻辑漏洞[通俗易懂] 支付逻辑漏洞检测方法与案列支付漏洞一般分为三类,支付过程可直接修改数据包中的支付金额开发人员为了方便,导致支付的关键数据,能直接截包查看而重要的金额数据,在后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额.  没有对购买数量进行负数限制产生的原因是开发人员没有对购买的数量参数进行严格的限制,传输过程没有做签名,导致可随意修改,经典的修改方式就是…

  • 笔试逻辑推理选择题_应聘逻辑测试题目及答案

    笔试逻辑推理选择题_应聘逻辑测试题目及答案【笔试面试】75道逻辑推理题及答案更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com啰嗦:昨天公司开全球研发中心实习生沟通会,其中有个环节是做逻辑推理竞猜,还是得平时

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号