东方吧 关注:486,866贴子:13,419,508
  • 11回复贴,共1

【原创】THKMC - 东方STG专用键盘映射修改工具

取消只看楼主收藏回复





本程序通过直接修改游戏主程序来自定义游戏键位。


为了节约你的时间,先声明一下:本程序暂不支持以下东方STG游戏:
* 花映冢
* 地灵殿
* 天空璋
* 秘封噩梦日记


第一个基本放弃(要处理两个人的输入,有些逻辑不好弄);
第二个因为2un留下了个此作独有的BUG所以比较复杂,得慢慢来;
最后两个如果这个程序经大家测试比较稳定了就尝试加入支持。


回复
1楼2018-08-21 13:24
    ## 功能


    众所周知,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


    回复(3)
    2楼2018-08-21 13:24
      关于 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获取按键输入"。


      回复(1)
      4楼2018-08-21 13:27
        下崽
        ------------------
        github:
        /wz520/thkmc/release
        毒盘:
        /s/1L0o_GfMGP5QvMh-WQpcZsw mima: fuyu


        回复(3)
        6楼2018-08-21 13:30
          3楼的使用方法被删,换个图片版的




          收起回复
          10楼2018-08-21 14:27



            回复
            11楼2018-08-21 14:28



              回复
              12楼2018-08-21 14:28
                该楼层疑似违规已被系统折叠 查看此楼


                回复
                28楼2018-12-15 17:42
                  更新到 1.30,支持鬼形兽体验版


                  收起回复
                  32楼2019-05-24 12:55
                    更新到 1.40,主要支持鬼形兽 1.00b。
                    另外从该版本起 thkmc.ini 中的 键位映射设置 与 程序配置 分离。程序配置项(即 [thkmc] 段下的内容,其实也就2个设置项)会以后会使用 config.ini 来保存;键位映射设置仍使用 thkmc.ini。第一次使用新版本 THKMC 时程序会自动升级配置文件,用户无需重新做相关设置。升级后原先 thkmc.ini 的 [thkmc] 段下的设置不再使用,但不会自动删除。有强迫症的童鞋可以自行手动删除


                    收起回复
                    35楼2019-08-20 19:44
                      1.40:

                      s/177nMYcqw9agr8RZS0xZBLA wjmf


                      收起回复
                      39楼2020-02-11 15:11
                        做了一个辅助编写 thkmc.ini 的小工具,有这个就不需要自己去查 KeyNamesDX.ahk

                        https://tieba.baidu.com/p/6505890025


                        回复
                        40楼2020-02-22 13:17