Skip to content

Commit 4b43663

Browse files
authored
Update test.html
1 parent 98451cb commit 4b43663

1 file changed

Lines changed: 32 additions & 6 deletions

File tree

test.html

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@ <h2>輸入法模式:</h2>
416416
const searchInput = document.getElementById('search-input');
417417
const searchResult = document.getElementById('search-result');
418418
const modeDisplay = document.getElementById('mode-display');
419+
const allKeys = document.querySelectorAll('.key');
419420

420421
// --- 載入碼表檔案(已修復) ---
421422
async function loadCodemap(filePath) {
@@ -575,8 +576,13 @@ <h2>輸入法模式:</h2>
575576
'a': 'a', 's': 's', 'd': 'd', 'f': 'f', 'g': 'g', 'h': 'h', 'j': 'j', 'k': 'k', 'l': 'l',
576577
'z': 'z', 'x': 'x', 'c': 'c', 'v': 'v', 'b': 'b', 'n': 'n', 'm': 'm'
577578
};
578-
579579
const inputKey = keyMap[key] || key;
580+
581+
// 處理按鍵反白效果
582+
const pressedKey = document.querySelector(`.key[data-code='${inputKey}']`);
583+
if (pressedKey) {
584+
pressedKey.classList.add('active');
585+
}
580586

581587
// 處理 Shift 鍵切換模式
582588
if (event.key === "Shift") {
@@ -601,23 +607,43 @@ <h2>輸入法模式:</h2>
601607
}
602608

603609
// 在中文模式下處理
604-
if (inputKey) {
610+
// 修正:處理數字鍵的邏輯
611+
if (event.key >= '0' && event.key <= '9') {
605612
event.preventDefault(); // 阻止瀏覽器默認行為
606-
handleKey(inputKey);
607-
} else if (event.key >= '1' && event.key <= '9') {
608613
const index = parseInt(event.key, 10) - 1;
609-
if (index < currentCandidates.length) {
614+
if (currentCandidates.length > 0 && index >= 0 && index < currentCandidates.length) {
615+
// 有候選字,且數字鍵在範圍內,則選字
610616
output.textContent += currentCandidates[index];
611617
resetInputState();
618+
} else {
619+
// 無候選字,直接輸出數字
620+
output.textContent += event.key;
621+
resetInputState();
612622
}
623+
} else if (inputKey) {
624+
event.preventDefault(); // 阻止瀏覽器默認行為
625+
handleKey(inputKey);
613626
} else if (event.key.length === 1) { // 處理未映射的單個字元
614627
output.textContent += event.key;
615628
}
616629
});
630+
631+
// 監聽實體鍵盤放開事件,移除按鍵反白
632+
document.addEventListener('keyup', (event) => {
633+
const key = event.key.toLowerCase();
634+
const keyMap = {
635+
// ... key mappings
636+
};
637+
const releasedKey = keyMap[key] || key;
638+
const releasedKeyDiv = document.querySelector(`.key[data-code='${releasedKey}']`);
639+
if (releasedKeyDiv) {
640+
releasedKeyDiv.classList.remove('active');
641+
}
642+
});
617643

618644
// 處理鍵盤與物理鍵盤的共用邏輯
619645
function handleKey(key) {
620-
const validCodeKeys = "1234567890abcdefghijklmnopqrstuvwxyz;',./";
646+
const validCodeKeys = "abcdefghijklmnopqrstuvwxyz;',./";
621647

622648
if (validCodeKeys.includes(key) && currentCode.length < 3) {
623649
currentCode += key;

0 commit comments

Comments
 (0)