level 13
## 功能
众所周知,ZUN 制作的 东方STG 从来就不自带更改键盘键位的功能。为此,各路大神都写过各种键盘映射工具,但大多是外挂式的。随着新版本的 Windows 对系统安全性的要求越来越高,这些外挂式的改键工具都可能存在兼容性问题。
THKMC(TouHou Keyboard Mapping Changer) 通过修改东方STG游戏主程序文件中与键盘映射相关的代码,实现自定义游戏键位。
东方STG获取键盘按键状态的方法有两种:`使用 DirectInput` 和 `不使用 DirectInput` 。
其中 `使用 DirectInput` 是通过调用 [IDirectInputDevice8::GetDeviceState()] 来获取键盘状态的;而不使用 `DirectInput` 则是使用 Win32 API 中的 [GetKeyboardState()]。
本程序 **只支持** 对使用 DirectInput 方式获取的按键映射进行更改。所以要求在游戏自带的 custom.exe 程序中不能勾选 “不使用 DirectInput 获取键盘输入”。若勾选的话使用本程序改键将没有任何效果。(不过一般不会有人去勾选吧,因为游戏默认的不勾选也能工作得很好)。
## 特点
相比较其他常见的外挂式通用键位修改工具,因为 THKMC 是为特定的EXE文件量身定制的,所以只要游戏版本正确且用户写的配置文件内容无问题,改键后通常不会有出错或者失效的现象发生。
本程序可修改的键位不仅包括在STG中用到的各种控制键(↑、↓、←、→、Z、X、C、SHIFT、CTRL、ESC等),还包括:
* 截图键(`Home`或`P`)
* `R`( `ESC+R` 可以快速 RETRY)
* `D`(永夜抄 RESULT 画面会用到,可以将游戏纪录保存到文件中)
* 以及其他游戏中用到的一切键位。
____+ 不过 Windows 窗口程序的通用键位是改不了的,比如 `Alt+Space` 打开系统菜单, `Alt+F4` 关闭窗口什么的,这是 Windows 管的,本工具无法对这些系统组合键进行重映射。
除此之外,还有这些优点:
* 对于同一个玩家来讲,改键位一般不是经常要干的事情。直接改 EXE 的方法可以做到一劳永逸,玩家运行游戏时无需再运行其他辅助工具。
* 修改 EXE 只需操作者拥有对该 EXE 文件的读取和写入权限,所以通常不会有因为用户权限或内存布局等原因而导致修改失败的问题发生。
当然缺点也很明显,就是不通用,除了下面 `支持的游戏版本` 中所列出的游戏的主程序文件外,不支持任何其他的文件。
* 另外,也不能为同一个功能映射多个按键,不过游戏本来就已经有多个映射的除外。
____+ 比如在几乎所有的东方STG游戏中 `小键盘8` 的作用和 `↑` 方向键 相同,属于一个功能有多个映射的例子,本程序可以分别将它们映射到不同的功能上。
## 支持的游戏版本
* 东方红魔乡 1.02h 日文原版
* 东方红魔乡 渔场汉化版(**主程序需脱壳**)
* 东方妖妖梦 1.00b 日文原版、渔场汉化版
* 东方永夜抄 1.00d 日文原版、渔场汉化版
* 东方文花帖 1.02a 日文原版
* 东方风神录 1.00a 日文原版、东方喝茶委员会汉化版
* **(地灵殿空缺中)**
* 东方星莲船 1.00b 日文原版
* 东方文花帖DS 1.00a 日文原版
* 妖精大战争 ~ 东方三月精 1.00a 日文原版
* 东方神灵庙 1.00c 日文原版
* 东方辉针城 1.00b 日文原版、喵玉汉化版
* 弹幕天邪鬼 1.00a 日文原版、喵玉汉化版
* 东方绀珠传 1.00b 日文原版、喵玉汉化版
* 黄昏酒场 1.00a
2018年08月21日 05点08分






