@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,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'test-pada-online';
6
+ const title = 'Test Padów i Kontrolerów Online';
7
+ const description = 'Przetestuj swój kontroler Xbox, PlayStation lub PC. Wizualizuj martwe strefy, drift analogów i przyciski.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Co to jest Drift Analoga?',
12
+ answer: 'Drift występuje, gdy kontroler rejestruje ruch bez dotykania drążka. Jest on spowodowany zużyciem wewnętrznych potencjometrów, które wysyłają błędny sygnał elektryczny w stałym kierunku.',
13
+ },
14
+ {
15
+ question: 'Jak mogę naprawić drift za pomocą oprogramowania?',
16
+ answer: 'Jeśli drift jest niewielki, możesz skonfigurować większą "Martwą Strefę" (Dead Zone) w ustawieniach gry. Spowoduje to ignorowanie małych ruchów drążka w jego centralnym położeniu.',
17
+ },
18
+ {
19
+ question: 'Czy narzędzie jest kompatybilne z padami PS5, Xbox i Switch?',
20
+ answer: 'Tak. Nasze narzędzie korzysta ze standardowego interfejsu Gamepad API nowoczesnych przeglądarek, który wykrywa prawie każdy kontroler podłączony przez USB lub Bluetooth, w tym DualSense, DualShock 4 i kontrolery Xbox.',
21
+ },
22
+ {
23
+ question: 'Dlaczego przeglądarka nie wykrywa mojego kontrolera?',
24
+ answer: 'Ze względów bezpieczeństwa przeglądarki aktywują obsługę pada dopiero po naciśnięciu pierwszego przycisku. Jeśli pad się nie pojawia, naciśnij dowolny przycisk (np. A lub X) i upewnij się, że nie korzystasz z rygorystycznego trybu incognito.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Podłącz kontroler',
31
+ text: 'Podłącz pad przez USB lub sparuj go przez Bluetooth ze swoim komputerem.',
32
+ },
33
+ {
34
+ name: 'Aktywuj wykrywanie',
35
+ text: 'Poruszaj drążkami lub naciśnij dowolny przycisk, aby przeglądarka rozpoznała podłączone urządzenie.',
36
+ },
37
+ {
38
+ name: 'Przetestuj martwe strefy',
39
+ text: 'Puść drążki i obserwuj osie na ekranie. Jeśli wartości nie wynoszą 0.0000, masz niewielki drift.',
40
+ },
41
+ {
42
+ name: 'Zweryfikuj przyciski i wibracje',
43
+ text: 'Naciśnij każdy przycisk i spust. Wskaźniki wizualne powinny się zaświecić, a jeśli Twój kontroler to obsługuje, możesz przetestować silnik wibracji.',
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<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Często Zadawane Pytania',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referencje Techniczne',
88
+ bibliography: [
89
+ {
90
+ name: 'Gamepad API Standard - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Vibration API - MDN Web Docs',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Test Padów Online: Wykryj Drift i Problemy z Analogami',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Darmowe narzędzie do testowania kontrolerów Xbox, PlayStation, Switch i innych. Wizualizuj martwe strefy, wykrywaj drift i testuj wibracje.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'Co to jest Drift Analoga',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'Drift to częsta wada drążków analogowych, w której rejestrowany jest ruch bez dotykania analogu. Jest on spowodowany zużyciem wewnętrznych potencjometrów.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Kompatybilność Kontrolerów',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Kompatybilny z Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro i praktycznie każdym nowoczesnym padem USB lub Bluetooth.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Test Wejścia',
131
+ title: 'Test Padów i Kontrolerów',
132
+ description: 'Przetestuj swój kontroler i wykryj problemy.',
133
+ connectionMessage: 'Podłącz urządzenie USB lub Bluetooth',
134
+ connectionStatus: 'Połączono',
135
+ axisLabel: 'Osie',
136
+ buttonsLabel: 'Przyciski',
137
+ vibrationTitle: 'Test Wibracji',
138
+ vibrationDescription: 'Wymaga obsługi przez przeglądarkę i kompatybilnego pada.',
139
+ vibrationLow: 'Niskie (Rumble)',
140
+ vibrationHigh: 'Wysokie (Buzz)',
141
+ eventHistoryTitle: 'Historia Zdarzeń',
142
+ eventHistoryClear: 'Wyczyść',
143
+ eventWaiting: 'Oczekiwanie na zdarzenia...',
144
+ gameStartBtn: 'ROZPOCZNIJ WYZWANIE',
145
+ gameControllerWarning: 'Podłącz pad lub użyj klawiatury',
146
+ gameTimer: 'Czas',
147
+ gameScore: 'Wynik',
148
+ gameInstruction: 'Naciskaj szybko',
149
+ gameCompleted: 'Wyzwanie Ukończone',
150
+ gameNewRecord: 'NOWY REKORD',
151
+ gameRestartBtn: 'Spróbuj ponownie',
152
+ gameFeedback: 'Jesteś legendą przycisków',
153
+ gameIntroTitlePre: 'Refleks ',
154
+ gameIntroHighlight: 'Pro Gamera',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Przetestuj opóźnienie kontrolera i swoją szybkość reakcji. Masz ',
157
+ gameIntroDescSeconds: '30 sekund',
158
+ gameIntroDescPost: ', aby opanować przyciski.',
159
+ gameShareBtn: 'UDOSTĘPNIJ RANGĘ',
160
+ gameLogConnected: 'Połączono',
161
+ gameLogDisconnected: 'Rozłączono',
162
+ gameLogCleared: 'Log wyczyszczony...',
163
+ gameLogBtnPrefix: 'Przycisk',
164
+ gameVibNotSupported: 'Wibracje nieobsługiwane.',
165
+ gameVibLow: 'Niskie',
166
+ gameVibHigh: 'Wysokie',
167
+ gameMoveStick: 'RUSZ ANALOGIEM',
168
+ gamePress: 'NACIŚNIJ',
169
+ rankLegendaryName: 'LEGENDARNY',
170
+ rankLegendaryDesc: 'Twoje palce poruszają się z prędkością dźwięku.',
171
+ rankLegendaryFlavor: 'Mój pad lata!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'Masz stalowy refleks i dobrze skalibrowany kontroler.',
174
+ rankProFlavor: 'Mój pad lata!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Nieźle, ale potrzebujesz więcej praktyki w grach rankingowych.',
177
+ rankGamerFlavor: 'Prawie się udało!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Na pewno masz włączony kontroler?',
180
+ rankNoobFlavor: 'Ten kontroler mnie nie słucha!',
181
+ gameShareText: 'Pobijesz mnie?',
182
+ gameShareScorePrefix: 'Mój wynik to',
183
+ gameShareScoreSuffix: 'trafień',
184
+ gameShareTitle: 'Test Padów Online',
185
+ },
186
+ };
@@ -0,0 +1,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'teste-gamepad-online';
6
+ const title = 'Teste de Gamepad e Comando Online';
7
+ const description = 'Teste o seu comando de Xbox, PlayStation ou PC. Visualize zonas mortas, drift do joystick e botões.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'O que é o Drift do Joystick?',
12
+ answer: 'O drift ocorre quando o comando regista movimento sem que o joystick seja tocado. É causado pelo desgaste nos potenciómetros internos, que enviam um sinal elétrico falso numa direção constante.',
13
+ },
14
+ {
15
+ question: 'Como posso corrigir o drift através de software?',
16
+ answer: 'Se o drift for ligeiro, pode configurar uma "Zona Morta" (Dead Zone) maior nas definições do seu jogo. Isto ignora pequenos movimentos do joystick no centro.',
17
+ },
18
+ {
19
+ question: 'É compatível com comandos de PS5, Xbox e Switch?',
20
+ answer: 'Sim. A nossa ferramenta utiliza a Gamepad API padrão dos navegadores modernos, que deteta quase qualquer comando ligado via USB ou Bluetooth, incluindo DualSense, DualShock 4 e comandos Xbox.',
21
+ },
22
+ {
23
+ question: 'Porque é que o navegador não deteta o meu comando?',
24
+ answer: 'Por segurança, os navegadores apenas ativam o gamepad após o primeiro premir de um botão. Se não aparecer, prima qualquer botão (como A ou X) e certifique-se de que não está no modo de navegação anónima estrito.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Ligar o comando',
31
+ text: 'Ligue o seu gamepad via USB ou emparelhe-o por Bluetooth com o seu computador.',
32
+ },
33
+ {
34
+ name: 'Ativar a deteção',
35
+ text: 'Mova os joysticks ou prima qualquer botão para que o navegador reconheça o dispositivo ligado.',
36
+ },
37
+ {
38
+ name: 'Testar zonas mortas',
39
+ text: 'Solte os joysticks e observe os eixos no ecrã. Se os valores não estiverem em 0.0000, tem um ligeiro drift.',
40
+ },
41
+ {
42
+ name: 'Verificar botões e vibração',
43
+ text: 'Prima cada botão e gatilho. Os indicadores visuais devem acender-se e, se o seu comando o suportar, pode testar o motor de vibração.',
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<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Perguntas Frequentes',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Referências Técnicas',
88
+ bibliography: [
89
+ {
90
+ name: 'Gamepad API Standard - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Vibration API - MDN Web Docs',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
96
+ },
97
+ ],
98
+ howTo: howToData,
99
+ schemas: [faqSchema, howToSchema, appSchema],
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Teste de Gamepad Online: Detete Drift e Problemas de Joystick',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Ferramenta gratuita para testar comandos de Xbox, PlayStation, Switch e outros. Visualize zonas mortas, detete drift e teste a vibração.',
109
+ },
110
+ {
111
+ type: 'title',
112
+ text: 'O que é o Drift do Joystick',
113
+ level: 3,
114
+ },
115
+ {
116
+ type: 'paragraph',
117
+ html: 'O drift é um defeito comum em joysticks analógicos onde o stick regista movimento sem ser tocado. É causado pelo desgaste nos potenciómetros internos.',
118
+ },
119
+ {
120
+ type: 'title',
121
+ text: 'Compatibilidade de Comandos',
122
+ level: 3,
123
+ },
124
+ {
125
+ type: 'paragraph',
126
+ html: 'Compatível com Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro e praticamente qualquer gamepad USB ou Bluetooth moderno.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Teste de Input',
131
+ title: 'Teste de Gamepad e Comando',
132
+ description: 'Teste o seu comando e detete problemas.',
133
+ connectionMessage: 'Ligue o seu dispositivo USB ou Bluetooth',
134
+ connectionStatus: 'Ligado',
135
+ axisLabel: 'Eixos',
136
+ buttonsLabel: 'Botões',
137
+ vibrationTitle: 'Teste de Vibração',
138
+ vibrationDescription: 'Requer suporte do navegador e um gamepad compatível.',
139
+ vibrationLow: 'Baixa (Rumble)',
140
+ vibrationHigh: 'Alta (Buzz)',
141
+ eventHistoryTitle: 'Histórico de Eventos',
142
+ eventHistoryClear: 'Limpar',
143
+ eventWaiting: 'A aguardar eventos...',
144
+ gameStartBtn: 'INICIAR DESAFIO',
145
+ gameControllerWarning: 'Ligue um gamepad ou use o teclado',
146
+ gameTimer: 'Temporizador',
147
+ gameScore: 'Pontuação',
148
+ gameInstruction: 'Prima rápido',
149
+ gameCompleted: 'Desafio Concluído',
150
+ gameNewRecord: 'NOVO RECORDE',
151
+ gameRestartBtn: 'Repetir',
152
+ gameFeedback: 'És uma lenda dos botões',
153
+ gameIntroTitlePre: 'Reflexos de ',
154
+ gameIntroHighlight: 'Pro Gamer',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Teste a latência do seu comando e a sua velocidade de reação. Tem ',
157
+ gameIntroDescSeconds: '30 segundos',
158
+ gameIntroDescPost: ' para dominar os botões.',
159
+ gameShareBtn: 'PARTILHAR RATING',
160
+ gameLogConnected: 'Ligado',
161
+ gameLogDisconnected: 'Desligado',
162
+ gameLogCleared: 'Log limpo...',
163
+ gameLogBtnPrefix: 'Botão',
164
+ gameVibNotSupported: 'Vibração não suportada.',
165
+ gameVibLow: 'Baixa',
166
+ gameVibHigh: 'Alta',
167
+ gameMoveStick: 'MOVER STICK',
168
+ gamePress: 'PREMIR',
169
+ rankLegendaryName: 'LENDÁRIO',
170
+ rankLegendaryDesc: 'Os teus dedos movem-se à velocidade do som.',
171
+ rankLegendaryFlavor: 'O meu comando está a voar!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'Tens reflexos de aço e um comando bem calibrado.',
174
+ rankProFlavor: 'O meu comando está a voar!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Nada mau, mas precisas de mais prática para o jogo competitivo.',
177
+ rankGamerFlavor: 'Quase lá!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Tens a certeza de que tens o comando ligado?',
180
+ rankNoobFlavor: 'O comando está contra mim!',
181
+ gameShareText: 'Consegues vencer-me?',
182
+ gameShareScorePrefix: 'Consegui',
183
+ gameShareScoreSuffix: 'toques',
184
+ gameShareTitle: 'Teste de Gamepad Online',
185
+ },
186
+ };
@@ -0,0 +1,186 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestMandoUI } from '../ui';
4
+
5
+ const slug = 'test-gejmpada-online';
6
+ const title = 'Онлайн тест геймпада и контроллера';
7
+ const description = 'Проверьте свой контроллер Xbox, PlayStation или ПК. Визуализируйте мертвые зоны, дрифт стиков и кнопки.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Что такое дрифт джойстика (стики)?',
12
+ answer: 'Дрифт возникает, когда контроллер регистрирует движение без прикосновения к стику. Это вызвано износом внутренних потенциометров, которые посылают ложный электрический сигнал в постоянном направлении.',
13
+ },
14
+ {
15
+ question: 'Как исправить дрифт программно?',
16
+ answer: 'Если дрифт незначительный, вы можете настроить увеличенную «Мертвую зону» (Deadzone) в настройках игры. Это позволит игнорировать небольшие движения стика в центре.',
17
+ },
18
+ {
19
+ question: 'Совместим ли тест с контроллерами PS5, Xbox и Switch?',
20
+ answer: 'Да. Наш инструмент использует стандартный Gamepad API современных браузеров, который обнаруживает практически любой контроллер, подключенный через USB или Bluetooth, включая DualSense, DualShock 4 и контроллеры Xbox.',
21
+ },
22
+ {
23
+ question: 'Почему браузер не видит мой контроллер?',
24
+ answer: 'В целях безопасности браузеры включают геймпад только после первого нажатия кнопки. Если он не появляется, нажмите любую кнопку (например, A или X) и убедитесь, что вы не находитесь в строгом режиме инкогнито.',
25
+ },
26
+ ];
27
+
28
+ const howToData = [
29
+ {
30
+ name: 'Подключите контроллер',
31
+ text: 'Подключите геймпад через USB или сопрягите его по Bluetooth с вашим компьютером.',
32
+ },
33
+ {
34
+ name: 'Активируйте обнаружение',
35
+ text: 'Пошевелите стиками или нажмите любую кнопку, чтобы браузер распознал подключенное устройство.',
36
+ },
37
+ {
38
+ name: 'Проверьте мертвые зоны',
39
+ text: 'Отпустите стики и наблюдайте за осями на экране. Если значения не равны 0.0000, у вас есть небольшой дрифт.',
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<TestMandoUI> = {
82
+ slug,
83
+ title,
84
+ description,
85
+ faqTitle: 'Часто Задаваемые Вопросы',
86
+ faq: faqData,
87
+ bibliographyTitle: 'Технические Справки',
88
+ bibliography: [
89
+ {
90
+ name: 'Стандарт Gamepad API - W3C',
91
+ url: 'https://w3c.github.io/gamepad/',
92
+ },
93
+ {
94
+ name: 'Vibration API - MDN Web Docs',
95
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Vibration_API',
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: 'Бесплатный инструмент для проверки контроллеров Xbox, PlayStation, Switch и других. Визуализация мертвых зон, обнаружение дрифта и проверка вибрации.',
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: 'Совместим с Xbox One, Xbox Series X/S, PlayStation 4, PlayStation 5 (DualSense), Nintendo Switch Pro и практически любым современным USB или Bluetooth геймпадом.',
127
+ },
128
+ ],
129
+ ui: {
130
+ badge: 'Тест ввода',
131
+ title: 'Тест геймпада и контроллера',
132
+ description: 'Проверьте свой контроллер и выявите проблемы.',
133
+ connectionMessage: 'Подключите устройство USB или Bluetooth',
134
+ connectionStatus: 'Подключено',
135
+ axisLabel: 'Оси',
136
+ buttonsLabel: 'Кнопки',
137
+ vibrationTitle: 'Тест вибрации',
138
+ vibrationDescription: 'Требуется поддержка браузера и совместимый геймпад.',
139
+ vibrationLow: 'Низкая (Rumble)',
140
+ vibrationHigh: 'Высокая (Buzz)',
141
+ eventHistoryTitle: 'История событий',
142
+ eventHistoryClear: 'Очистить',
143
+ eventWaiting: 'Ожидание событий...',
144
+ gameStartBtn: 'НАЧАТЬ ИСПЫТАНИЕ',
145
+ gameControllerWarning: 'Подключите геймпад или используйте клавиатуру',
146
+ gameTimer: 'Таймер',
147
+ gameScore: 'Счет',
148
+ gameInstruction: 'Нажимай быстро',
149
+ gameCompleted: 'Испытание завершено',
150
+ gameNewRecord: 'НОВЫЙ РЕКОРД',
151
+ gameRestartBtn: 'Повторить',
152
+ gameFeedback: 'Ты легенда кнопок',
153
+ gameIntroTitlePre: 'Рефлексы ',
154
+ gameIntroHighlight: 'Pro Gamer',
155
+ gameIntroTitlePost: '?',
156
+ gameIntroDescPre: 'Проверьте задержку вашего контроллера и скорость вашей реакции. У вас есть ',
157
+ gameIntroDescSeconds: '30 секунд',
158
+ gameIntroDescPost: ', чтобы освоить кнопки.',
159
+ gameShareBtn: 'ПОДЕЛИТЬСЯ РАНГОМ',
160
+ gameLogConnected: 'Подключено',
161
+ gameLogDisconnected: 'Отключено',
162
+ gameLogCleared: 'Лог очищен...',
163
+ gameLogBtnPrefix: 'Кнопка',
164
+ gameVibNotSupported: 'Вибрация не поддерживается.',
165
+ gameVibLow: 'Низкая',
166
+ gameVibHigh: 'Высокая',
167
+ gameMoveStick: 'ДВИГАЙ СТИК',
168
+ gamePress: 'НАЖМИ',
169
+ rankLegendaryName: 'ЛЕГЕНДАРНЫЙ',
170
+ rankLegendaryDesc: 'Твои пальцы движутся со скоростью звука.',
171
+ rankLegendaryFlavor: 'Мой контроллер летает!',
172
+ rankProName: 'PRO GAMER',
173
+ rankProDesc: 'У тебя стальные рефлексы и хорошо откалиброванный контроллер.',
174
+ rankProFlavor: 'Мой контроллер летает!',
175
+ rankGamerName: 'GAMER',
176
+ rankGamerDesc: 'Неплохо, но тебе нужно больше практики для соревновательной игры.',
177
+ rankGamerFlavor: 'Почти получилось!',
178
+ rankNoobName: 'NOOB',
179
+ rankNoobDesc: 'Ты уверен, что включил контроллер?',
180
+ rankNoobFlavor: 'Контроллер против меня!',
181
+ gameShareText: 'Сможешь побить мой рекорд?',
182
+ gameShareScorePrefix: 'Мой результат:',
183
+ gameShareScoreSuffix: 'нажатий',
184
+ gameShareTitle: 'Онлайн-тест геймпада',
185
+ },
186
+ };