@jjlmoya/utils-hardware 1.23.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/package.json +2 -1
  2. package/src/category/index.ts +4 -1
  3. package/src/entries.ts +10 -1
  4. package/src/index.ts +3 -0
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/keyboardChatterTest/bibliography.astro +15 -0
  8. package/src/tool/keyboardChatterTest/bibliography.ts +20 -0
  9. package/src/tool/keyboardChatterTest/component.astro +353 -0
  10. package/src/tool/keyboardChatterTest/entry.ts +30 -0
  11. package/src/tool/keyboardChatterTest/i18n/de.ts +232 -0
  12. package/src/tool/keyboardChatterTest/i18n/en.ts +232 -0
  13. package/src/tool/keyboardChatterTest/i18n/es.ts +232 -0
  14. package/src/tool/keyboardChatterTest/i18n/fr.ts +232 -0
  15. package/src/tool/keyboardChatterTest/i18n/id.ts +232 -0
  16. package/src/tool/keyboardChatterTest/i18n/it.ts +232 -0
  17. package/src/tool/keyboardChatterTest/i18n/ja.ts +232 -0
  18. package/src/tool/keyboardChatterTest/i18n/ko.ts +232 -0
  19. package/src/tool/keyboardChatterTest/i18n/nl.ts +232 -0
  20. package/src/tool/keyboardChatterTest/i18n/pl.ts +232 -0
  21. package/src/tool/keyboardChatterTest/i18n/pt.ts +232 -0
  22. package/src/tool/keyboardChatterTest/i18n/ru.ts +232 -0
  23. package/src/tool/keyboardChatterTest/i18n/sv.ts +232 -0
  24. package/src/tool/keyboardChatterTest/i18n/tr.ts +232 -0
  25. package/src/tool/keyboardChatterTest/i18n/zh.ts +232 -0
  26. package/src/tool/keyboardChatterTest/index.ts +12 -0
  27. package/src/tool/keyboardChatterTest/keyboard-chatter-test.css +512 -0
  28. package/src/tool/keyboardChatterTest/logic.ts +23 -0
  29. package/src/tool/keyboardChatterTest/seo.astro +16 -0
  30. package/src/tool/keyboardChatterTest/ui.ts +34 -0
  31. package/src/tool/stereoAudioTest/bibliography.astro +14 -0
  32. package/src/tool/stereoAudioTest/bibliography.ts +16 -0
  33. package/src/tool/stereoAudioTest/component.astro +251 -0
  34. package/src/tool/stereoAudioTest/entry.ts +29 -0
  35. package/src/tool/stereoAudioTest/i18n/de.ts +229 -0
  36. package/src/tool/stereoAudioTest/i18n/en.ts +229 -0
  37. package/src/tool/stereoAudioTest/i18n/es.ts +229 -0
  38. package/src/tool/stereoAudioTest/i18n/fr.ts +229 -0
  39. package/src/tool/stereoAudioTest/i18n/id.ts +229 -0
  40. package/src/tool/stereoAudioTest/i18n/it.ts +229 -0
  41. package/src/tool/stereoAudioTest/i18n/ja.ts +229 -0
  42. package/src/tool/stereoAudioTest/i18n/ko.ts +229 -0
  43. package/src/tool/stereoAudioTest/i18n/nl.ts +229 -0
  44. package/src/tool/stereoAudioTest/i18n/pl.ts +229 -0
  45. package/src/tool/stereoAudioTest/i18n/pt.ts +229 -0
  46. package/src/tool/stereoAudioTest/i18n/ru.ts +229 -0
  47. package/src/tool/stereoAudioTest/i18n/sv.ts +229 -0
  48. package/src/tool/stereoAudioTest/i18n/tr.ts +229 -0
  49. package/src/tool/stereoAudioTest/i18n/zh.ts +229 -0
  50. package/src/tool/stereoAudioTest/index.ts +11 -0
  51. package/src/tool/stereoAudioTest/logic.ts +22 -0
  52. package/src/tool/stereoAudioTest/seo.astro +15 -0
  53. package/src/tool/stereoAudioTest/stereo-audio-test.css +411 -0
  54. package/src/tool/stereoAudioTest/ui.ts +24 -0
  55. package/src/tool/webBluetoothBleScanner/bibliography.astro +14 -0
  56. package/src/tool/webBluetoothBleScanner/bibliography.ts +16 -0
  57. package/src/tool/webBluetoothBleScanner/component.astro +339 -0
  58. package/src/tool/webBluetoothBleScanner/entry.ts +29 -0
  59. package/src/tool/webBluetoothBleScanner/i18n/de.ts +233 -0
  60. package/src/tool/webBluetoothBleScanner/i18n/en.ts +233 -0
  61. package/src/tool/webBluetoothBleScanner/i18n/es.ts +233 -0
  62. package/src/tool/webBluetoothBleScanner/i18n/fr.ts +233 -0
  63. package/src/tool/webBluetoothBleScanner/i18n/id.ts +233 -0
  64. package/src/tool/webBluetoothBleScanner/i18n/it.ts +233 -0
  65. package/src/tool/webBluetoothBleScanner/i18n/ja.ts +233 -0
  66. package/src/tool/webBluetoothBleScanner/i18n/ko.ts +233 -0
  67. package/src/tool/webBluetoothBleScanner/i18n/nl.ts +233 -0
  68. package/src/tool/webBluetoothBleScanner/i18n/pl.ts +233 -0
  69. package/src/tool/webBluetoothBleScanner/i18n/pt.ts +233 -0
  70. package/src/tool/webBluetoothBleScanner/i18n/ru.ts +233 -0
  71. package/src/tool/webBluetoothBleScanner/i18n/sv.ts +233 -0
  72. package/src/tool/webBluetoothBleScanner/i18n/tr.ts +233 -0
  73. package/src/tool/webBluetoothBleScanner/i18n/zh.ts +233 -0
  74. package/src/tool/webBluetoothBleScanner/index.ts +11 -0
  75. package/src/tool/webBluetoothBleScanner/logic.ts +79 -0
  76. package/src/tool/webBluetoothBleScanner/seo.astro +15 -0
  77. package/src/tool/webBluetoothBleScanner/ui.ts +41 -0
  78. package/src/tool/webBluetoothBleScanner/web-bluetooth-ble-scanner.css +406 -0
  79. package/src/tools.ts +4 -1
