摘 要 手柄对于游戏来说密不可分。介绍使用易语言编程实现游戏手柄到键盘的映射,让只支持键盘操作的游戏支持手柄操作。
关键词 易语言;游戏手柄;键盘;映射
1 引言
目前市面上有很多游戏,仅仅支持键盘和鼠标进行输入,如果用游戏手柄来玩的话,相信玩家肯定会有另一番感觉。本文将采用国产编程开发工具“易语言”实现一个游戏手柄到键盘映射程序。
2 易语言
易语言是一个自主开发,适合国情的汉语编程环境,是一个以汉语字、词为基于编程的、全可视化的、跨主流操作系统平台的编程工具环境;拥有简、繁汉语以及英语、日语等多语种版本;能与常用的编程语言互相调用;具有充分利用API,COM、DLL、OCX组件、各种主流数据库、各种实用程序等多种资源的接口和支撑工具。
易语言的整体运行效率很高,在主流的计算机上,即便是在开发环境中运行,也丝毫不会有停顿感。易语言本身的帮助功能非常强大,本文所涉及到的在开发环境中的各种操作不再详细进行叙述。
3 软件结构
该映射工具主要实现两个主要的功能:(1)从手柄按钮到键盘按键的映射;(2)映射方案的管理。
3.1 手柄按钮到键盘按键的映射
该功能主要实现从手柄按钮被按下后,截获手柄的输入并模拟成键盘输入这个过程。获取手柄输入的常用的方法有两种,第一种是使用系统中DirectX的Direct Input组件;第二种是使用Windows API系统函数实现。
易语言是一种非常强大、高度集成的开发工具,它集成了非常多的支持库。这当中就包含了DirectX支持库中,同时它也提供了Windows API的调用,只是使用前需要声明API函数原型,显得较为繁琐。在本程序中为了简单起见,使用DirectX作为获取游戏手柄输入的方法。实现了输入的获取,接下来就是将手柄输入模拟成键盘的输入。
模拟键盘的输入,使用的是Windows中一个名为keybd_event的API函数。在易语言中,keybd_event的中文名称是“模拟键盘行动_”。
该函数的C语言原型如下:
VOID keybd_event(BYTE bVk, BYTE bScan, DWORD dwFlags, PTR dwExtraInfo);
该函数共有四个参数,各参数含义如表1。
表1
参数名 |
含义 |
bVk |
被模拟的键盘键的虚拟键值 |
bScan |
该参数保留未使用,一般都为0 |
dwFlags |
定义函数操作的一个标志位集,例如:KEYEVENTF_KEYUP表示该键将被释放 |
dwExtraInfo |
通常不用的一个值,一般都为0 |
3.2 按钮映射方案的管理
通常每个游戏的键盘键位设置都不一样,为了使程序具有更好的通用性,需要为不同的游戏建立不同的按钮键位映射方案,在程序运行过程中动态管理这些方案。方案的管理分为五个部分,分别是:“方案的建立”、“方案的删除”、“方案内容的修改”、“方案的加载与保存”和“方案的应用”。
|