2024年5月30日发(作者:)

易语言编程实现游戏手柄到键盘映射(一)

摘 要 手柄对于游戏来说密不可分。介绍使用易语言编程实现游戏手柄到键

盘的映射,让只支持键盘操作的游戏支持手柄操作。

关键词 易语言;游戏手柄;键盘;映射

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

dwFlags

被模拟的键盘键的虚拟键值

该参数保留未使用,一般都为0

定义函数操作的一个标志位集,例如:

KEYEVENTF_KEYUP表示该键将被释放

dwExtraInfo 通常不用的一个值,一般都为0

3.2 按钮映射方案的管理

通常每个游戏的键盘键位设置都不一样,为了使程序具有更好的通用性,

需要为不同的游戏建立不同的按钮键位映射方案,在程序运行过程中动态管理

这些方案。方案的管理分为五个部分,分别是:“方案的建立”、“方案的删

除”、“方案内容的修改”、“方案的加载与保存”和“方案的应用”。