东方吧 关注:636,160贴子:17,264,458

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

只看楼主收藏回复


本程序通过直接修改游戏主程序来自定义游戏键位。
为了节约你的时间,先声明一下:本程序暂不支持以下东方STG游戏:
* 花映冢
* 地灵殿
* 天空璋
* 秘封噩梦日记
第一个基本放弃(要处理两个人的输入,有些逻辑不好弄);
第二个因为2un留下了个此作独有的BUG所以比较复杂,得慢慢来;
最后两个如果这个程序经大家测试比较稳定了就尝试加入支持。


IP属地:上海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


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


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


        IP属地:上海6楼2018-08-21 13:30
        回复(3)
          是……是大佬


          IP属地:福建来自Android客户端7楼2018-08-21 13:31
          回复
            已收藏,感谢楼主


            IP属地:上海来自Android客户端8楼2018-08-21 13:34
            回复
              3楼的使用方法被删,换个图片版的




              IP属地:上海10楼2018-08-21 14:27
              收起回复



                IP属地:上海11楼2018-08-21 14:28
                回复



                  IP属地:上海12楼2018-08-21 14:28
                  回复
                    咱不是已经有Keymap了吗?


                    来自Android客户端13楼2018-08-21 17:53
                    收起回复
                      虽然用不到,看不懂,但是似乎是个很不错的东西,滋磁,顺便坐等加精


                      IP属地:福建来自Android客户端14楼2018-08-21 18:14
                      回复
                        好东西滋瓷一个()


                        IP属地:陕西16楼2018-08-21 18:20
                        回复
                          好东西啊


                          IP属地:福建来自Android客户端17楼2018-08-21 18:54
                          回复
                            用ahk行吗?用文本配置的话,可以直接用ahk的吧


                            IP属地:江苏来自Android客户端18楼2018-08-21 18:57
                            回复(2)
                              太触了


                              IP属地:广东来自iPhone客户端19楼2018-08-21 20:53
                              回复