Skip to content

rubujo/InputBox

Repository files navigation

輸入框(InputBox)

Windows 11 22H2 (Build 22621+) .NET Runtime 程式語言 遊戲控制器 API 授權

一款適用於 Windows 電競掌機的文字輸入輔助應用程式,用於改善在《FINAL FANTASY XIV 繁體中文版》遊戲環境中,於特定操作情境下無法直接使用 Windows 觸控式鍵盤輸入中文的使用體驗。

一、功能說明

  • 輔助輸入:提供單一文字方塊,方便使用控制器開啟 Windows 觸控式鍵盤(TabTip.exe)並輸入文字。
    • 需要配合輸入法(微軟注音微軟倉頡Microsoft 速成)的「遊戲控制器」鍵盤配置使用。
    • 此鍵盤配置為 Windows 11 在部分版本中提供的系統功能,並採用微軟的 Controlled Feature Rollout(CFR) 分階段下放機制。
      • 實際可用性可能因系統版本、裝置與功能下放進度而異。
  • 支援全域快速鍵:可快速喚出應用程式,具備快速鍵註冊衝突自動回退機制。
  • 智慧邊界彈回:當視窗因拖曳、解析度變更或 DPI 縮放而超出螢幕範圍時,會自動彈回可視區域內。
  • 支援不透明度調整:可自訂視窗透明度(50% ~ 100%),並支援手把快捷組合鍵快速微調。
    • 視覺安全保護:當系統開啟「高對比」模式時,不透明度將強制鎖定為 100%,以確保最佳可讀性。
  • 支援 XInput 與 GameInput 控制器 API
    • XInput:適用於 Xbox 控制器及絕大多數模擬控制器。(預設)
    • GameInput:支援現代標準,無控制器數量限制。
      • 本應用程式具備自動退避機制GameInput 初始化失敗將自動切換至 XInput)。
  • 隱私模式:支援不記錄輸入內容的隱私模式。開啟瞬間將自動清空目前的輸入框與歷程記錄,提供最高等級的防偷窺保護(可於右鍵選單切換)。
  • 支援輸入歷程記錄:僅存在於記憶體中,關閉程式即清除。
  • 多控制器自動切換:支援同時連接多個控制器,並能自動偵測並切換至目前正在活動(有按鍵或搖桿操作)的裝置。
  • 動態標題資訊:視窗標題列會即時顯示目前使用的控制器 API(XInput/GameInput)與硬體裝置名稱。

二、系統要求與相容性

  • 作業系統:Windows 11 22H2(Build 22621)以上版本。
    • 本需求僅代表本應用程式本身的最低執行環境;部分系統功能(如「遊戲控制器」鍵盤配置)可能採用分階段下放,實際可用性視系統狀況而定。
  • 控制器 API 支援
    • XInput:系統原生支援,無需額外安裝。
    • GameInput:系統需具備 GameInput 執行階段
      • 多數 Windows 11 系統已內建 GameInput 執行階段;若系統未提供或載入失敗,本應用程式會自動退避至 XInput 相容模式。
      • 可轉散發組件(選用):可透過微軟 Microsoft.GameInput NuGet 套件取得。
        • 安裝方式:執行套件 redist 目錄下的 GameInputRedist.msi

三、使用方式

1. 鍵盤操作

  • Ctrl + Alt + Shift + I(預設):全域快速鍵,用於顯示本應用程式。(可於設定檔中自訂修改)
    • 需先啟動並在背景執行後,快速鍵才會生效。
  • Enter
    • 文字方塊為空時:開啟 Windows 觸控式鍵盤(TabTip.exe)。
    • 文字方塊有文字時:將文字複製到 Windows 剪貼簿,並在系統允許的情況下,將焦點切換回先前的前景視窗。
  • Alt + A:功能等同於 Enter
  • Alt + B:不複製直接返回前一個視窗。(與控制器 LB + RB + B 對等)
  • Shift + Enter:換行。
  • ESC 鍵:清除輸入。若輸入框已為空,則直接返回前一個視窗。
  • 方向鍵 ↑滑鼠滾輪:瀏覽輸入歷程記錄。

