【原创】THKMC - 东方STG专用键盘映射修改工具
东方吧
全部回复
仅看楼主
level 13
本程序通过直接修改游戏主程序来自定义游戏键位。
为了节约你的时间,先声明一下:本程序暂不支持以下东方STG游戏:
* 花映冢
* 地灵殿
* 天空璋
* 秘封噩梦日记
第一个基本放弃(要处理两个人的输入,有些逻辑不好弄);[阴险]
第二个因为2un留下了个此作独有的BUG所以比较复杂,得慢慢来;[怒]
最后两个如果这个程序经大家测试比较稳定了就尝试加入支持。[滑稽]
2018年08月21日 05点08分 1
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分 2
更新至 1.10,主要增加对 th16 和 th16.5 的支持。并且现在的EXE是Unicode的,非简体中文环境应该不会乱码了。虾仔地址见 6楼 楼中楼
2018年11月30日 12点11分
更新至 1.20,搞定了ZUN在地灵殿中遗留的DINPUT8无法成功初始化的BUG,于是地灵殿终于也能改键了。[滑稽]虾仔地址见 6楼 楼中楼
2018年12月15日 09点12分
更新至 1.40,详见 35 楼
2019年08月20日 11点08分
level 13
关于 thkmc.ini 的详细写法请参考程序目录下的 thkmc_sample.ini,或者也可以点这里:https://wz520.github.io/thkmc/thkmc_sample_ini.html
关于 INI 文件中等号左右两边可以写什么,请参考:https://github.com/wz520/thkmc/blob/master/KeyNamesDX.ahk
其他:
* 左CTRL键可以加速回放 REP。该键当然也可以通过设置 "LCONTROL=xxx" 来修改。并且这对于本身不带加速功能但可以使用 vpatch 来获得该功能的游戏也同样有效。比如你设置 “LCONTROL=TAB",然后用 vpatch 启动红、妖、永任意一作,选择一个REP,这时候就可以用TAB键加速了,而左CTRL键就没用了。
常见问题:
Q: 提示修改成功但是无效。
A: 一般有两种可能。1. 已知地灵殿肯定无效。 2. 你在cutom.exe里勾选了”不使用DirectInput获取按键输入"。
2018年08月21日 05点08分 4
2018年08月21日 11点08分
level 13
下崽
------------------
github:
/wz520/thkmc/release
毒盘:
/s/1L0o_GfMGP5QvMh-WQpcZsw mima: fuyu
2018年08月21日 05点08分 6
更新到 1.30 版, 毒盘地址请见32楼
2019年05月29日 16点05分
1.10版: s/1F2c-SQ32Fe7wys29jOSC1Q mima: 47iv
2018年11月30日 12点11分
1.00版下载链接作废。目前更新到1.20版: s/1KIM1-zqAwXGZQ5gz5IFUpw mima: a9ic
2018年12月15日 09点12分
level 14
是……是大佬[惊哭]
2018年08月21日 05点08分 7
level 13
已收藏,感谢楼主
2018年08月21日 05点08分 8
level 13
3楼的使用方法被删,换个图片版的
2018年08月21日 06点08分 10
请问解压后三个文件没有thkmc.exe是怎么回事?
2019年02月01日 09点02分
@多喝敬酒 请检查是不是被杀毒软件“自作聪明”地删掉了
2019年02月02日 03点02分
@天使的枷锁 应该没有,我在压缩包解压前查看文件时就没有,也没有收到杀毒通知,如果是误报应该是把整个压缩包都删掉,而不是只定向删除1个还未解压的文件
2019年02月04日 12点02分
@多喝敬酒 你是在这里下的吗? → “s/1KIM1-zqAwXGZQ5gz5IFUpw mima: a9ic”
2019年02月05日 07点02分
level 13
2018年08月21日 06点08分 11
level 13
2018年08月21日 06点08分 12
level 12
咱不是已经有Keymap了吗?[呼~]
2018年08月21日 09点08分 13
那是外挂程序,和这个不一样
2018年08月21日 09点08分
@天使的枷锁 有什么区别?
2018年08月21日 09点08分
@VicViperT300 这程序直接修改游戏主程序,以后运行游戏时不需要同时运行其他程序就可以使用自定义的键位,做到真正的一劳永逸
2018年08月21日 10点08分
@天使的枷锁 嗯,我表示默认键位就可以了,不过也对楼主的辛勤工作表示关心
2018年08月21日 10点08分
level 12
虽然用不到,看不懂,但是似乎是个很不错的东西,滋磁,顺便坐等加精[小乖]
2018年08月21日 10点08分 14
level 13
好东西滋瓷一个()
2018年08月21日 10点08分 16
level 13
好东西啊[惊哭]
2018年08月21日 10点08分 17
level 14
用ahk行吗?用文本配置的话,可以直接用ahk的吧
2018年08月21日 10点08分 18
什么意思?这程序是用AHK写的没错,但AHK自身提供的快捷键设定(双冒号语法)功能只能做出普通的外挂改键工具。此类工具遍地都是,而且大多都比直接用AHK写的效率高。我这个工具最核心的功能是根据用户的设定拼出机器码并写到EXE文件中相应的偏移上,原理完全不同。其实属于一个给EXE打补丁的工具。
2018年08月21日 11点08分
@天使的枷锁 原来如此
2018年08月21日 11点08分
level 16
太触了
2018年08月21日 12点08分 19
1 2 3 尾页