Ctrl+Enter 快捷鍵新增確認功能

為了實現你的需求,我們需要在 JavaScript 中添加一個全域的鍵盤事件監聽器,專門捕捉 Ctrl + Enter 組合鍵。當該組合鍵被觸發時,程式會根據當前的狀態(編輯、導出文本、或速度設置模式)自動調用對應的「確認」函數。

以下是需要修改的具體地方:

1. 在 script 標籤內的初始化區域添加鍵盤監聽器

請將以下代碼添加到 script 標籤中,建議放在 window.addEventListener('load', ...) 之前或其內部的初始化邏輯中。

JavaScript

/**
* Global keyboard listener for Ctrl+Enter to trigger confirm actions.
*/
document.addEventListener('keydown', function(e) {
   if (e.ctrlKey && e.key === 'Enter') {
       // 1. Check if in Edit Mode
       if (isEditMode) {
           const confirmBtn = document.getElementById('edit-confirm');
           if (confirmBtn) {
               exitEditModeConfirm();
               return;
           }
       }

       // 2. Check if in Export Text Mode
       if (isExportTextMode) {
           const confirmBtn = document.getElementById('export-confirm');
           if (confirmBtn) {
               // Assuming clicking the confirm button exits the mode
               exitExportTextMode();
               return;
           }
       }

       // 3. Check if in Speed/Interval Adjustment Mode
       // (If these use the same UI buttons as Edit Mode)
       const genericConfirm = document.querySelector('.btn-confirm');
       if (genericConfirm && genericConfirm.offsetParent !== null) {
           genericConfirm.click();
       }
   }
});

2. 確保導出文本模式有對應的退出函數

在 renderExportTextUI 函數生成的 HTML 中,請確保 confirm 按鈕的 ID 為 export-confirm。

JavaScript

// Inside renderExportTextUI function, modify the btnDiv.innerHTML section:
btnDiv.innerHTML = `
   <div class="ejceestextbtninner">
       <div class="note-btn btn-confirm" id="export-confirm" title="Confirm">
           <svg viewBox="0 0 24 24"><path fill="#4CAF50" d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"/></svg>
       </div>
   </div>
`;

// Add the click listener for the export confirm button
document.getElementById('export-confirm').addEventListener('click', exitExportTextMode);

/**
* Function to exit Export Text Mode
*/
function exitExportTextMode() {
   isExportTextMode = false;
   renderRecordUI();
   renderNoteUI();
   updateToolHighlights();
}

3. 邏輯說明

  • isEditMode: 當此變量為 true 時,按下 Ctrl + Enter 會執行 exitEditModeConfirm(),這與點擊綠色勾號按鈕的效果一致。
  • isExportTextMode: 當處於導出文本界面時,觸發 exitExportTextMode() 回到原始界面。
  • offsetParent !== null: 這個檢查確保我們只在該按鈕目前在畫面上可見(即該模式處於開啟狀態)時才執行點擊動作。

這樣修改後,無論是在編輯棋局、查看導出文本,還是調整參數(只要該模式顯示了確認按鈕),使用者都可以通過 Ctrl + Enter 快速完成操作。