2. 控制器操作(XInput/GameInput)

  • A 鍵:多功能確認鍵。
    • 文字方塊有文字時:執行確認(複製並返回)。
    • 文字方塊為空時開啟功能選單(方便單手快速存取設定)。
    • 選單開啟時:執行選取項目或展開子選單
  • B 鍵:取消/清除。
    • 選單開啟時退回上一層選單或關閉選單。
    • 文字輸入時:清除目前輸入內容。
  • X 鍵:刪除選取文字或游標前一個字元。
    • 功能等同鍵盤 Backspace
  • Y 鍵:開啟右鍵選單(智慧功能選單)。
  • 方向鍵 ↑:瀏覽輸入歷程記錄。
  • 方向鍵 ←:移動輸入游標。
  • 左搖桿:功能等同鍵盤方向鍵
    • 用於瀏覽輸入歷程記錄或移動游標。
  • Start 鍵:情境智慧切換。
    • 文字方塊未取得焦點時:將焦點拉回文字方塊(焦點救援)。
    • 文字方塊已取得焦點時:功能等同控制器 A 鍵,可開啟 Windows 觸控式鍵盤(TabTip.exe)或複製文字到 Windows 剪貼簿。
  • Back 鍵:嘗試將焦點切換回先前的前景視窗。
  • 按住 LB 與 RB 不放,再按下 B 鍵:功能等同於控制器 Back 鍵
    • 避免誤觸 Back 鍵時意外切換回先前的前景視窗。
  • 按住 LB 與 RB 不放,再按下 X 鍵:快速結束並關閉應用程式。
  • 不透明度調整組合鍵
    • 按住 Back 鍵 + 方向鍵 ↑/↓:即時增加或減少視窗不透明度(每次增減 5%)。
    • 按住 Back 鍵 + X 鍵:將視窗不透明度重設為 100%。

3. 右鍵選單與對話框控制器操作

右鍵選單數值輸入對話框開啟時,控制器行為會自動切換為導覽模式:

  • 右鍵選單導覽
    • 方向鍵 ↑/↓:上下移動選取項目。
    • 方向鍵 ←/→:進入(或按控制器 A 鍵)或退出(或按控制器 B 鍵)子選單。
    • A 鍵/Start 鍵:執行選取的項目。
    • B 鍵/Back 鍵:關閉選單。
  • 數值輸入對話框操作
    • 方向鍵 ↑/↓:增加或減少數值。
    • A 鍵/Start 鍵或鍵盤 Alt + A:確認。
    • B 鍵或鍵盤 Alt + B:取消。
    • X 鍵或鍵盤 Alt + X:重設為預設值。

4. 右鍵選單操作(滑鼠/觸控)

在應用程式的文字輸入框上按下滑鼠右鍵,即可喚出功能選單:

  • 隱私模式:切換是否記錄輸入歷程。開啟時標題列會顯示 (🔒) 符號,且未來的輸入內容皆不會存入歷程記錄中。為確保最高安全性,開啟的瞬間將自動清空目前的輸入框與所有已儲存的歷程記錄,防止舊資料因誤觸而洩漏。
  • 快速鍵設定
    • 修飾鍵組合:可直接勾選 AltCtrlShiftWin 鍵作為快速鍵的修飾部分。
    • 擷取主要按鍵:點選後,應用程式會進入擷取狀態,此時按下鍵盤上的任一按鍵即可將其設定為喚出快速鍵的主要按鍵(按下鍵盤 ESC 鍵 或控制器 B 鍵 可取消擷取)。
  • 清除歷程:手動清空目前儲存在記憶體中的所有輸入歷程記錄。

5. 設定

本應用程式的設定檔會在第一次執行時自動產生。若需要調整震動強度、視窗還原延遲等參數,請修改此檔案。

