@jjlmoya/utils-hardware 1.3.0 → 1.6.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 (113) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +106 -0
  3. package/src/category/i18n/id.ts +106 -0
  4. package/src/category/i18n/it.ts +106 -0
  5. package/src/category/i18n/ja.ts +106 -0
  6. package/src/category/i18n/ko.ts +106 -0
  7. package/src/category/i18n/nl.ts +106 -0
  8. package/src/category/i18n/pl.ts +106 -0
  9. package/src/category/i18n/pt.ts +106 -0
  10. package/src/category/i18n/ru.ts +106 -0
  11. package/src/category/i18n/sv.ts +106 -0
  12. package/src/category/i18n/tr.ts +106 -0
  13. package/src/category/i18n/zh.ts +106 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/category_validation.test.ts +73 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +1 -1
  19. package/src/tests/slug_language_code_format.test.ts +23 -0
  20. package/src/tests/slug_uniqueness.test.ts +81 -0
  21. package/src/tests/title_quality.test.ts +1 -1
  22. package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
  23. package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
  24. package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
  25. package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
  26. package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
  27. package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
  28. package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
  29. package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
  30. package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
  31. package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
  32. package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
  33. package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
  34. package/src/tool/batteryHealthEstimator/index.ts +15 -7
  35. package/src/tool/deadPixelTest/i18n/de.ts +218 -0
  36. package/src/tool/deadPixelTest/i18n/id.ts +218 -0
  37. package/src/tool/deadPixelTest/i18n/it.ts +218 -0
  38. package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
  39. package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
  40. package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
  41. package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
  42. package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
  43. package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
  44. package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
  45. package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
  46. package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
  47. package/src/tool/deadPixelTest/index.ts +15 -7
  48. package/src/tool/gamepadTest/i18n/de.ts +186 -0
  49. package/src/tool/gamepadTest/i18n/id.ts +186 -0
  50. package/src/tool/gamepadTest/i18n/it.ts +186 -0
  51. package/src/tool/gamepadTest/i18n/ja.ts +186 -0
  52. package/src/tool/gamepadTest/i18n/ko.ts +186 -0
  53. package/src/tool/gamepadTest/i18n/nl.ts +186 -0
  54. package/src/tool/gamepadTest/i18n/pl.ts +186 -0
  55. package/src/tool/gamepadTest/i18n/pt.ts +186 -0
  56. package/src/tool/gamepadTest/i18n/ru.ts +186 -0
  57. package/src/tool/gamepadTest/i18n/sv.ts +186 -0
  58. package/src/tool/gamepadTest/i18n/tr.ts +186 -0
  59. package/src/tool/gamepadTest/i18n/zh.ts +186 -0
  60. package/src/tool/gamepadTest/index.ts +15 -7
  61. package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
  62. package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
  63. package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
  64. package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
  65. package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
  66. package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
  67. package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
  68. package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
  69. package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
  70. package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
  71. package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
  72. package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
  73. package/src/tool/gamepadVibrationTester/index.ts +15 -7
  74. package/src/tool/keyboardTest/i18n/de.ts +146 -0
  75. package/src/tool/keyboardTest/i18n/id.ts +146 -0
  76. package/src/tool/keyboardTest/i18n/it.ts +146 -0
  77. package/src/tool/keyboardTest/i18n/ja.ts +146 -0
  78. package/src/tool/keyboardTest/i18n/ko.ts +146 -0
  79. package/src/tool/keyboardTest/i18n/nl.ts +146 -0
  80. package/src/tool/keyboardTest/i18n/pl.ts +146 -0
  81. package/src/tool/keyboardTest/i18n/pt.ts +146 -0
  82. package/src/tool/keyboardTest/i18n/ru.ts +146 -0
  83. package/src/tool/keyboardTest/i18n/sv.ts +146 -0
  84. package/src/tool/keyboardTest/i18n/tr.ts +146 -0
  85. package/src/tool/keyboardTest/i18n/zh.ts +146 -0
  86. package/src/tool/keyboardTest/index.ts +15 -7
  87. package/src/tool/mousePollingTest/i18n/de.ts +135 -0
  88. package/src/tool/mousePollingTest/i18n/id.ts +135 -0
  89. package/src/tool/mousePollingTest/i18n/it.ts +135 -0
  90. package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
  91. package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
  92. package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
  93. package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
  94. package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
  95. package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
  96. package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
  97. package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
  98. package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
  99. package/src/tool/mousePollingTest/index.ts +15 -7
  100. package/src/tool/toneGenerator/i18n/de.ts +146 -0
  101. package/src/tool/toneGenerator/i18n/id.ts +146 -0
  102. package/src/tool/toneGenerator/i18n/it.ts +146 -0
  103. package/src/tool/toneGenerator/i18n/ja.ts +146 -0
  104. package/src/tool/toneGenerator/i18n/ko.ts +146 -0
  105. package/src/tool/toneGenerator/i18n/nl.ts +146 -0
  106. package/src/tool/toneGenerator/i18n/pl.ts +146 -0
  107. package/src/tool/toneGenerator/i18n/pt.ts +146 -0
  108. package/src/tool/toneGenerator/i18n/ru.ts +146 -0
  109. package/src/tool/toneGenerator/i18n/sv.ts +146 -0
  110. package/src/tool/toneGenerator/i18n/tr.ts +146 -0
  111. package/src/tool/toneGenerator/i18n/zh.ts +146 -0
  112. package/src/tool/toneGenerator/index.ts +15 -7
  113. package/src/types.ts +1 -1
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestTecladoUI } from '../ui';
4
+
5
+ const slug = 'keyboard-test';
6
+ const title = '온라인 키보드 테스트 및 고스트 감지기';
7
+ const description = '키보드에 고스트 현상이나 키 씹힘 현상이 있는지 확인하세요. 실시간 키 시각화 및 무한 동시 입력(N-Key Rollover) 카운터.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '키보드 고스트(Ghosting) 현상이란 무엇인가요?',
12
+ answer: '여러 키를 동시에 눌렀을 때 컴퓨터가 그중 일부를 인식하지 못하는 결함을 말합니다. 이는 특정 조합을 처리할 수 없는 키보드 내부 전기 회로망(matrix)의 한계 때문입니다.',
13
+ },
14
+ {
15
+ question: '무한 동시 입력(NKRO, N-Key Rollover)이란 무엇인가요?',
16
+ answer: 'NKRO는 사용자가 동시에 누를 수 있는 모든 키를 오류 없이 인식할 수 있음을 의미합니다. 주로 고급 기계식 키보드나 게이밍 키보드에서 볼 수 있는 기능입니다.',
17
+ },
18
+ {
19
+ question: '왜 3개의 키를 한꺼번에 누르면 실패하나요?',
20
+ answer: '대부분의 저렴한 사무용 키보드는 2개 또는 3개 키 동시 입력까지만 지원합니다. 이는 일반적인 타이핑에는 충분하지만, 집중적인 게임이나 복잡한 단축키 사용에는 부족합니다.',
21
+ },
22
+ {
23
+ question: '응답하지 않는 키를 고칠 수 있나요?',
24
+ answer: '테스트에서 키 눌림이 감지되지 않는다면 스위치 아래의 먼지, 전기 접점 불량 또는 케이블 손상일 수 있습니다. 포기하기 전에 에어 스프레이 등으로 키보드를 청소해 보세요.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: '시각화 화면 포커스',
31
+ text: '페이지의 아무 곳이나 클릭하여 브라우저가 포커스를 유지하고 하드웨어 키 입력을 캡처할 수 있도록 하세요.',
32
+ },
33
+ {
34
+ name: '응답 테스트 실행',
35
+ text: '키보드의 각 키를 하나씩 눌러보세요. 정상적으로 작동하면 화면의 해당 키가 녹색으로 켜집니다.',
36
+ },
37
+ {
38
+ name: '고스트 현상 확인',
39
+ text: '게임에서 자주 사용하는 키들(W, A, S, D, Space, Shift)을 한꺼번에 눌러 고스트 현상이 생기는지 확인하세요.',
40
+ },
41
+ {
42
+ name: '최대 동시 입력 확인',
43
+ text: '양손으로 최대한 많은 키를 동시에 눌러보고 최대 동시 입력 키 카운터를 확인하세요.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'ko',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: '자주 묻는 질문',
86
+ faq: faqData,
87
+ bibliographyTitle: '기술 참조',
88
+ bibliography: [
89
+ {
90
+ name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
+ },
93
+ {
94
+ name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
+ url: 'https://deskthority.net/wiki/Rollover',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: '온라인 키보드 테스트: 고스트 및 동시 입력 한계 자가 진단',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: '키보드 진단을 위한 대화형 도구입니다. 고스트 현상, 씹힘 현상 또는 동시 입력 제한을 확인하세요. 모든 키보드 유형을 지원하며 시각적으로 명확한 피드백을 제공합니다.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: '고스트 현상이란?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: '고스트 현상은 특정 키 조합을 누를 때 누르지 않은 환상(phantom) 키가 입력되는 현상을 말합니다. 이는 내부 회로망의 한계로 인해 발생합니다.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: '무한 동시 입력 및 최대 입력 한계',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> 누른 모든 키를 동시에 인식합니다. <strong>6KRO:</strong> 구형 USB 표준의 한계입니다. <strong>2-3KRO:</strong> 저가형 키보드에서 흔하며 일반 타이핑에 적합합니다.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: '기계식 vs 멤버레인 키보드',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: '기계식 키보드는 다이오드가 있는 개별 스위치를 사용하여 고스트 현상을 제거합니다. 멤브레인 키보드는 전기 신호 통로를 공유하므로 동시 입력 시 오류가 발생할 수 있습니다.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: '입력 테스트',
140
+ title: '키보드 테스트 및 고스트 감지기',
141
+ description: '동시 입력을 확인하고 불량 키를 찾아보세요.',
142
+ simultaneousLabel: '동시 입력',
143
+ eventLogLabel: '이벤트 로그',
144
+ resetBtn: '초기화',
145
+ },
146
+ };
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestTecladoUI } from '../ui';
4
+
5
+ const slug = 'toetsenbord-test-online';
6
+ const title = 'Online Toetsenbord Test & Ghosting Detector';
7
+ const description = 'Controleer of uw toetsenbord last heeft van Ghosting of Key Jamming. Real-time toetsen-visualizer en N-Key Rollover teller.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Wat is Ghosting op een toetsenbord?',
12
+ answer: 'Het is een defect dat optreedt wanneer u meerdere toetsen tegelijk indrukt en de computer sommige daarvan niet registreert. Het komt door beperkingen in de interne elektrische matrix van het toetsenbord die bepaalde combinaties niet kan verwerken.',
13
+ },
14
+ {
15
+ question: 'Wat betekent N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO betekent dat het toetsenbord evenveel toetsen kan registreren als u tegelijkertijd kunt indrukken zonder fouten. Het is een premium functie, gebruikelijk bij high-end mechanische en gamingtoetsenborden.',
17
+ },
18
+ {
19
+ question: 'Waarom hapert mijn toetsenbord als ik 3 toetsen tegelijk indruk?',
20
+ answer: 'De meeste goedkope kantoortoetsenborden hebben een 2- of 3-toetsen rollover. Dit is voldoende voor typen, maar onvoldoende voor intensief gamen of complexe sneltoetsen.',
21
+ },
22
+ {
23
+ question: 'Hoe kan ik een toets repareren die niet reageert?',
24
+ answer: 'Als de test de toetsaanslag niet detecteert, kan dit komen door vuil onder de switch, een elektrisch contactfout of een beschadigde kabel. Probeer het toetsenbord te reinigen met perslucht voordat u het opgeeft.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Focus de visualizer',
31
+ text: 'Klik ergens op de pagina om ervoor te zorgen dat de browser focus heeft en hardware-toetsaanslagen kan vastleggen.',
32
+ },
33
+ {
34
+ name: 'Voer de responstest uit',
35
+ text: 'Druk de toetsen op uw toetsenbord één voor één in. De bijbehorende toets op het scherm licht groen op als deze correct werkt.',
36
+ },
37
+ {
38
+ name: 'Controleer op ghosting',
39
+ text: 'Druk veelgebruikte gaming-toetsen (W, A, S, D, Spatie, Shift) allemaal tegelijk in om te zien of ze blokkeren of allemaal oplichten.',
40
+ },
41
+ {
42
+ name: 'Verifieer maximale rollover',
43
+ text: 'Probeer met beide handen zoveel mogelijk toetsen tegelijk in te drukken en bekijk de maximale gelijktijdige toetsaanslagteller.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'nl',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Veelgestelde Vragen',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Technische Referenties',
88
+ bibliography: [
89
+ {
90
+ name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
+ },
93
+ {
94
+ name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
+ url: 'https://deskthority.net/wiki/Rollover',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Online Toetsenbord Test: Detecteer Ghosting en N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Een interactieve tool voor toetsenborddiagnostiek. Controleer of uw randapparatuur last heeft van ghosting, jamming of rollover-beperkingen. Visueel duidelijk met ondersteuning voor alle typen toetsenborden.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Wat is Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting treedt op wanneer u een specifieke combinatie van toetsen indrukt en het toetsenbord een fantoom-toetsaanslag registreert die u niet heeft gemaakt. Dit komt door beperkingen in de interne circuitmatrix.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover en Maximale Rollover',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Hiermee kunnen alle ingedrukte toetsen tegelijkertijd worden geregistreerd. <strong>6KRO:</strong> Oude USB-standaardlimiet. <strong>2-3KRO:</strong> Gebruikelijk op goedkope toetsenborden, voldoende voor typen.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Mechanische vs Membraan Toetsenborden',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Mechanische toetsenborden hebben individuele switches met geïsoleerde dioden, waardoor ghosting wordt geëlimineerd. Membraantoetsenborden delen geleiderbanen, wat fouten veroorzaakt bij gelijktijdige combinaties.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Input Test',
140
+ title: 'Toetsenbord Test en Ghosting Detector',
141
+ description: 'Verifieer N-Key Rollover en detecteer defecte toetsen.',
142
+ simultaneousLabel: 'Gelijktijdig',
143
+ eventLogLabel: 'Gebeurtenissenlogboek',
144
+ resetBtn: 'Reset',
145
+ },
146
+ };
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestTecladoUI } from '../ui';
4
+
5
+ const slug = 'test-klawiatury-online';
6
+ const title = 'Online Test Klawiatury i Detektor Ghostingu';
7
+ const description = 'Sprawdź, czy Twoja klawiatura cierpi na Ghosting lub Key Jamming. Wizualizacja klawiszy w czasie rzeczywistym i licznik N-Key Rollover.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Co to jest Ghosting w klawiaturze?',
12
+ answer: 'To defekt występujący, gdy naciskasz wiele klawiszy naraz, a komputer nie rejestruje niektórych z nich. Wynika to z ograniczeń w wewnętrznej matrycy elektrycznej klawiatury, która nie może przetworzyć pewnych kombinacji.',
13
+ },
14
+ {
15
+ question: 'Co oznacza N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO oznacza, że klawiatura może zarejestrować tyle klawiszy, ile jesteś w stanie nacisnąć jednocześnie, bez błędu. Jest to funkcja premium, powszechna w wysokiej klasy klawiaturach mechanicznych i gamingowych.',
17
+ },
18
+ {
19
+ question: 'Dlaczego moja klawiatura zawodzi, gdy naciskam 3 klawisze naraz?',
20
+ answer: 'Większość tanich klawiatur biurowych ma rollover na poziomie 2 lub 3 klawiszy. Jest to wystarczające do pisania, ale niewystarczające do intensywnego grania lub złożonych skrótów klawiszowych.',
21
+ },
22
+ {
23
+ question: 'Jak mogę naprawić klawisz, który nie reaguje?',
24
+ answer: 'Jeśli test nie wykrywa naciśnięcia klawisza, może to być brud pod przełącznikiem, awaria styku elektrycznego lub uszkodzony kabel. Spróbuj wyczyścić klawiaturę sprężonym powietrzem przed rezygnacją.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Skupienie na wizualizatorze',
31
+ text: 'Kliknij dowolne miejsce na stronie, aby upewnić się, że przeglądarka jest aktywna i może przechwytywać naciśnięcia klawiszy sprzętowych.',
32
+ },
33
+ {
34
+ name: 'Uruchom test odpowiedzi',
35
+ text: 'Naciskaj po kolei każdy klawisz na klawiaturze. Odpowiadający mu klawisz na ekranie zaświeci się na zielono, jeśli działa poprawnie.',
36
+ },
37
+ {
38
+ name: 'Sprawdź ghosting',
39
+ text: 'Naciśnij popularne klawisze gamingowe (W, A, S, D, Spacja, Shift) jednocześnie, aby zobaczyć, czy się blokują, czy wszystkie się zaświecą.',
40
+ },
41
+ {
42
+ name: 'Zweryfikuj maksymalny rollover',
43
+ text: 'Spróbuj nacisnąć obiema rękami jak najwięcej klawiszy naraz i obserwuj licznik maksymalnej liczby jednocześnie naciśniętych klawiszy.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'pl',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Często Zadawane Pytania',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referencje Techniczne',
88
+ bibliography: [
89
+ {
90
+ name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
+ },
93
+ {
94
+ name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
+ url: 'https://deskthority.net/wiki/Rollover',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Test Klawiatury Online: Wykryj Ghosting i N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Interaktywne narzędzie do diagnostyki klawiatury. Sprawdź, czy Twoje urządzenie cierpi na ghosting, blokowanie lub ograniczenia rollover. Czytelne wizualnie, ze wsparciem dla wszystkich rodzajów klawiatur.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Co to jest Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting występuje, gdy naciskasz określoną kombinację klawiszy, a klawiatura rejestruje fantomowe naciśnięcie, którego nie wykonałeś. Wynika to z ograniczeń w wewnętrznej matrycy obwodów.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover i Maksymalny Rollover',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Pozwala na jednoczesne rejestrowanie wszystkich naciśniętych klawiszy. <strong>6KRO:</strong> Stary limit standardu USB. <strong>2-3KRO:</strong> Typowe dla tanich klawiatur, wystarczające do pisania.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Klawiatury Mechaniczne vs Membranowe',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Klawiatury mechaniczne mają indywidualne przełączniki z izolowanymi diodami, co eliminuje ghosting. Klawiatury membranowe współdzielą ścieżki przewodzące, co powoduje błędy przy jednoczesnych kombinacjach.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Test Wejścia',
140
+ title: 'Test Klawiatury i Detektor Ghostingu',
141
+ description: 'Zweryfikuj N-Key Rollover i wykryj uszkodzone klawisze.',
142
+ simultaneousLabel: 'Jednoczesne',
143
+ eventLogLabel: 'Log zdarzeń',
144
+ resetBtn: 'Resetuj',
145
+ },
146
+ };
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestTecladoUI } from '../ui';
4
+
5
+ const slug = 'teste-teclado-online';
6
+ const title = 'Teste de Teclado Online e Detetor de Ghosting';
7
+ const description = 'Verifique se o seu teclado sofre de Ghosting ou Key Jamming. Visualizador de teclas em tempo real e contador de N-Key Rollover.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'O que é o Ghosting num teclado?',
12
+ answer: 'É um defeito que ocorre quando prime várias teclas ao mesmo tempo e o computador não regista algumas delas. Deve-se a limitações na matriz elétrica interna do teclado que não consegue processar certas combinações.',
13
+ },
14
+ {
15
+ question: 'O que significa N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO significa que o teclado pode registar tantas teclas quantas premir simultaneamente sem falhas. É uma funcionalidade premium, comum em teclados mecânicos e de gaming de gama alta.',
17
+ },
18
+ {
19
+ question: 'Porque é que o meu teclado falha quando primo 3 teclas ao mesmo tempo?',
20
+ answer: 'A maioria dos teclados de escritório baratos tem um rollover de 2 ou 3 teclas. Isto é suficiente para escrever, mas insuficiente para gaming intensivo ou atalhos complexos.',
21
+ },
22
+ {
23
+ question: 'Como posso reparar uma tecla que não responde?',
24
+ answer: 'Se o teste não detetar a pressão da tecla, pode ser sujidade por baixo do interruptor, falha de contacto elétrico ou um cabo danificado. Tente limpar o teclado com ar comprimido antes de desistir.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Focar o visualizador',
31
+ text: 'Clique em qualquer lugar na página para garantir que o navegador tem o foco e pode capturar as pressões de teclas de hardware.',
32
+ },
33
+ {
34
+ name: 'Executar o teste de resposta',
35
+ text: 'Prima cada tecla do seu teclado uma a uma. A tecla correspondente no ecrã ficará verde se funcionar corretamente.',
36
+ },
37
+ {
38
+ name: 'Verificar ghosting',
39
+ text: 'Prima teclas de gaming comuns (W, A, S, D, Espaço, Shift) todas de uma vez para ver se bloqueiam ou se acendem todas.',
40
+ },
41
+ {
42
+ name: 'Verificar rollover máximo',
43
+ text: 'Tente premir o máximo de teclas que conseguir com as duas mãos e observe o contador de pressão simultânea de teclas máxima.',
44
+ },
45
+ ];
46
+
47
+ const faqSchema: WithContext<FAQPage> = {
48
+ '@context': 'https://schema.org',
49
+ '@type': 'FAQPage',
50
+ mainEntity: faqData.map((item) => ({
51
+ '@type': 'Question',
52
+ name: item.question,
53
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
54
+ })),
55
+ };
56
+
57
+ const howToSchema: WithContext<HowTo> = {
58
+ '@context': 'https://schema.org',
59
+ '@type': 'HowTo',
60
+ name: title,
61
+ description,
62
+ step: howToData.map((step, i) => ({
63
+ '@type': 'HowToStep',
64
+ position: i + 1,
65
+ name: step.name,
66
+ text: step.text,
67
+ })),
68
+ };
69
+
70
+ const appSchema: WithContext<SoftwareApplication> = {
71
+ '@context': 'https://schema.org',
72
+ '@type': 'SoftwareApplication',
73
+ name: title,
74
+ description,
75
+ applicationCategory: 'UtilityApplication',
76
+ operatingSystem: 'All',
77
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
78
+ inLanguage: 'pt',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Perguntas Frequentes',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referências Técnicas',
88
+ bibliography: [
89
+ {
90
+ name: 'USB Keyboard/Keypad Page - HID Usage Tables',
91
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
+ },
93
+ {
94
+ name: 'Mechanical vs Membrane Keyboards - Technical Deep Dive',
95
+ url: 'https://deskthority.net/wiki/Rollover',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Teste de Teclado Online: Detete Ghosting e N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Uma ferramenta interativa para diagnóstico de teclado. Verifique se o seu periférico sofre de ghosting, bloqueio ou limitações de rollover. Visualmente claro com suporte para todos os tipos de teclado.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'O que é Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'O ghosting ocorre quando prime uma combinação específica de teclas e o teclado regista uma pressão fantasma que não fez. Isto deve-se a limitações na matriz do circuito interno.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover e Rollover Máximo',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Permite registar todas as teclas premidas simultaneamente. <strong>6KRO:</strong> Limite antigo do padrão USB. <strong>2-3KRO:</strong> Comum em teclados baratos, suficiente para escrever.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Teclados Mecânicos vs Membrana',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Teclados mecânicos têm interruptores individuais com díodos isolados, eliminando o ghosting. Teclados de membrana partilham trilhos condutores, causando falhas em combinações simultâneas.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Teste de Input',
140
+ title: 'Teste de Teclado e Detetor de Ghosting',
141
+ description: 'Verifique o N-Key Rollover e detete teclas com falha.',
142
+ simultaneousLabel: 'Simultâneas',
143
+ eventLogLabel: 'Log de Eventos',
144
+ resetBtn: 'Reset',
145
+ },
146
+ };