@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 = 'test-klaviatury-online';
6
+ const title = 'Онлайн тест клавиатуры и детектор гостинга';
7
+ const description = 'Проверьте клавиатуру на гостинг или залипание клавиш. Визуализатор клавиш в реальном времени и счетчик N-Key Rollover.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Что такое гостинг (Ghosting) на клавиатуре?',
12
+ answer: 'Это дефект, возникающий при нажатии нескольких клавиш одновременно, когда компьютер не регистрирует некоторые из них. Это связано с ограничениями во внутренней электрической матрице клавиатуры, которая не может обработать определенные комбинации.',
13
+ },
14
+ {
15
+ question: 'Что означает N-Key Rollover (NKRO)?',
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, Пробел, 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: 'ru',
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: 'Тест клавиатуры онлайн: обнаружение гостинга и N-Key Rollover',
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: 'Гостинг возникает, когда вы нажимаете определенную комбинацию клавиш, и клавиатура регистрирует ложное нажатие, которого вы не совершали. Это связано с ограничениями внутренней схемной матрицы.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover и максимальный ролловер',
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: 'Механические клавиатуры против мембранных',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Механические клавиатуры имеют индивидуальные переключатели с изолированными диодами, что исключает гостинг. Мембранные клавиатуры используют общие проводящие дорожки, что приводит к ошибкам при одновременных нажатиях.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Тест ввода',
140
+ title: 'Тест клавиатуры и детектор гостинга',
141
+ description: 'Проверьте N-Key Rollover и выявите неисправные клавиши.',
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 = 'tangentbordstest-online';
6
+ const title = 'Online Tangentbordstest & Ghosting detektor';
7
+ const description = 'Kontrollera om ditt tangentbord lider av Ghosting eller Key Jamming. Knappvisualisering i realtid och N-Key Rollover-räknare.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Vad är Ghosting på ett tangentbord?',
12
+ answer: 'Det är ett fel som uppstår när du trycker på flera tangenter samtidigt och datorn inte registrerar några av dem. Det beror på begränsningar i tangentbordets interna elektriska matris som inte kan bearbeta vissa kombinationer.',
13
+ },
14
+ {
15
+ question: 'Vad betyder N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO betyder att tangentbordet kan registrera så många tangenter som du kan trycka på samtidigt utan fel. Det är en premiumfunktion, vanlig i högkvalitativa mekaniska tangentbord och gaming-tangentbord.',
17
+ },
18
+ {
19
+ question: 'Varför fallerar mitt tangentbord när jag trycker på 3 tangenter samtidigt?',
20
+ answer: 'De flesta billiga kontorstangentbord har en 2- eller 3-tangents rollover. Detta är tillräckligt för att skriva men otillräckligt för intensivt spelande eller komplexa kortkommandon.',
21
+ },
22
+ {
23
+ question: 'Hur kan jag fixa en tangent som inte svarar?',
24
+ answer: 'Om testet inte upptäcker tangenttryckningen kan det bero på smuts under brytaren, elektriskt kontaktfel eller en skadad kabel. Försök att rengöra tangentbordet med tryckluft innan du ger upp.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Fokusera visualiseringen',
31
+ text: 'Klicka var som helst på sidan för att säkerställa att webbläsaren har fokus och kan fånga tangenttryckningar.',
32
+ },
33
+ {
34
+ name: 'Kör responstestet',
35
+ text: 'Tryck på varje tangent på ditt tangentbord en efter en. Motsvarande tangent på skärmen kommer att lysa grönt om den fungerar korrekt.',
36
+ },
37
+ {
38
+ name: 'Kontrollera efter ghosting',
39
+ text: 'Tryck på vanliga gaming-tangenter (W, A, S, D, Mellanslag, Skift) samtidigt för att se om de låser sig eller om alla tänds.',
40
+ },
41
+ {
42
+ name: 'Verifiera maximal rollover',
43
+ text: 'Försök att trycka på så många tangenter som möjligt med båda händerna och titta på räknaren för maximalt antal samtidiga tangenttryckningar.',
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: 'sv',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Vanliga frågor',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Tekniska referenser',
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 Tangentbordstest: Detektera Ghosting och N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Ett interaktivt verktyg för tangentbordsdiagnostik. Kontrollera om din kringutrustning lider av ghosting, jamming eller rollover-begränsningar. Visuellt tydligt med stöd för alla typer av tangentbord.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Vad är Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting uppstår när du trycker på en specifik kombination av tangenter och tangentbordet registrerar ett fantom-tangenttryck som du inte gjorde. Detta beror på begränsningar i den interna kretsmatrisen.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover och maximal rollover',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Tillåter registrering av alla nedtryckta tangenter samtidigt. <strong>6KRO:</strong> Gammal gräns för USB-standard. <strong>2-3KRO:</strong> Vanligt på billiga tangentbord, tillräckligt för att skriva.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Mekaniska vs Membran-tangentbord',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Mekaniska tangentbord har individuella brytare med isolerade dioder, vilket eliminerar ghosting. Membran-tangentbord delar ledarspår, vilket orsakar fel i samtidiga kombinationer.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Inmatningstest',
140
+ title: 'Tangentbordstest och Ghosting detektor',
141
+ description: 'Verifiera N-Key Rollover och detektera felaktiga tangenter.',
142
+ simultaneousLabel: 'Samtidiga',
143
+ eventLogLabel: 'Händelselogg',
144
+ resetBtn: 'Återställ',
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 = 'klavye-testi-online';
6
+ const title = 'Çevrimiçi Klavye Testi ve Ghosting Belirleyici';
7
+ const description = 'Klavyenizin Ghosting veya Key Jamming sorunları olup olmadığını kontrol edin. Gerçek zamanlı tuş görselleştirici ve N-Key Rollover sayacı.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Klavyede Ghosting nedir?',
12
+ answer: 'Aynı anda birden fazla tuşa bastığınızda bilgisayarın bazılarının algılamaması durumunda ortaya çıkan bir hatadır. Klavyenin belirli kombinasyonları işleyemeyen dahili elektrik matrisindeki sınırlamalardan kaynaklanır.',
13
+ },
14
+ {
15
+ question: 'N-Key Rollover (NKRO) ne anlama gelir?',
16
+ answer: 'NKRO, klavyenin aynı anda bastığınız kadar çok tuşu hatasız bir şekilde algılayabileceği anlamına gelir. Üst düzey mekanik ve oyuncu klavyelerinde yaygın olan premium bir özelliktir.',
17
+ },
18
+ {
19
+ question: 'Neden 3 tuşa aynı anda bastığımda klavyem hata veriyor?',
20
+ answer: 'Çoğu ucuz ofis klavyesinde 2 veya 3 tuşlu rollover bulunur. Bu, yazı yazmak için yeterlidir ancak yoğun oyun oynama veya karmaşık kısayollar için yetersizdir.',
21
+ },
22
+ {
23
+ question: 'Tepki vermeyen bir tuşu nasıl düzeltebilirim?',
24
+ answer: 'Test tuş basımını algılamıyorsa, anahtarın altındaki kir, elektrik kontağı hatası veya hasarlı bir kablo olabilir. Vazgeçmeden önce klavyeyi basınçlı hava ile temizlemeyi deneyin.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Görselleştiriciye odaklanın',
31
+ text: 'Tarayıcının odaklandığından ve donanım tuş basımlarını yakalayabildiğinden emin olmak için sayfanın herhangi bir yerine tıklayın.',
32
+ },
33
+ {
34
+ name: 'Tepki testini çalıştırın',
35
+ text: 'Klavyenizdeki her tuşa tek tek basın. Ekranda ilgili tuş, doğru çalışıyorsa yeşil renkte yanacaktır.',
36
+ },
37
+ {
38
+ name: 'Ghosting kontrolü yapın',
39
+ text: 'Yaygın oyun tuşlarına (W, A, S, D, Boşluk, Shift) hepsine birden basarak kilitlenip kilitlenmediklerini veya hepsinin yanıp yanmadığını görün.',
40
+ },
41
+ {
42
+ name: 'Maksimum rollover\'ı doğrulayın',
43
+ text: 'İki elinizle mümkün olduğunca çok tuşa aynı anda basmaya çalışın ve maksimum eşzamanlı tuş basımı sayacını izleyin.',
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: 'tr',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Sıkça Sorulan Sorular',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Teknik Referanslar',
88
+ bibliography: [
89
+ {
90
+ name: 'USB Klavye/Tuş Takımı Sayfası - HID Kullanım Tabloları',
91
+ url: 'https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf',
92
+ },
93
+ {
94
+ name: 'Mekanik ve Membran Klavyeler - Teknik İnceleme',
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: 'Çevrimiçi Klavye Testi: Ghosting ve N-Key Rollover\'ı Belirleyin',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Klavye teşhisi için etkileşimli bir araç. Donanımınızda ghosting, kilitlenme veya rollover sınırlamaları olup olmadığını kontrol edin. Tüm klavye türleri desteğiyle görsel olarak net.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Ghosting Nedir?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting, belirli bir tuş kombinasyonuna bastığınızda ve klavyenin yapmadığınız bir hayalet tuş basımını algılamasıyla oluşur. Bu, dahili devre matrisindeki sınırlamalardan kaynaklanır.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover ve Maksimum Rollover',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Tüm basılı tuşların aynı anda algılanmasını sağlar. <strong>6KRO:</strong> Eski USB standart sınırı. <strong>2-3KRO:</strong> Ucuz klavyelerde yaygındır, yazı yazmak için yeterlidir.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Mekanik ve Membran Klavyeler',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Mekanik klavyeler, izole diyotlara sahip bireysel anahtarlara sahiptir ve bu da ghosting\'i ortadan kaldırır. Membran klavyeler iletken yolları paylaşır, bu da eşzamanlı kombinasyonlarda hatalara neden olur.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Giriş Testi',
140
+ title: 'Klavye Testi ve Ghosting Belirleyici',
141
+ description: 'N-Key Rollover\'ı doğrulayın ve arızalı tuşları belirleyin.',
142
+ simultaneousLabel: 'Eşzamanlı',
143
+ eventLogLabel: 'Olay Günlüğü',
144
+ resetBtn: 'Sıfırla',
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 = 'keyboard-test';
6
+ const title = '在线键盘测试与按键冲突检测器';
7
+ const description = '检测您的键盘是否存在按键冲突(Ghosting)或卡键。实时按键可视化与 N-Key Rollover 计数器。';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '什么是键盘按键冲突(Ghosting)?',
12
+ answer: '冲突是指当您同时按下多个键时,电脑未能记录其中某些键。这是由于键盘内部电路矩阵的局限性造成的,无法处理某些按键组合。',
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, 空格, 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: 'zh',
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: '冲突发生在当您按下特定的按键组合时,键盘注册了您并未按下的幻象键。这是由于内部电路矩阵的局限性造成的。',
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: '机械键盘与薄膜键盘',
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
+ };
@@ -7,10 +7,6 @@ import TestTecladoBibliography from './bibliography.astro';
7
7
  import type { TestTecladoUI } from './ui';
8
8
  export type TestTecladoLocaleContent = ToolLocaleContent<TestTecladoUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const testTeclado: HardwareToolEntry<TestTecladoUI> = {
15
11
  id: 'test-teclado',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const testTeclado: HardwareToolEntry<TestTecladoUI> = {
18
14
  fg: 'mdi:keyboard-settings',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ de: () => import('./i18n/de').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ es: () => import('./i18n/es').then((m) => m.content),
20
+ fr: () => import('./i18n/fr').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
32
  },
25
33
  };
26
34