(1) 設定檔位置

設定檔位於使用者的應用程式資料夾中:

  • 路徑%AppData%\InputBox\appsettings.json
  • 快速存取方式
    1. 按下 Win + R 開啟執行視窗。
    2. 輸入 %AppData%\InputBox 並按下 Enter。
    3. 將會看到 appsettings.json 檔案。

(2) 設定項目說明

可使用任何文字編輯器(如 Windows NotepadVisual Studio Code)開啟 appsettings.json 進行編輯。

下表列出所有可調整的設定項目及其行為說明。

分類 參數名稱 類型 預設值 有效範圍 說明
視窗操作 WindowOpacity 浮點數 1.0 0.5 ~ 1.0 視窗不透明度。當系統開啟「高對比」模式時,此值會被強制視為 1.0 以維護視覺安全。
WindowRestoreDelay 整數(毫秒) 50 0 ~ 5000 還原視窗的緩衝時間(毫秒),電腦較慢者可調大此值以避免視窗全黑。
ClipboardRetryDelay 整數(毫秒) 20 0 ~ 1000 剪貼簿鎖定時的重試基礎間隔(毫秒)。
TouchKeyboardDismissDelay 整數(毫秒) 300 0 ~ 5000 觸控鍵盤關閉後的緩衝時間(毫秒)。
WindowSwitchBufferBase 整數(毫秒) 150 0 ~ 5000 切換回遊戲視窗前的基礎等待時間(毫秒)。
隨機化設定 InputJitterRange 整數(毫秒) 50 0 ~ 1000 視窗焦點切換的隨機抖動範圍(毫秒)。用於使操作行為更接近人類,避免被部分環境視為自動化操作。
操作體驗調整 IsPrivacyMode 布林值 false - 是否開啟隱私模式(truefalse)。開啟後標題列會顯示 (🔒) 且不記錄輸入歷程。
控制器 API GamepadProviderType 字串 "XInput" - 選擇底層控制器輸入 API:"XInput""GameInput"。若 GameInput 初始化失敗將自動退避至 XInput。
ThumbDeadzoneEnter 整數 7849 0 ~ 30000 XInput 標準值(0~32767),無單位。搖桿推動觸發閾值。若控制器搖桿因磨損而產生偏移,可提高此值。
ThumbDeadzoneExit 整數 2500 0 ~ 30000 XInput 標準值(0~32767),無單位。搖桿回彈重置閾值。此值必須顯著低於觸發閾值以防止抖動。
RepeatInitialDelayFrames 整數(幀) 30 1 ~ 300 長按方向鍵時,開始重複輸入前的延遲(幀)。1 幀約為 16.6ms(60 FPS)。
RepeatIntervalFrames 整數(幀) 5 1 ~ 100 長按方向鍵時的重複速度(幀),數值越小越快。1 幀約為 16.6ms(60 FPS)。
HistoryCapacity 整數 100 1 ~ 1000 輸入歷程記錄的最大保存筆數。
回饋 EnableVibration 布林值 true - 是否啟用控制器震動回饋(truefalse)。
VibrationIntensity 浮點數 1.0 0.0 ~ 1.0 全域震動強度(0.0 ~ 1.0)。若覺得震動太強可改為 0.5
快速鍵 HotKeyModifiers 字串 "Alt, Control, Shift" - 喚醒輸入框的修飾鍵組合。可填寫:AltControlShiftWin,多個修飾鍵請以逗號隔開。例如 Win + Ctrl + I 請設為 "Win, Control"
HotKeyKey 字串 "I" - 喚醒輸入框的主要按鍵(支援按鍵名稱如 "I" 或虛擬鍵碼如 "73")。

注意 1:修改設定後,請重新啟動程式以套用變更。

注意 2:本應用程式具備「自動數值保護機制」。若手動在 appsettings.json 中設定了超出「有效範圍」的數值,程式會在啟動或讀取時,自動將該數值修正回最接近的合理界限內,以確保系統穩定性。

