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); 

}

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一行代码教你伪装黑客

    一行代码教你伪装黑客在电脑上单击右键新建一个记事本右键笔记本打开编辑输入如下代码并保存starthttps://pranx.com/hacker/笔记本后缀改成.bat完成后我们双击点击,就会出现如下图的一个流动界面了,是不是很酷炫,其实也就是一个普通网页,用来给外行人装装逼,哈哈哈哈…

    2022年7月15日
    203
  • 史上最全安装Maven教程「建议收藏」

    史上最全安装Maven教程「建议收藏」史上最全安装Maven教程简单了解一下什么是Maven1.Maven翻译为“专家“,”内行”的意思,是著名Apache公司下基于Java开发的开源项目。2.Maven项目对象模型(POM)是一个项目管理工具软件,可以通过简短的中央信息描述来管理项目的搭建,报告和文档等步骤。3.Maven是一个项目管理的工具,可以对项目进行构建、依赖的管理。PS:(Gradle的项目搭建方式,将在不久的未来取代Maven,大势所趋。原因如何?小Du下期为您揭晓)一.官网下载下载官网→_→传送门二.配

    2022年6月4日
    29
  • datagrip2020激活码mac_通用破解码

    datagrip2020激活码mac_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    43
  • AVX512与AVX2比较「建议收藏」

    AVX512与AVX2比较「建议收藏」采用,SHA256(SHA256哈希计算是有效负载处理管道的重要部分)优点:1、寄存器变化(与AVX2相比,不仅寄存器的宽度从256位增加到512位,而且寄存器的数量也增加了一倍,达到32)2、比AVX2提供高达8倍的性能提升,由于并行处理了16条消息如何最好地利用为了获得AVX512实现的最佳性能,这里有一些提示:有很多例行程序并行进行SHA256计算。 尝试使用…

    2022年5月30日
    69
  • nginx转发wss「建议收藏」

    nginx转发wss「建议收藏」nginx转发wss

    2022年10月18日
    0
  • ubuntu java 卸载_ubuntu 怎么卸载java「建议收藏」

    ubuntu java 卸载_ubuntu 怎么卸载java「建议收藏」很简单。许多人比较厌恶Java,但是很有可能因为某些原因你需要安装Java,尽管你很讨厌它。在这篇文章中,我们将展示如何在Ubuntu14.04安装Java(也可能在LinuxMint17同样适用)。JREvsOpenJDKvsOracleJDK在我们继续了解如何安装Java之前,让我们快速地了解JRE、OpenJDK和OracleJDK之间的不同之处。JRE(JavaRunt…

    2022年5月12日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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