@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 = 'tastatur-test-online';
6
+ const title = 'Online Tastatur Test & Ghosting Detektor';
7
+ const description = 'Prüfen Sie, ob Ihre Tastatur unter Ghosting oder Key Jamming leidet. Echtzeit-Tastenvirtualisierung und N-Key-Rollover-Zähler.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Was ist Ghosting bei einer Tastatur?',
12
+ answer: 'Es handelt sich um einen Defekt, der auftritt, wenn Sie mehrere Tasten gleichzeitig drücken und der Computer einige davon nicht registriert. Dies liegt an Einschränkungen in der internen elektrischen Matrix der Tastatur, die bestimmte Kombinationen nicht verarbeiten kann.',
13
+ },
14
+ {
15
+ question: 'Was bedeutet N-Key-Rollover (NKRO)?',
16
+ answer: 'NKRO bedeutet, dass die Tastatur so viele Tasten gleichzeitig registrieren kann, wie Sie drücken können, ohne Fehler. Dies ist ein Premium-Feature, das häufig in hochwertigen mechanischen und Gaming-Tastaturen zu finden ist.',
17
+ },
18
+ {
19
+ question: 'Warum versagt meine Tastatur, wenn ich 3 Tasten gleichzeitig drücke?',
20
+ answer: 'Die meisten billigen Büro-Tastaturen haben ein 2- oder 3-Tasten-Rollover. Das reicht zum Tippen aus, ist aber für intensives Gaming oder komplexe Shortcuts unzureichend.',
21
+ },
22
+ {
23
+ question: 'Wie kann ich eine Taste reparieren, die nicht reagiert?',
24
+ answer: 'Wenn der Test den Tastendruck nicht erkennt, könnte es an Schmutz unter dem Schalter, einem elektrischen Kontaktfehler oder einem beschädigten Kabel liegen. Versuchen Sie, die Tastatur mit Druckluft zu reinigen, bevor Sie aufgeben.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Visualisierung fokussieren',
31
+ text: 'Klicken Sie irgendwo auf die Seite, um sicherzustellen, dass der Browser den Fokus hat und Hardware-Tastendrücke erfassen kann.',
32
+ },
33
+ {
34
+ name: 'Reaktionstest durchführen',
35
+ text: 'Drücken Sie nacheinander jede Taste auf Ihrer Tastatur. Die entsprechende Taste auf dem Bildschirm leuchtet grün auf, wenn sie korrekt funktioniert.',
36
+ },
37
+ {
38
+ name: 'Auf Ghosting prüfen',
39
+ text: 'Drücken Sie gängige Gaming-Tasten (W, A, S, D, Leertaste, Shift) alle gleichzeitig, um zu sehen, ob sie sperren oder alle aufleuchten.',
40
+ },
41
+ {
42
+ name: 'Maximalen Rollover überprüfen',
43
+ text: 'Versuchen Sie, mit beiden Händen so viele Tasten wie möglich gleichzeitig zu drücken, und beobachten Sie den Zähler für maximale gleichzeitige Tastendrücke.',
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: 'de',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Häufig gestellte Fragen',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Technische Referenzen',
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 Tastatur Test: Ghosting und N-Key-Rollover erkennen',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Ein interaktives Tool zur Tastaturdiagnose. Prüfen Sie, ob Ihr Peripheriegerät unter Ghosting, Jamming oder Rollover-Einschränkungen leidet. Visuell klar mit Unterstützung für alle Tastaturtypen.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Was ist Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting tritt auf, wenn Sie eine bestimmte Tastenkombination drücken und die Tastatur einen Phantom-Tastendruck registriert, den Sie nicht ausgeführt haben. Dies liegt an Einschränkungen im internen Schaltkreis-Matrix.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key-Rollover und maximaler Rollover',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key-Rollover):</strong> Ermöglicht das gleichzeitige Registrieren aller gedrückten Tasten. <strong>6KRO:</strong> Alter USB-Standard-Limit. <strong>2-3KRO:</strong> Üblich bei billigen Tastaturen, ausreichend zum Tippen.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Mechanische vs. Membran-Tastaturen',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Mechanische Tastaturen haben individuelle Schalter mit isolierten Dioden, was Ghosting eliminiert. Membran-Tastaturen teilen sich Leiterbahnen, was zu Fehlern bei gleichzeitigen Kombinationen führt.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Eingabetest',
140
+ title: 'Tastatur Test und Ghosting Detektor',
141
+ description: 'N-Key-Rollover überprüfen und defekte Tasten erkennen.',
142
+ simultaneousLabel: 'Gleichzeitig',
143
+ eventLogLabel: 'Ereignisprotokoll',
144
+ resetBtn: 'Zurücksetzen',
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 = 'tes-keyboard-online';
6
+ const title = 'Tes Keyboard Online & Detektor Ghosting';
7
+ const description = 'Periksa apakah keyboard Anda mengalami Ghosting atau Key Jamming. Visualizer tombol real-time dan penghitung N-Key Rollover.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Apa itu Ghosting pada keyboard?',
12
+ answer: 'Ini adalah cacat yang terjadi ketika Anda menekan beberapa tombol sekaligus dan komputer tidak mendaftarkan beberapa di antaranya. Hal ini dikarenakan keterbatasan dalam matriks listrik internal keyboard yang tidak dapat memproses kombinasi tertentu.',
13
+ },
14
+ {
15
+ question: 'Apa yang dimaksud dengan N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO berarti keyboard dapat mendaftarkan tombol sebanyak yang dapat Anda tekan secara bersamaan tanpa kegagalan. Ini adalah fitur premium, umum pada keyboard mekanis dan gaming kelas atas.',
17
+ },
18
+ {
19
+ question: 'Mengapa keyboard saya gagal saat saya menekan 3 tombol sekaligus?',
20
+ answer: 'Sebagian besar keyboard kantor murah memiliki rollover 2 atau 3 tombol. Ini cukup untuk mengetik tetapi tidak cukup untuk gaming intensif atau pintasan kompleks.',
21
+ },
22
+ {
23
+ question: 'Bagaimana cara memperbaiki tombol yang tidak merespons?',
24
+ answer: 'Jika tes tidak mendeteksi penekanan tombol, itu bisa jadi karena kotoran di bawah Switch, kegagalan kontak listrik, atau kabel yang rusak. Coba bersihkan keyboard dengan udara bertekanan sebelum menyerah.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Fokuskan visualizer',
31
+ text: 'Klik di mana saja pada halaman untuk memastikan browser memiliki fokus dan dapat menangkap penekanan tombol perangkat keras.',
32
+ },
33
+ {
34
+ name: 'Jalankan tes respons',
35
+ text: 'Tekan setiap tombol pada keyboard Anda satu per satu. Tombol yang sesuai di layar akan menyala hijau jika berfungsi dengan benar.',
36
+ },
37
+ {
38
+ name: 'Periksa ghosting',
39
+ text: 'Tekan tombol gaming umum (W, A, S, D, Spasi, Shift) sekaligus untuk melihat apakah mereka terkunci atau semuanya menyala.',
40
+ },
41
+ {
42
+ name: 'Verifikasi rollover maksimum',
43
+ text: 'Coba tekan tombol sebanyak mungkin dengan kedua tangan dan perhatikan penghitung penekanan tombol simultan maksimum.',
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: 'id',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referensi Teknis',
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: 'Tes Keyboard Online: Deteksi Ghosting dan N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Alat interaktif untuk diagnosis keyboard. Periksa apakah perangkat periferal Anda mengalami ghosting, jamming, atau keterbatasan rollover. Visual yang jelas dengan dukungan untuk semua jenis keyboard.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Apa itu Ghosting?',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Ghosting terjadi ketika Anda menekan kombinasi tombol tertentu dan keyboard mendaftarkan penekanan tombol hantu yang tidak Anda lakukan. Hal ini dikarenakan keterbatasan dalam matriks sirkuit internal.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover dan Rollover Maksimum',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Memungkinkan pendaftaran semua tombol yang ditekan secara bersamaan. <strong>6KRO:</strong> Batas standar USB lama. <strong>2-3KRO:</strong> Umum pada keyboard murah, cukup untuk mengetik.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Keyboard Mekanik vs Membran',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Keyboard mekanik memiliki Switch individual dengan dioda terisolasi, menghilangkan ghosting. Keyboard membran berbagi jalur konduktor, menyebabkan kegagalan dalam kombinasi simultan.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Tes Input',
140
+ title: 'Tes Keyboard dan Detektor Ghosting',
141
+ description: 'Verifikasi N-Key Rollover dan deteksi tombol yang gagal.',
142
+ simultaneousLabel: 'Simultan',
143
+ eventLogLabel: 'Log Kejadian',
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-tastiera-online';
6
+ const title = 'Test Tastiera Online e Rilevatore Ghosting';
7
+ const description = 'Controlla se la tua tastiera soffre di Ghosting o Key Jamming. Visualizzatore tasti in tempo reale e contatore N-Key Rollover.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: "Cos'è il Ghosting sulla tastiera?",
12
+ answer: "È un difetto che si verifica quando premi più tasti contemporaneamente e il computer non ne registra alcuni. È dovuto a limitazioni nella matrice elettrica interna della tastiera che non può elaborare determinate combinazioni.",
13
+ },
14
+ {
15
+ question: 'Cosa significa N-Key Rollover (NKRO)?',
16
+ answer: 'NKRO significa che la tastiera può registrare tanti tasti quanti ne puoi premere simultaneamente senza errori. È una funzione premium, comune nelle tastiere meccaniche e da gaming di fascia alta.',
17
+ },
18
+ {
19
+ question: 'Perché la mia tastiera fallisce quando premo 3 tasti insieme?',
20
+ answer: 'La maggior parte delle tastiere da ufficio economiche ha un rollover di 2 o 3 tasti. Questo è sufficiente per scrivere ma insufficiente per il gaming intensivo o scorciatoie complesse.',
21
+ },
22
+ {
23
+ question: 'Come posso riparare un tasto che non risponde?',
24
+ answer: "Se il test non rileva la pressione del tasto, potrebbe trattarsi di sporco sotto l'interruttore, un guasto al contatto elettrico o un cavo danneggiato. Prova a pulire la tastiera con aria compressa prima di arrenderti.",
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Metti a fuoco il visualizzatore',
31
+ text: 'Clicca in un punto qualsiasi della pagina per assicurarti che il browser abbia il focus e possa catturare la pressione dei tasti hardware.',
32
+ },
33
+ {
34
+ name: 'Esegui il test di risposta',
35
+ text: 'Premi ogni tasto della tastiera uno ad uno. Il tasto corrispondente sullo schermo si illuminerà di verde se funziona correttamente.',
36
+ },
37
+ {
38
+ name: 'Controlla il ghosting',
39
+ text: 'Premi i tasti comuni da gaming (W, A, S, D, Spazio, Shift) tutti insieme per vedere se si bloccano o si illuminano tutti.',
40
+ },
41
+ {
42
+ name: 'Verifica il rollover massimo',
43
+ text: 'Prova a premere quanti più tasti puoi con entrambe le mani e guarda il contatore della pressione simultanea massima dei tasti.',
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: 'it',
79
+ };
80
+
81
+ export const content: ToolLocaleContent<TestTecladoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Domande Frequenti',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Riferimenti Tecnici',
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 Tastiera Online: Rileva Ghosting e N-Key Rollover',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Uno strumento interattivo per la diagnostica della tastiera. Controlla se la tua periferica soffre di ghosting, jamming o limitazioni del rollover. Chiamata visiva con supporto per tutti i tipi di tastiera.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: "Cos'è il Ghosting?",
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Il ghosting si verifica quando premi una specifica combinazione di tasti e la tastiera registra una pressione fantasma che non hai fatto. Ciò è dovuto a limitazioni nella matrice del circuito interno.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'N-Key Rollover e Rollover Massimo',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: '<strong>NKRO (N-Key Rollover):</strong> Consente di registrare tutti i tasti premuti simultaneamente. <strong>6KRO:</strong> Vecchio limite standard USB. <strong>2-3KRO:</strong> Comune sulle tastiere economiche, sufficiente per scrivere.',
127
+ },
128
+ {
129
+ type: 'title',
130
+ text: 'Tastiere Meccaniche vs Membrana',
131
+ level: 3,
132
+ },
133
+ {
134
+ type: 'paragraph',
135
+ html: 'Le tastiere meccaniche hanno interruttori individuali con diodi isolati, eliminando il ghosting. Le tastiere a membrana condividono tracce conduttrici, causando errori nelle combinazioni simultanee.',
136
+ },
137
+ ],
138
+ ui: {
139
+ badge: 'Test Input',
140
+ title: 'Test Tastiera e Rilevatore Ghosting',
141
+ description: 'Verifica l\'N-Key Rollover e rileva i tasti difettosi.',
142
+ simultaneousLabel: 'Simultanei',
143
+ eventLogLabel: 'Registro Eventi',
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 = 'keyboard-test';
6
+ const title = 'オンライン・キーボードテスト&ゴースト検出器';
7
+ const description = 'キーボードのゴースト現象やキーの詰まりをチェック。リアルタイムのキー可視化とNキーロールオーバー・カウンター。';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'キーボードのゴースト現象(Ghosting)とは何ですか?',
12
+ answer: '複数のキーを同時に押したときに、一部のキーが正しく反応しない現象です。キーボード内部の電気回路(マトリックス)の制限により、特定の組み合わせを処理できないために発生します。',
13
+ },
14
+ {
15
+ question: 'Nキーロールオーバー(NKRO)とは何ですか?',
16
+ answer: '同時に押したすべてのキーを、制限なく正確に認識できる機能のことです。高級なメカニカルキーボードやゲーミングキーボードに搭載されているプレミアムな機能です。',
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: 'キーボードの各キーを1つずつ押してください。正しく動作していれば、画面上の対応するキーが緑色に点灯します。',
36
+ },
37
+ {
38
+ name: 'ゴーストをチェックする',
39
+ text: 'よく使うゲーム用キー(W, A, S, D, スペース, シフト)を同時に押し、入力がロックされたり、すべて反応するか確認します。',
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: 'ja',
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キーロールオーバーを検出',
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キーロールオーバーと最大同時押し',
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: 'Nキーロールオーバーを確認し、故障キーを特定。',
142
+ simultaneousLabel: '同時押し',
143
+ eventLogLabel: 'イベントログ',
144
+ resetBtn: 'リセット',
145
+ },
146
+ };