注意 3:程式具備「搖桿死區遲滯(Hysteresis)機制」,會自動確保重置閾值與觸發閾值間有足夠緩衝,避免搖桿老化導致的輸入抖動。

四、震動回饋說明

本應用程式提供細膩的震動回饋以增進操作直覺:

  • 短促點擊感:移動游標、導覽輸入歷程、或在選單中切換項目時觸發。
  • 明確確認感:文字成功複製到剪貼簿、或視窗成功切換回目標視窗時觸發。
  • 狀態重置感:清空文字輸入框、或將不透明度重設為 100% 時觸發。
  • 強烈警告感:操作發生錯誤、輸入歷程到底/到頂、或寫入剪貼簿失敗時觸發。

五、疑難排解

1. Windows 觸控式鍵盤不會在輸入(鍵盤 Enter 鍵/控制器 A 鍵)後自動關閉

這是觸控式鍵盤(TabTip.exe)的系統行為,本應用程式不會強制將其關閉。若要將其關閉,請按一下右上角的 X 按鈕,或使用控制器的 B 鍵。

若需使用控制器 B 鍵關閉觸控式鍵盤,可將其「鍵盤配置」設定為「遊戲控制器」。

2. 從 Xbox 全螢幕體驗切換回 Windows 桌面後,應用程式視窗過大

可手動縮放視窗大小(使用手指或滑鼠)。

3. Windows 觸控式鍵盤不會顯示

請檢查以下設定:

Windows 設定 → 時間與語言 → 輸入 → 觸控式鍵盤 → 「顯示觸控式鍵盤」的選項。

若需讓觸控式鍵盤一律顯示,可將此選項設定為「一律」。

4. 在桌面環境下使用「搖桿模擬滑鼠」拖曳視窗時,發生卡頓或功能失效

此現象主要發生在 ROG Ally 系列掌機,由於本應用程式支援控制器 API(GameInput/XInput),若 Armory Crate SE(ACSE) 的控制模式設為「自動」,且已手動將本應用程式的操作配置設定為「遊戲控制器」,系統會在視窗開啟時自動將配置切換為「遊戲控制器」模式。

這會導致原本在桌面環境下用於模擬滑鼠游標的搖桿功能失效(轉為傳送原生控制器訊號),進而造成無法透過搖桿模擬滑鼠來拖曳視窗。

解決方法

  • Armory Crate SE 的控制模式手動改為「桌面」。
  • 直接使用觸控螢幕進行拖曳操作。

六、應用程式的設計原則

本應用程式遵循以下設計原則:

  1. 不與任何遊戲或應用程式進行互動。
  2. 不讀取、不修改、不注入任何第三方程式。
  3. 不模擬鍵盤或滑鼠輸入。
  4. 不自動貼上內容至其他視窗。
    • 僅複製至 Windows 剪貼簿。
  5. 不偵測或識別任何特定應用程式。
  6. 僅在使用者主動操作時,開啟 Windows 觸控式鍵盤(TabTip.exe)。
  7. 本應用程式視窗預設為最上層顯示(TopMost),以確保在全螢幕或控制器操作環境下不被其他視窗遮擋。

總結而言,本應用程式之運作邏輯與系統內建之「記事本」或「剪貼簿管理員」本質相同,僅作為文字中轉使用,不具備任何修改、攔截或代理目標程式功能之能力。本專案僅設計為解決特定硬體環境下操作不便之一般性輔助應用程式。

七、關於 Microsoft SmartScreen 與防毒軟體提示

本應用程式為第三方應用程式,未經 Microsoft Store 發佈,亦未以商業程式碼簽章憑證簽署。

因此,在首次下載或執行時,Microsoft SmartScreen 或部分防毒軟體可能會顯示「未受信任」或相關安全性警告。