@@ -0,0 +1,232 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { KeyboardChatterTestUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'keyboard-chatter-test';
7
+ const title = 'キーボードチャタリングテスト';
8
+ const description = '同じキーが2回表示される速さをチェックすることで、メカニカルキーボードのチャタリング、ダブルタイピング、不良スイッチのバウンスを検出します。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'キーボードチャタリングとは何ですか?',
13
+ answer: 'キーボードチャタリングは、1回の物理的な押下が複数回の押下として登録されるハードウェア障害です。汚れた、摩耗した、酸化した、またはデバウンスが不十分なメカニカルスイッチでよく発生します。',
14
+ },
15
+ {
16
+ question: 'このキーボードチャタリングテストはどのように機能しますか?',
17
+ answer: '疑わしいキーをゆっくりと1回ずつ押します。ログに数ミリ秒しか間隔のない繰り返し押下が表示された場合、スイッチがバウンスしてダブルレターを生成している可能性があります。',
18
+ },
19
+ {
20
+ question: 'どのデルタ値がキーボードのダブルタイピングを示しますか?',
21
+ answer: '30ms未満の繰り返し押下はチャタリングの疑いが強いです。30〜50msの繰り返しは注意が必要です。通常の意図的な繰り返しは、ほとんどのユーザーで50ms以上です。',
22
+ },
23
+ {
24
+ question: '最初の押下でデルタが表示されないのはなぜですか?',
25
+ answer: 'デルタには同じキーの前回の押下が必要です。最初の押下がベースラインを確立し、その後の押下がミリ秒単位の時間間隔を表示します。',
26
+ },
27
+ {
28
+ question: 'ソフトウェアでキーボードチャタリングを修正できますか?',
29
+ answer: 'デバウンスソフトウェアは一部の症状を隠せますが、スイッチを修理するわけではありません。清掃、ホットスワップスイッチの再装着、スイッチの交換、またはキーボードPCBの修理が必要になる場合があります。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'ツールを開いて通常通りキーを押す',
36
+ text: '開始ボタンはありません。必要に応じてツール内をクリックし、ダブルタイピングしていたキーを押します。',
37
+ },
38
+ {
39
+ name: '疑わしいキーを1回ずつタップする',
40
+ text: 'ダブルタイピングするキーを押します。1回の物理的な押下で小さなデルタを持つ複数のログ行が作成される場合、スイッチがチャタリングしている可能性があります。',
41
+ },
42
+ {
43
+ name: 'カラーコードを読む',
44
+ text: '緑は50ms以上の正常、黄は30〜50msの疑わしい、赤は30ms未満のチャタリング検出を意味します。',
45
+ },
46
+ {
47
+ name: '必要に応じてログをエクスポートする',
48
+ text: 'ダウンロードボタンを使用してCSVログを保存し、キーの比較や断続的な障害の記録に役立てます。',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
83
+ inLanguage: 'ja',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<KeyboardChatterTestUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: 'メカニカルキーボード ダブルタイピングテスト',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: 'このキーボードチャタリングテストは、1回の押下で2文字入力されたり、きれいなリリースを逃したり、意図せずに文字が繰り返されたりするメカニカルキーボードの診断に役立ちます。スイッチの清掃、ファームウェアのデバウンス設定の変更、保証請求の開始、またはホットスワップスイッチの交換前にお使いください。',
103
+ },
104
+ {
105
+ type: 'diagnostic',
106
+ variant: 'info',
107
+ title: '結果の読み方',
108
+ badge: 'デルタしきい値',
109
+ html: '<p><strong>正常</strong>は50ms以上の繰り返しで、通常は意図的なものです。<strong>疑わしい</strong>は30〜50msで、同じキーで再テストする必要があります。<strong>チャタリング検出</strong>は30ms未満で、1回の物理的な押下が複数の電気接点にバウンスした可能性が非常に高いです。</p>',
110
+ },
111
+ {
112
+ type: 'title',
113
+ text: 'メカニカルスイッチがチャタリングする理由',
114
+ level: 3,
115
+ },
116
+ {
117
+ type: 'paragraph',
118
+ html: 'メカニカルスイッチは完全にきれいなデジタル信号として閉じるわけではありません。金属接点は安定する前に数ミリ秒バウンスすることがあります。キーボードファームウェアは通常、デバウンスウィンドウでそのバウンスをフィルタリングします。チャタリングは、接点が汚れ、摩耗、酸化、緩み、ひび割れ、または調整不良で、デバウンスフィルタが処理すべきだった余分な押下をキーボードが報告するときに発生します。',
119
+ },
120
+ {
121
+ type: 'table',
122
+ headers: ['症状', '考えられる原因', '最初に試すこと'],
123
+ rows: [
124
+ ['1つのキーが同じ文字を2回入力する', 'スイッチ接点の汚れまたは摩耗', 'キーキャップを取り外し、ほこりを吹き飛ばしてから、スイッチを交換する前に再テストします。'],
125
+ ['ビルド後に複数のホットスワップキーがチャタリングする', 'スイッチピンがしっかりと装着されていない', 'スイッチを引き抜いて再装着し、曲がったピンや緩いソケットがないか確認します。'],
126
+ ['こぼれや湿気の後でのみ発生する', '接点の酸化または残留物', 'キーボードを取り外し、メーカーのガイダンスに従って清掃します。'],
127
+ ['多くのキーが小さなデルタを示す', 'ファームウェアのデバウンスが低すぎるかスキャンの問題', '別のUSBポートで比較し、利用可能であればファームウェアのデバウンス設定を確認します。'],
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: '誤検出を減らすテスト方法',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ items: [
138
+ '全文を入力する代わりに、疑わしいキーを1つずつテストします。',
139
+ 'キーを1回押し、完全に離してから、次の押下まで少し待ちます。',
140
+ '疑わしいキーを、正常に感じる近くのキーと比較します。',
141
+ '比較する前回の押下がないため、キーの最初の行は無視します。',
142
+ '同じキーが1回のタップから30ms未満の赤い行を繰り返し表示する場合は、ハードウェア障害として扱います。',
143
+ '黄色い行のみが表示される場合は、テストをより遅く繰り返し、タッピングリズムが短い間隔を引き起こしているかどうかを確認します。',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: 'チャタリング vs 意図的な高速タイピング',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'comparative',
153
+ columns: 3,
154
+ items: [
155
+ {
156
+ title: 'チャタリング',
157
+ description: '1つのキーに集中し、しばしば30ms未満で、1回の押下を意図したときに現れます。',
158
+ points: ['スイッチまたはソケットを検査します。', '近くの正常なキーと比較します。'],
159
+ },
160
+ {
161
+ title: '高速タイピング',
162
+ description: '多くのキーに影響し、リズムに従い、同じキーの繰り返し押下間で50ms以上になる傾向があります。',
163
+ points: ['通常の使用です。', 'より遅いシングルタップで再テストします。'],
164
+ },
165
+ {
166
+ title: 'OSキーリピート',
167
+ description: 'キーを押し続けると現れ、通常はオペレーティングシステムによって設定された規則的なリズムで繰り返されます。',
168
+ points: ['タップの間に完全に離します。', 'キーボードリピート設定を別途確認します。'],
169
+ },
170
+ ],
171
+ },
172
+ {
173
+ type: 'title',
174
+ text: 'キーが不合格になった場合の対処法',
175
+ level: 3,
176
+ },
177
+ {
178
+ type: 'list',
179
+ items: [
180
+ '何かを変更する前にCSVログを保存して、前後の結果を比較できるようにします。',
181
+ 'キーキャップを取り外し、汚れ、液体の残留物、またはスムーズに戻らないステムがないか検査します。',
182
+ 'ホットスワップキーボードの場合、スイッチを再装着または交換し、同じ位置を再度テストします。',
183
+ 'はんだ付けキーボードの場合、PCBの修理が必要だと判断する前に、ファームウェアのデバウンスオプションを比較します。',
184
+ '無関係な複数のキーが不可能なデルタを示す場合は、別のケーブルとUSBポートを試します。',
185
+ '保証サポートには、影響を受けるキー、繰り返されるデルタ値、キーボードモデル、ファームウェアバージョン、障害がスイッチに追従するかPCBソケットに追従するかを含めます。',
186
+ ],
187
+ },
188
+ {
189
+ type: 'summary',
190
+ title: 'クイックルール',
191
+ items: [
192
+ '1つの赤い行は手がかりであり、評決ではありません。',
193
+ '同じ物理キーで30ms未満の赤い行が繰り返されることは、キーボードチャタリングの強力な証拠です。',
194
+ 'ハードウェアを交換する前に、意図的なシングルタップを使用し、疑わしいスイッチを近くの正常なキーと比較します。',
195
+ ],
196
+ },
197
+ ],
198
+ ui: {
199
+ statusIdle: '任意のキーを押してください',
200
+ statusListening: 'キーデルタを測定中',
201
+ statusChatter: 'チャタリング検出',
202
+ totalPresses: '総押下数',
203
+ chatterEvents: 'チャタリングイベント',
204
+ worstDelta: '最悪のデルタ',
205
+ watchWindow: '保持行数',
206
+ keyColumn: 'キー',
207
+ deltaColumn: 'デルタ',
208
+ verdictColumn: '判定',
209
+ timeColumn: '時間',
210
+ normal: '正常',
211
+ suspect: '疑わしい',
212
+ chatter: 'チャタリング',
213
+ waiting: '待機中',
214
+ clear: 'ログを消去',
215
+ exportLog: 'CSVエクスポート',
216
+ hint: 'ログは最新の80行を保持するため、長時間のセッションでも高速です。キーを押し続けた場合のリピートは無視され、赤い行は近すぎる別々の押下から発生します。',
217
+ captureNotice: '開始ボタンはありません。疑わしいキーを1回タップし、前回の押下からのデルタを観察します。',
218
+ keyboardAriaLabel: '最近のキーアクティビティ',
219
+ logAriaLabel: 'キーボードチャタリングイベントログ',
220
+ escapeKey: 'Esc',
221
+ backspaceKey: 'Back',
222
+ tabKey: 'Tab',
223
+ enterKey: 'Enter',
224
+ capsLockKey: 'Caps',
225
+ shiftKey: 'Shift',
226
+ controlKey: 'Ctrl',
227
+ metaKey: 'Meta',
228
+ altKey: 'Alt',
229
+ spaceKey: 'Space',
230
+ csvHeader: 'キー,コード,デルタ_ms,深刻度,時刻',
231
+ },
232
+ };
@@ -0,0 +1,232 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { KeyboardChatterTestUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'keyboard-chatter-test';
7
+ const title = '키보드 채터링 테스트';
8
+ const description = '동일한 키가 두 번 나타나는 속도를 확인하여 기계식 키보드의 채터링, 이중 입력 및 결함 있는 스위치 바운스를 감지합니다.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '키보드 채터링이란 무엇인가요?',
13
+ answer: '키보드 채터링은 한 번의 물리적 누름이 여러 번의 누름으로 등록되는 하드웨어 결함입니다. 더럽거나, 마모되었거나, 산화되었거나, 디바운스가 부적절한 기계식 스위치에서 흔히 발생합니다.',
14
+ },
15
+ {
16
+ question: '이 키보드 채터링 테스트는 어떻게 작동하나요?',
17
+ answer: '의심스러운 키를 한 번에 하나씩 천천히 누르세요. 로그에 몇 밀리초 간격으로 반복 누름이 표시되면 스위치가 바운스되어 이중 문자가 생성될 수 있습니다.',
18
+ },
19
+ {
20
+ question: '어떤 델타 값이 키보드 이중 입력을 의미하나요?',
21
+ answer: '30ms 미만의 반복 누름은 채터링이 강력히 의심됩니다. 30~50ms의 반복은 주의가 필요합니다. 정상적인 의도적 반복은 대부분의 사용자에게 50ms 이상입니다.',
22
+ },
23
+ {
24
+ question: '첫 번째 누름에 델타가 표시되지 않는 이유는 무엇인가요?',
25
+ answer: '델타는 동일한 키의 이전 누름이 필요합니다. 첫 번째 누름이 기준선을 설정하고, 이후 누름이 밀리초 단위의 시간 간격을 표시합니다.',
26
+ },
27
+ {
28
+ question: '소프트웨어로 키보드 채터링을 해결할 수 있나요?',
29
+ answer: '디바운스 소프트웨어는 일부 증상을 숨길 수 있지만 스위치를 수리하지는 않습니다. 청소, 핫스왑 스위치 재장착, 스위치 교체 또는 키보드 PCB 수리가 필요할 수 있습니다.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '도구를 열고 정상적으로 키를 누르세요',
36
+ text: '시작 버튼이 없습니다. 필요한 경우 도구 내부를 클릭한 다음 이중 입력이 발생한 키를 누르세요.',
37
+ },
38
+ {
39
+ name: '의심스러운 키를 한 번에 하나씩 탭하세요',
40
+ text: '이중 입력이 발생하는 키를 누르세요. 한 번의 물리적 누름이 작은 델타로 여러 로그 행을 생성하면 스위치가 채터링 중일 가능성이 높습니다.',
41
+ },
42
+ {
43
+ name: '색상 코드를 읽으세요',
44
+ text: '녹색은 50ms 초과의 정상, 노란색은 30~50ms의 의심, 빨간색은 30ms 미만의 채터링 감지를 의미합니다.',
45
+ },
46
+ {
47
+ name: '필요한 경우 로그 내보내기',
48
+ text: '다운로드 버튼을 사용하여 키를 비교하거나 간헐적 결함을 문서화하는 데 도움이 되는 CSV 로그를 저장하세요.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
83
+ inLanguage: 'ko',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<KeyboardChatterTestUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faq: faqData,
91
+ bibliography,
92
+ howTo: howToData,
93
+ schemas: [faqSchema, howToSchema, appSchema],
94
+ seo: [
95
+ {
96
+ type: 'title',
97
+ text: '기계식 키보드 이중 입력 테스트',
98
+ level: 2,
99
+ },
100
+ {
101
+ type: 'paragraph',
102
+ html: '이 키보드 채터링 테스트는 한 번의 누름으로 두 글자를 입력하거나, 깨끗한 릴리스를 놓치거나, 의도적으로 두 번 탭하지 않았는데도 반복 문자가 생성되는 기계식 키보드를 진단하는 데 도움이 됩니다. 스위치 청소, 펌웨어 디바운스 설정 변경, 보증 청구 개시 또는 핫스왑 스위치 교체 전에 사용하세요.',
103
+ },
104
+ {
105
+ type: 'diagnostic',
106
+ variant: 'info',
107
+ title: '결과 읽는 방법',
108
+ badge: '델타 임계값',
109
+ html: '<p><strong>정상</strong>은 반복이 50ms 초과이며 일반적으로 의도적임을 의미합니다. <strong>의심</strong>은 30~50ms이며 동일한 키에서 재테스트해야 합니다. <strong>채터링 감지</strong>는 30ms 미만으로, 한 번의 물리적 누름이 여러 전기 접점으로 바운스되었을 가능성이 매우 높습니다.</p>',
110
+ },
111
+ {
112
+ type: 'title',
113
+ text: '기계식 스위치가 채터링하는 이유',
114
+ level: 3,
115
+ },
116
+ {
117
+ type: 'paragraph',
118
+ html: '기계식 스위치는 완벽하게 깨끗한 디지털 신호로 닫히지 않습니다. 금속 접점은 안정되기 전에 몇 밀리초 동안 바운스할 수 있습니다. 키보드 펌웨어는 일반적으로 디바운스 창으로 그 바운스를 필터링합니다. 채터링은 접점이 더럽거나, 마모되었거나, 산화되었거나, 느슨하거나, 균열되었거나, 잘못 조정되어 디바운스 필터가 처리했어야 할 여분의 누름을 키보드가 보고할 때 발생합니다.',
119
+ },
120
+ {
121
+ type: 'table',
122
+ headers: ['증상', '가능한 원인', '먼저 시도할 것'],
123
+ rows: [
124
+ ['한 키가 같은 문자를 두 번 입력함', '더럽거나 마모된 스위치 접점', '키캡을 제거하고 먼지를 불어낸 후 스위치 교체 전에 다시 테스트하세요.'],
125
+ ['빌드 후 여러 핫스왑 키가 채터링함', '스위치 핀이 깨끗하게 장착되지 않음', '스위치를 뽑아 다시 장착하고 구부러진 핀이나 느슨한 소켓을 확인하세요.'],
126
+ ['유출 또는 습기 후에만 발생함', '접점의 산화 또는 잔류물', '키보드를 분리하고 제조업체 지침에 따라 청소하세요.'],
127
+ ['많은 키가 작은 델타를 표시함', '펌웨어 디바운스가 너무 낮거나 스캔 문제', '다른 USB 포트에서 비교하고 가능한 경우 펌웨어 디바운스 설정을 검토하세요.'],
128
+ ],
129
+ },
130
+ {
131
+ type: 'title',
132
+ text: '오탐지를 줄이는 테스트 방법',
133
+ level: 3,
134
+ },
135
+ {
136
+ type: 'list',
137
+ items: [
138
+ '전체 문장을 입력하는 대신 의심스러운 키를 한 번에 하나씩 테스트하세요.',
139
+ '키를 한 번 누르고 완전히 놓은 후 다음 누름 전에 잠시 기다리세요.',
140
+ '의심스러운 키를 건강하게 느껴지는 근처 키와 비교하세요.',
141
+ '이전 누름이 없어 비교할 수 없으므로 키의 첫 번째 행은 무시하세요.',
142
+ '동일한 키가 단일 탭에서 30ms 미만의 빨간 행을 반복적으로 표시하면 하드웨어 결함으로 처리하세요.',
143
+ '노란 행만 나타나면 테스트를 더 천천히 반복하고 탭 리듬이 짧은 간격을 유발하는지 확인하세요.',
144
+ ],
145
+ },
146
+ {
147
+ type: 'title',
148
+ text: '채터링 vs 의도적 빠른 타이핑',
149
+ level: 3,
150
+ },
151
+ {
152
+ type: 'comparative',
153
+ columns: 3,
154
+ items: [
155
+ {
156
+ title: '채터링',
157
+ description: '한 키에 집중되며, 종종 30ms 미만이고, 한 번의 누름을 의도했을 때 나타납니다.',
158
+ points: ['스위치 또는 소켓을 검사하세요.', '근처의 건강한 키와 비교하세요.'],
159
+ },
160
+ {
161
+ title: '빠른 타이핑',
162
+ description: '많은 키에 영향을 미치고, 리듬을 따르며, 동일한 키의 반복 누름 간에 50ms 이상인 경향이 있습니다.',
163
+ points: ['일반적으로 정상적인 사용입니다.', '더 느린 단일 탭으로 재테스트하세요.'],
164
+ },
165
+ {
166
+ title: 'OS 키 반복',
167
+ description: '키를 누르고 있을 때 나타나며 일반적으로 운영 체제에서 설정한 규칙적인 리듬으로 반복됩니다.',
168
+ points: ['탭 사이에 완전히 놓으세요.', '키보드 반복 설정을 별도로 확인하세요.'],
169
+ },
170
+ ],
171
+ },
172
+ {
173
+ type: 'title',
174
+ text: '키가 실패했을 때 해야 할 일',
175
+ level: 3,
176
+ },
177
+ {
178
+ type: 'list',
179
+ items: [
180
+ '변경하기 전에 CSV 로그를 저장하여 전후 결과를 비교할 수 있도록 하세요.',
181
+ '키캡을 제거하고 먼지, 액체 잔류물 또는 부드럽게 돌아오지 않는 스템이 있는지 검사하세요.',
182
+ '핫스왑 키보드의 경우 스위치를 재장착하거나 교체하고 동일한 위치를 다시 테스트하세요.',
183
+ '납땜된 키보드의 경우 PCB 수리가 필요하다고 가정하기 전에 펌웨어 디바운스 옵션을 비교하세요.',
184
+ '관련 없는 여러 키가 불가능한 델타를 표시하면 다른 케이블과 USB 포트를 시도하세요.',
185
+ '보증 지원을 위해 영향을 받는 키, 반복된 델타 값, 키보드 모델, 펌웨어 버전 및 결함이 스위치를 따르는지 PCB 소켓을 따르는지 포함하세요.',
186
+ ],
187
+ },
188
+ {
189
+ type: 'summary',
190
+ title: '빠른 규칙',
191
+ items: [
192
+ '단일 빨간 행은 단서이지 판결이 아닙니다.',
193
+ '동일한 물리적 키에서 30ms 미만의 반복된 빨간 행은 키보드 채터링의 강력한 증거입니다.',
194
+ '하드웨어를 교체하기 전에 의도적인 단일 탭을 사용하고 의심스러운 스위치를 근처의 건강한 키와 비교하세요.',
195
+ ],
196
+ },
197
+ ],
198
+ ui: {
199
+ statusIdle: '아무 키나 누르세요',
200
+ statusListening: '키 델타 측정 중',
201
+ statusChatter: '채터링 감지됨',
202
+ totalPresses: '총 누름 횟수',
203
+ chatterEvents: '채터링 이벤트',
204
+ worstDelta: '최악의 델타',
205
+ watchWindow: '유지된 행',
206
+ keyColumn: '키',
207
+ deltaColumn: '델타',
208
+ verdictColumn: '판정',
209
+ timeColumn: '시간',
210
+ normal: '정상',
211
+ suspect: '의심',
212
+ chatter: '채터링',
213
+ waiting: '대기 중',
214
+ clear: '로그 지우기',
215
+ exportLog: 'CSV 내보내기',
216
+ hint: '로그는 최신 80행을 유지하므로 긴 세션도 빠르게 유지됩니다. 키를 누르고 있을 때의 반복은 무시되며, 빨간 행은 너무 가깝게 발생한 별도의 누름에서 비롯됩니다.',
217
+ captureNotice: '시작 버튼이 없습니다. 의심스러운 키를 한 번 탭하고 이전 누름으로부터의 델타를 관찰하세요.',
218
+ keyboardAriaLabel: '최근 키 활동',
219
+ logAriaLabel: '키보드 채터링 이벤트 로그',
220
+ escapeKey: 'Esc',
221
+ backspaceKey: 'Back',
222
+ tabKey: 'Tab',
223
+ enterKey: 'Enter',
224
+ capsLockKey: 'Caps',
225
+ shiftKey: 'Shift',
226
+ controlKey: 'Ctrl',
227
+ metaKey: 'Meta',
228
+ altKey: 'Alt',
229
+ spaceKey: 'Space',
230
+ csvHeader: '키,코드,델타_ms,심각도,시간',
231
+ },
232
+ };