本應用程式遵循前述設計原則,是否下載、執行或使用本應用程式,請依個人需求與環境自行評估。

八、編譯與發佈

本專案基於 .NET(C#)開發,支援透過 Visual Studio 或 .NET CLI 進行編譯與發佈。為了提供最便利的使用者體驗,建議發佈為「獨立的單一執行檔」。

1. 使用 .NET CLI 發佈

請開啟終端機或命令提示字元,並切換至原始碼目錄(即 src\InputBox 資料夾下),執行以下指令:

dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:PublishReadyToRun=true

參數說明:

  • -c Release:以 Release 模式進行建置。編譯器會對程式碼進行最大程度的最佳化,並移除除錯資訊,使應用程式執行速度更快、資源佔用更低。
  • -r win-x64:指定目標執行階段為 Windows 64 位元作業系統。
  • --self-contained true:啟用獨立式部署。這會將底層的 .NET 執行階段與應用程式一併打包,使用者無需在電腦上預先安裝任何 .NET 環境即可直接執行。
  • -p:PublishSingleFile=true:啟用單一檔案發佈。會將應用程式本身及其所有依賴的函式庫全部打包進單一個 .exe 執行檔中,讓資料夾保持乾淨,方便使用者複製或分享。
  • -p:PublishReadyToRun=true:啟用 ReadyToRun 預先編譯。這會在建置時提前將部分程式碼編譯為原生機器碼,減少執行時即時編譯的負擔,能顯著縮短應用程式的冷啟動時間,讓喚出輸入框的反應更迅速。

發佈完成後,編譯好的單一執行檔會生成在以下路徑:

bin\Release\net10.0-windows\win-x64\publish\InputBox.exe

2. 使用 Visual Studio 發佈

  1. 在 Visual Studio 的「方案總管」中,右鍵點擊 InputBox 專案,選擇 [發佈]
  2. 若您已經有匯入專案內的 *.pubxml,請直接點擊 [發佈] 按鈕。
  3. 若需手動設定,請選擇目標為 資料夾,並在「顯示所有設定」中設定以下參數:
    • 部署模式:獨立式
    • 目標執行階段:win-x64
    • 展開「檔案發行選項」,勾選 [產生單一檔案][啟用 ReadyToRun 編譯]
  4. 點擊 [儲存] 後再點擊 [發佈] 即可。

九、聲明

  1. 本應用程式使用 AI 服務輔助開發、翻譯、圖示生成與文件撰寫。
  2. 本應用程式依賴 TabTip.exe 以開啟 Windows 觸控式鍵盤,僅支援於 Windows 11 22H2(Build 22621)以上版本執行。
    • 實際系統功能(如觸控式鍵盤行為或鍵盤配置)可能因系統版本與功能下放狀況而有所差異。
  3. 本應用程式為非官方第三方應用程式,與任何遊戲或服務之開發商、發行商、代理商或營運單位皆無關聯,且無法保證在任何特定遊戲或服務環境中皆能符合使用者的操作需求或使用情境。
  4. 使用本應用程式所產生的任何後果,皆由使用者自行承擔。

十、授權條款

本專案本體採用 CC0 1.0 Universal 宣告釋出至公眾領域。

您可以自由地複製、修改、發佈或執行本應用程式(含原始碼),完全無需取得授權

第三方函式庫授權聲明

本應用程式使用了以下第三方函式庫,其權利歸原作者所有並遵循各自之授權條款:

本專案的詳細條款與免責聲明,請參閱隨附之 LICENSE 文件;關於第三方套件之完整版權宣告與授權文字,請參閱隨附於發佈壓縮檔內之 ThirdPartyNotices.txt 文件以及各框架專屬授權文件。

About

一款適用於 Windows 電競掌機的文字輸入輔助應用程式,用於改善在《FINAL FANTASY XIV 繁體中文版》遊戲環境中,於特定操作情境下無法直接使用 Windows 觸控式鍵盤輸入中文的使用體驗。

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages