@jjlmoya/utils-hardware 1.17.0 → 1.18.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.
- package/package.json +1 -1
- package/src/category/i18n/de.ts +4 -4
- package/src/category/i18n/id.ts +3 -3
- package/src/category/i18n/it.ts +3 -3
- package/src/category/i18n/nl.ts +3 -3
- package/src/category/i18n/pl.ts +4 -4
- package/src/category/i18n/pt.ts +3 -3
- package/src/category/i18n/ru.ts +3 -3
- package/src/category/i18n/sv.ts +3 -3
- package/src/category/i18n/tr.ts +3 -3
- package/src/category/i18n/zh.ts +3 -3
- package/src/layouts/PreviewLayout.astro +1 -0
- package/src/tests/diacritics_density.test.ts +118 -0
- package/src/tests/inverted_punctuation.test.ts +84 -0
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/script_density.test.ts +94 -0
- package/src/tool/batteryHealthEstimator/i18n/fr.ts +4 -4
- package/src/tool/batteryHealthEstimator/i18n/pl.ts +1 -1
- package/src/tool/colorAccuracyTest/color-accuracy-test.css +118 -5
- package/src/tool/colorAccuracyTest/i18n/de.ts +7 -7
- package/src/tool/colorAccuracyTest/i18n/en.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/es.ts +2 -2
- package/src/tool/colorAccuracyTest/i18n/fr.ts +9 -9
- package/src/tool/colorAccuracyTest/i18n/id.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/it.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/ja.ts +1 -1
- package/src/tool/colorAccuracyTest/i18n/ko.ts +2 -2
- package/src/tool/colorAccuracyTest/i18n/nl.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/pl.ts +5 -5
- package/src/tool/colorAccuracyTest/i18n/pt.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/ru.ts +15 -15
- package/src/tool/colorAccuracyTest/i18n/sv.ts +3 -3
- package/src/tool/colorAccuracyTest/i18n/tr.ts +2 -2
- package/src/tool/colorAccuracyTest/i18n/zh.ts +7 -7
- package/src/tool/deadPixelTest/i18n/ru.ts +6 -6
- package/src/tool/deadPixelTest/i18n/sv.ts +1 -1
- package/src/tool/deadPixelTest/i18n/zh.ts +5 -5
- package/src/tool/gamepadTest/gamepad-test.css +171 -3
- package/src/tool/gamepadTest/i18n/es.ts +4 -4
- package/src/tool/gamepadTest/i18n/ru.ts +1 -1
- package/src/tool/gamepadTest/i18n/zh.ts +1 -1
- package/src/tool/gamepadVibrationTester/i18n/es.ts +1 -1
- package/src/tool/gamepadVibrationTester/i18n/fr.ts +2 -2
- package/src/tool/keyboardTest/keyboard-test.css +115 -2
- package/src/tool/mousePollingTest/i18n/fr.ts +3 -3
- package/src/tool/mousePollingTest/i18n/pl.ts +1 -1
- package/src/tool/mousePollingTest/i18n/ru.ts +1 -1
- package/src/tool/mousePollingTest/i18n/zh.ts +1 -1
- package/src/tool/refreshRateDetector/i18n/de.ts +3 -3
- package/src/tool/refreshRateDetector/i18n/en.ts +3 -3
- package/src/tool/refreshRateDetector/i18n/fr.ts +4 -4
- package/src/tool/refreshRateDetector/i18n/id.ts +3 -3
- package/src/tool/refreshRateDetector/i18n/pl.ts +2 -2
- package/src/tool/refreshRateDetector/i18n/pt.ts +3 -3
- package/src/tool/refreshRateDetector/i18n/sv.ts +3 -3
- package/src/tool/refreshRateDetector/i18n/tr.ts +2 -2
- package/src/tool/refreshRateDetector/i18n/zh.ts +2 -2
- package/src/tool/toneGenerator/i18n/fr.ts +2 -2
- package/src/tool/toneGenerator/i18n/pl.ts +1 -1
- package/src/tool/toneGenerator/i18n/ru.ts +2 -2
- package/src/tool/toneGenerator/i18n/zh.ts +3 -3
|
@@ -20,7 +20,15 @@
|
|
|
20
20
|
--tm-stick-border: #64748b;
|
|
21
21
|
|
|
22
22
|
width: 100%;
|
|
23
|
+
max-width: 100%;
|
|
23
24
|
color: var(--tm-text);
|
|
25
|
+
overflow-x: clip;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.tm-wrapper *,
|
|
29
|
+
.tm-wrapper *::before,
|
|
30
|
+
.tm-wrapper *::after {
|
|
31
|
+
box-sizing: border-box;
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
.theme-dark .tm-wrapper {
|
|
@@ -103,6 +111,8 @@ body.is-widget .tm-wrapper {
|
|
|
103
111
|
padding: 2rem;
|
|
104
112
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
|
|
105
113
|
border: 1px solid var(--tm-border);
|
|
114
|
+
max-width: 100%;
|
|
115
|
+
overflow: hidden;
|
|
106
116
|
}
|
|
107
117
|
|
|
108
118
|
.tm-card-header {
|
|
@@ -148,24 +158,28 @@ body.is-widget .tm-wrapper {
|
|
|
148
158
|
flex-direction: column;
|
|
149
159
|
align-items: center;
|
|
150
160
|
gap: 1rem;
|
|
161
|
+
width: 100%;
|
|
162
|
+
overflow: hidden;
|
|
151
163
|
}
|
|
152
164
|
|
|
153
165
|
.tm-stage {
|
|
154
166
|
position: relative;
|
|
155
167
|
width: 600px;
|
|
156
168
|
height: 420px;
|
|
169
|
+
flex: 0 0 600px;
|
|
170
|
+
transform-origin: top center;
|
|
157
171
|
transition: all 500ms;
|
|
158
172
|
}
|
|
159
173
|
|
|
160
174
|
.tm-stage-inactive {
|
|
161
175
|
opacity: 0.25;
|
|
162
176
|
filter: grayscale(1);
|
|
163
|
-
transform: scale(
|
|
177
|
+
transform: scale(var(--tm-stage-scale, 1));
|
|
164
178
|
}
|
|
165
179
|
|
|
166
180
|
@media (min-width: 640px) {
|
|
167
181
|
.tm-stage-inactive {
|
|
168
|
-
transform: scale(1);
|
|
182
|
+
transform: scale(var(--tm-stage-scale, 1));
|
|
169
183
|
}
|
|
170
184
|
}
|
|
171
185
|
|
|
@@ -460,6 +474,7 @@ body.is-widget .tm-wrapper {
|
|
|
460
474
|
font-size: 0.75rem;
|
|
461
475
|
color: var(--tm-text-muted);
|
|
462
476
|
transition: opacity 500ms;
|
|
477
|
+
min-width: 0;
|
|
463
478
|
}
|
|
464
479
|
|
|
465
480
|
.tm-info-inactive { opacity: 0.5; }
|
|
@@ -468,6 +483,7 @@ body.is-widget .tm-wrapper {
|
|
|
468
483
|
.tm-info-right {
|
|
469
484
|
display: flex;
|
|
470
485
|
gap: 1rem;
|
|
486
|
+
min-width: 0;
|
|
471
487
|
}
|
|
472
488
|
|
|
473
489
|
.tm-gp-id {
|
|
@@ -630,6 +646,7 @@ body.is-widget .tm-wrapper {
|
|
|
630
646
|
justify-content: center;
|
|
631
647
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
|
632
648
|
color: white;
|
|
649
|
+
max-width: 100%;
|
|
633
650
|
}
|
|
634
651
|
|
|
635
652
|
.tm-game-intro {
|
|
@@ -732,6 +749,7 @@ body.is-widget .tm-wrapper {
|
|
|
732
749
|
align-items: center;
|
|
733
750
|
width: 100%;
|
|
734
751
|
margin-bottom: 3rem;
|
|
752
|
+
gap: 1rem;
|
|
735
753
|
}
|
|
736
754
|
|
|
737
755
|
.tm-hud-item {
|
|
@@ -783,6 +801,7 @@ body.is-widget .tm-wrapper {
|
|
|
783
801
|
display: flex;
|
|
784
802
|
align-items: center;
|
|
785
803
|
justify-content: center;
|
|
804
|
+
max-width: 100%;
|
|
786
805
|
}
|
|
787
806
|
|
|
788
807
|
.tm-target-ring {
|
|
@@ -852,6 +871,8 @@ body.is-widget .tm-wrapper {
|
|
|
852
871
|
background: rgba(255, 255, 255, 0.05);
|
|
853
872
|
border-radius: 9999px;
|
|
854
873
|
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
874
|
+
max-width: 100%;
|
|
875
|
+
text-align: center;
|
|
855
876
|
}
|
|
856
877
|
|
|
857
878
|
.tm-instruction-dot {
|
|
@@ -922,6 +943,153 @@ body.is-widget .tm-wrapper {
|
|
|
922
943
|
justify-content: center;
|
|
923
944
|
}
|
|
924
945
|
|
|
946
|
+
@media (max-width: 700px) {
|
|
947
|
+
.tm-container {
|
|
948
|
+
padding: 0;
|
|
949
|
+
gap: 1.25rem;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.tm-card,
|
|
953
|
+
.tm-game-card {
|
|
954
|
+
border-radius: 0.875rem;
|
|
955
|
+
padding: 1rem;
|
|
956
|
+
}
|
|
957
|
+
|
|
958
|
+
.tm-card-header {
|
|
959
|
+
margin-bottom: 1.25rem;
|
|
960
|
+
}
|
|
961
|
+
|
|
962
|
+
.tm-title {
|
|
963
|
+
font-size: 1.5rem;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
.tm-stage-wrapper {
|
|
967
|
+
--tm-stage-scale: 0.9;
|
|
968
|
+
|
|
969
|
+
min-height: calc(420px * var(--tm-stage-scale));
|
|
970
|
+
}
|
|
971
|
+
|
|
972
|
+
.tm-stage {
|
|
973
|
+
transform: scale(var(--tm-stage-scale));
|
|
974
|
+
margin-bottom: calc((420px * var(--tm-stage-scale)) - 420px);
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.tm-info-bar {
|
|
978
|
+
flex-direction: column;
|
|
979
|
+
align-items: stretch;
|
|
980
|
+
gap: 0.5rem;
|
|
981
|
+
padding-top: 0.75rem;
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
.tm-info-left,
|
|
985
|
+
.tm-info-right {
|
|
986
|
+
justify-content: space-between;
|
|
987
|
+
gap: 0.5rem;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
.tm-vibration-panel,
|
|
991
|
+
.tm-log-section {
|
|
992
|
+
margin-top: 1rem;
|
|
993
|
+
border-radius: 0.75rem;
|
|
994
|
+
padding: 0.875rem;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
.tm-vibration-btns,
|
|
998
|
+
.tm-results-btns {
|
|
999
|
+
display: grid;
|
|
1000
|
+
grid-template-columns: 1fr;
|
|
1001
|
+
gap: 0.75rem;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
.tm-vib-btn,
|
|
1005
|
+
.tm-restart-btn,
|
|
1006
|
+
.tm-share-btn {
|
|
1007
|
+
width: 100%;
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
.tm-game-card {
|
|
1011
|
+
min-height: 420px;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
.tm-game-icon {
|
|
1015
|
+
width: 4rem;
|
|
1016
|
+
height: 4rem;
|
|
1017
|
+
margin-bottom: 1rem;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
.tm-game-intro-title {
|
|
1021
|
+
font-size: 1.65rem;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
1024
|
+
.tm-game-intro-desc {
|
|
1025
|
+
margin-bottom: 1.5rem;
|
|
1026
|
+
font-size: 0.95rem;
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
.tm-game-start-btn {
|
|
1030
|
+
width: 100%;
|
|
1031
|
+
padding: 1rem;
|
|
1032
|
+
font-size: 1rem;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
.tm-game-hud {
|
|
1036
|
+
margin-bottom: 1.5rem;
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
.tm-hud-label {
|
|
1040
|
+
font-size: 0.55rem;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
.tm-hud-value {
|
|
1044
|
+
font-size: 1.5rem;
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.tm-target-container {
|
|
1048
|
+
width: min(15rem, 78vw);
|
|
1049
|
+
height: min(15rem, 78vw);
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
.tm-target-btn {
|
|
1053
|
+
width: min(8rem, 45vw);
|
|
1054
|
+
height: min(8rem, 45vw);
|
|
1055
|
+
font-size: 2.5rem;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
.tm-game-instruction {
|
|
1059
|
+
margin-top: 1.5rem;
|
|
1060
|
+
border-radius: 0.75rem;
|
|
1061
|
+
padding: 0.75rem 1rem;
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
.tm-final-score {
|
|
1065
|
+
font-size: 4rem;
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
@media (max-width: 560px) {
|
|
1070
|
+
.tm-stage-wrapper {
|
|
1071
|
+
--tm-stage-scale: 0.82;
|
|
1072
|
+
}
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
@media (max-width: 500px) {
|
|
1076
|
+
.tm-stage-wrapper {
|
|
1077
|
+
--tm-stage-scale: 0.72;
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
@media (max-width: 440px) {
|
|
1082
|
+
.tm-stage-wrapper {
|
|
1083
|
+
--tm-stage-scale: 0.62;
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
@media (max-width: 380px) {
|
|
1088
|
+
.tm-stage-wrapper {
|
|
1089
|
+
--tm-stage-scale: 0.54;
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
|
|
925
1093
|
@media (min-width: 640px) {
|
|
926
1094
|
.tm-results-btns { flex-direction: row; }
|
|
927
1095
|
}
|
|
@@ -964,4 +1132,4 @@ body.is-widget .tm-wrapper {
|
|
|
964
1132
|
|
|
965
1133
|
@keyframes pulse {
|
|
966
1134
|
50% { opacity: 0.5; }
|
|
967
|
-
}
|
|
1135
|
+
}
|
|
@@ -158,16 +158,16 @@ export const content: ToolLocaleContent<TestMandoUI> = {
|
|
|
158
158
|
gamePress: 'PULSA',
|
|
159
159
|
rankLegendaryName: 'LEGENDARIO',
|
|
160
160
|
rankLegendaryDesc: 'Tus dedos se mueven a la velocidad del sonido.',
|
|
161
|
-
rankLegendaryFlavor: 'Mi mando vuela!',
|
|
161
|
+
rankLegendaryFlavor: '¡Mi mando vuela!',
|
|
162
162
|
rankProName: 'PRO GAMER',
|
|
163
163
|
rankProDesc: 'Tienes reflejos de acero y un mando bien calibrado.',
|
|
164
|
-
rankProFlavor: 'Mi mando vuela!',
|
|
164
|
+
rankProFlavor: '¡Mi mando vuela!',
|
|
165
165
|
rankGamerName: 'GAMER',
|
|
166
166
|
rankGamerDesc: 'No está mal, pero para el competitivo te falta calle.',
|
|
167
|
-
rankGamerFlavor: 'Casi lo tengo!',
|
|
167
|
+
rankGamerFlavor: '¡Casi lo tengo!',
|
|
168
168
|
rankNoobName: 'MANCO',
|
|
169
169
|
rankNoobDesc: '¿Seguro que tienes el mando encendido?',
|
|
170
|
-
rankNoobFlavor: 'El mando me tiene manía!',
|
|
170
|
+
rankNoobFlavor: '¡El mando me tiene manía!',
|
|
171
171
|
gameShareText: '¿Me superas?',
|
|
172
172
|
gameShareScorePrefix: 'Hice',
|
|
173
173
|
gameShareScoreSuffix: 'aciertos',
|
|
@@ -14,7 +14,7 @@ const faqData = [
|
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
question: 'Как исправить дрифт программно?',
|
|
17
|
-
answer: 'Если дрифт незначительный, вы можете настроить увеличенную
|
|
17
|
+
answer: 'Если дрифт незначительный, вы можете настроить увеличенную "Мертвую зону" (Deadzone) в настройках игры. Это позволит игнорировать небольшие движения стика в центре.',
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
question: 'Совместим ли тест с контроллерами PS5, Xbox и Switch?',
|
|
@@ -133,7 +133,7 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
|
|
|
133
133
|
presetHeartbeatDesc: 'Palpitaciones sutiles consecutivas. Perfecto para ver retenciones inerciales.',
|
|
134
134
|
presetSongTitle: 'Ritmo Moneda',
|
|
135
135
|
presetSongDesc: 'Simula el ruido de monedas consecutivas. Corto y táctil.',
|
|
136
|
-
presetRockYouTitle: 'Rock You!',
|
|
136
|
+
presetRockYouTitle: '¡Rock You!',
|
|
137
137
|
presetRockYouDesc: "El clásico de Queen en tus manos: pum, pum, ¡clap!",
|
|
138
138
|
presetEarthquakeTitle: '¡Terremoto Máximo!',
|
|
139
139
|
presetEarthquakeDesc: 'Ambos motores al 100% de fuerza explosiva. MUY intenso.',
|
|
@@ -106,7 +106,7 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
|
|
|
106
106
|
{ type: 'title', text: 'Architecture Dual-Rumble vs. Actionneurs Linéaires', level: 3 },
|
|
107
107
|
{
|
|
108
108
|
type: 'paragraph',
|
|
109
|
-
html: "Les manettes classiques (Xbox, DualShock) utilisent deux micromoteurs asymétriques
|
|
109
|
+
html: "Les manettes classiques (Xbox, DualShock) utilisent deux micromoteurs asymétriques: le gauche génère des vibrations graves et profondes ; le droit produit des bourdonnements aigus et rapides. Les appareils avancés comme le DualSense utilisent des actionneurs linéaires qui simulent textures et résistance.",
|
|
110
110
|
},
|
|
111
111
|
],
|
|
112
112
|
ui: {
|
|
@@ -129,7 +129,7 @@ export const content: ToolLocaleContent<ProbadorVibracionMandoUI> = {
|
|
|
129
129
|
presetSongTitle: 'Rythme Pièce',
|
|
130
130
|
presetSongDesc: 'Simule le son de pièces collectées. Court et tactile.',
|
|
131
131
|
presetRockYouTitle: 'Rock You!',
|
|
132
|
-
presetRockYouDesc: "Le classique de Queen dans vos mains
|
|
132
|
+
presetRockYouDesc: "Le classique de Queen dans vos mains: boum, boum, clap !",
|
|
133
133
|
presetEarthquakeTitle: 'Tremblement Maximal !',
|
|
134
134
|
presetEarthquakeDesc: 'Les deux moteurs à 100% de force explosive. TRÈS intense.',
|
|
135
135
|
customStrongLabel: 'Force Grave (Gauche)',
|
|
@@ -16,7 +16,15 @@
|
|
|
16
16
|
--tt-kb-bg: #e2e8f0;
|
|
17
17
|
|
|
18
18
|
width: 100%;
|
|
19
|
+
max-width: 100%;
|
|
19
20
|
color: var(--tt-text);
|
|
21
|
+
overflow-x: clip;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.tt-wrapper *,
|
|
25
|
+
.tt-wrapper *::before,
|
|
26
|
+
.tt-wrapper *::after {
|
|
27
|
+
box-sizing: border-box;
|
|
20
28
|
}
|
|
21
29
|
|
|
22
30
|
.theme-dark .tt-wrapper {
|
|
@@ -58,6 +66,8 @@ body.is-widget .tt-wrapper > div {
|
|
|
58
66
|
padding: 2rem;
|
|
59
67
|
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
|
|
60
68
|
border: 1px solid var(--tt-border);
|
|
69
|
+
max-width: 100%;
|
|
70
|
+
overflow: hidden;
|
|
61
71
|
}
|
|
62
72
|
|
|
63
73
|
.tt-header {
|
|
@@ -167,7 +177,7 @@ body.is-widget .tt-wrapper > div {
|
|
|
167
177
|
.tt-keyboard-wrapper {
|
|
168
178
|
position: relative;
|
|
169
179
|
width: 100%;
|
|
170
|
-
overflow
|
|
180
|
+
overflow: hidden;
|
|
171
181
|
padding-bottom: 1rem;
|
|
172
182
|
display: flex;
|
|
173
183
|
justify-content: center;
|
|
@@ -181,7 +191,9 @@ body.is-widget .tt-wrapper > div {
|
|
|
181
191
|
flex-direction: column;
|
|
182
192
|
gap: 0.25rem;
|
|
183
193
|
user-select: none;
|
|
194
|
+
width: 900px;
|
|
184
195
|
min-width: 900px;
|
|
196
|
+
transform-origin: top center;
|
|
185
197
|
}
|
|
186
198
|
|
|
187
199
|
.tt-row {
|
|
@@ -323,4 +335,105 @@ body.is-widget .tt-wrapper > div {
|
|
|
323
335
|
border-radius: 0.375rem;
|
|
324
336
|
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
|
325
337
|
flex-shrink: 0;
|
|
326
|
-
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
@media (max-width: 760px) {
|
|
341
|
+
.tt-container {
|
|
342
|
+
padding: 0;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
body.is-widget .tt-wrapper > div {
|
|
346
|
+
padding: 0;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
.tt-card {
|
|
350
|
+
border-radius: 0.875rem;
|
|
351
|
+
padding: 1rem;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
.tt-header {
|
|
355
|
+
margin-bottom: 1rem;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
.tt-title {
|
|
359
|
+
font-size: 1.5rem;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.tt-description {
|
|
363
|
+
font-size: 0.875rem;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.tt-stats {
|
|
367
|
+
display: grid;
|
|
368
|
+
grid-template-columns: 1fr auto;
|
|
369
|
+
width: 100%;
|
|
370
|
+
gap: 0.75rem;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
.tt-stat-box {
|
|
374
|
+
min-width: 0;
|
|
375
|
+
padding: 0.75rem;
|
|
376
|
+
border-radius: 0.75rem;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
.tt-stat-label {
|
|
380
|
+
font-size: 0.65rem;
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
.tt-stat-value {
|
|
384
|
+
font-size: 1.75rem;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
.tt-reset-btn {
|
|
388
|
+
width: 3.5rem;
|
|
389
|
+
min-height: 100%;
|
|
390
|
+
border-radius: 0.75rem;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.tt-keyboard-wrapper {
|
|
394
|
+
--tt-keyboard-scale: 0.82;
|
|
395
|
+
|
|
396
|
+
min-height: calc(20rem * var(--tt-keyboard-scale));
|
|
397
|
+
padding-bottom: 0;
|
|
398
|
+
align-items: flex-start;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.tt-keyboard {
|
|
402
|
+
transform: scale(var(--tt-keyboard-scale));
|
|
403
|
+
margin-bottom: calc((20rem * var(--tt-keyboard-scale)) - 20rem);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
.tt-event-log {
|
|
407
|
+
height: 2.25rem;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
@media (max-width: 680px) {
|
|
412
|
+
.tt-keyboard-wrapper {
|
|
413
|
+
--tt-keyboard-scale: 0.72;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
@media (max-width: 600px) {
|
|
418
|
+
.tt-keyboard-wrapper {
|
|
419
|
+
--tt-keyboard-scale: 0.62;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
@media (max-width: 520px) {
|
|
424
|
+
.tt-keyboard-wrapper {
|
|
425
|
+
--tt-keyboard-scale: 0.52;
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
@media (max-width: 440px) {
|
|
430
|
+
.tt-keyboard-wrapper {
|
|
431
|
+
--tt-keyboard-scale: 0.42;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
@media (max-width: 360px) {
|
|
436
|
+
.tt-keyboard-wrapper {
|
|
437
|
+
--tt-keyboard-scale: 0.36;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
@@ -101,17 +101,17 @@ export const content: ToolLocaleContent<TestRatonUI> = {
|
|
|
101
101
|
{ type: 'title', text: 'Niveaux de Taux de Sondage et Leurs Usages', level: 3 },
|
|
102
102
|
{
|
|
103
103
|
type: 'paragraph',
|
|
104
|
-
html: "<strong>125 Hz</strong> -La souris communique toutes les 8 ms. Parfait pour un usage bureautique, mais saccadé sur un écran 144Hz. <strong>1000 Hz</strong> -L'étalon-or du gaming
|
|
104
|
+
html: "<strong>125 Hz</strong> -La souris communique toutes les 8 ms. Parfait pour un usage bureautique, mais saccadé sur un écran 144Hz. <strong>1000 Hz</strong> -L'étalon-or du gaming: communication toutes les 1 ms, mouvement fluide. <strong>8000 Hz</strong> -Technologie de pointe (Razer, Logitech), nécessite un processeur puissant.",
|
|
105
105
|
},
|
|
106
106
|
{ type: 'title', text: 'Pourquoi mes Hz fluctuent-ils ?', level: 3 },
|
|
107
107
|
{
|
|
108
108
|
type: 'paragraph',
|
|
109
109
|
html: "Tout à fait normal. La plupart des souris modernes ont un taux de sondage dynamique pour économiser l'énergie. En déplaçant lentement la souris, elle envoie moins de rapports car il y a moins de nouvelles données. Seuls des mouvements rapides et continus poussent le capteur à son vrai pic maximum.",
|
|
110
110
|
},
|
|
111
|
-
{ type: 'title', text: 'Taux de Sondage vs DPI
|
|
111
|
+
{ type: 'title', text: 'Taux de Sondage vs DPI: La Grande Confusion', level: 3 },
|
|
112
112
|
{
|
|
113
113
|
type: 'paragraph',
|
|
114
|
-
html: "<strong>DPI (Dots Per Inch)</strong> est la
|
|
114
|
+
html: "<strong>DPI (Dots Per Inch)</strong> est la sensibilité: combien de pixels le curseur parcourt par pouce de déplacement physique. <strong>Hz (Taux de Sondage)</strong> est la fréquence de mise à jour: avec quelle fluidité et actualité ce mouvement est reporté. Les deux paramètres sont indépendants et complémentaires.",
|
|
115
115
|
},
|
|
116
116
|
],
|
|
117
117
|
ui: {
|
|
@@ -96,7 +96,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
|
|
|
96
96
|
{ type: 'title', text: 'Definitywny Przewodnik po Polling Rate', level: 2 },
|
|
97
97
|
{
|
|
98
98
|
type: 'paragraph',
|
|
99
|
-
html: 'Gdy fizycznie poruszasz myszką po podkładce, ten analogowy ruch musi zostać przetłumaczony na sygnały cyfrowe zrozumiałe dla komputera. <strong>Polling Rate</strong> to częstotliwość, z jaką mysz
|
|
99
|
+
html: 'Gdy fizycznie poruszasz myszką po podkładce, ten analogowy ruch musi zostać przetłumaczony na sygnały cyfrowe zrozumiałe dla komputera. <strong>Polling Rate</strong> to częstotliwość, z jaką mysz "raportuje" swoją pozycję do PC. Mierzy się ją w Hercach (Hz).',
|
|
100
100
|
},
|
|
101
101
|
{ type: 'title', text: 'Poziomy Polling Rate i ich zastosowania', level: 3 },
|
|
102
102
|
{
|
|
@@ -96,7 +96,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
|
|
|
96
96
|
{ type: 'title', text: 'Полное руководство по частоте опроса мыши', level: 2 },
|
|
97
97
|
{
|
|
98
98
|
type: 'paragraph',
|
|
99
|
-
html: 'Когда вы физически перемещаете мышь по коврику, это аналоговое движение должно быть преобразовано в цифровые сигналы, которые понимает ваш компьютер. <strong>Polling Rate</strong> -это частота, с которой мышь
|
|
99
|
+
html: 'Когда вы физически перемещаете мышь по коврику, это аналоговое движение должно быть преобразовано в цифровые сигналы, которые понимает ваш компьютер. <strong>Polling Rate</strong> -это частота, с которой мышь "сообщает" свою позицию ПК. Она измеряется в Герцах (Гц).',
|
|
100
100
|
},
|
|
101
101
|
{ type: 'title', text: 'Уровни частоты опроса и их использование', level: 3 },
|
|
102
102
|
{
|
|
@@ -96,7 +96,7 @@ export const content: ToolLocaleContent<TestRatonUI> = {
|
|
|
96
96
|
{ type: 'title', text: '鼠标回报率权威指南', level: 2 },
|
|
97
97
|
{
|
|
98
98
|
type: 'paragraph',
|
|
99
|
-
html: '当您在鼠标垫上物理移动鼠标时,这种模拟运动必须转换为电脑理解的数字信号。<strong>回报率 (Polling Rate)</strong>
|
|
99
|
+
html: '当您在鼠标垫上物理移动鼠标时,这种模拟运动必须转换为电脑理解的数字信号。<strong>回报率 (Polling Rate)</strong> 是鼠标向电脑"报告"其位置的频率。它以赫兹 (Hz) 为单位。',
|
|
100
100
|
},
|
|
101
101
|
{ type: 'title', text: '回报率等级及其用途', level: 3 },
|
|
102
102
|
{
|
|
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
122
122
|
{
|
|
123
123
|
type: 'list',
|
|
124
124
|
items: [
|
|
125
|
-
'Laden Sie diesen Detektor
|
|
125
|
+
'Laden Sie diesen Detektor - die Messung beginnt sofort',
|
|
126
126
|
'Wählen Sie zwischen dem schnellen (3s) oder dem stabilen (10s) Messmodus',
|
|
127
127
|
'Lesen Sie die Hz-Zahl Ihres Monitors auf der Tachometerskala ab',
|
|
128
128
|
'Vergleichen Sie sie mit Industriestandards (60, 75, 120, 144, 240, 360 Hz)',
|
|
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
152
152
|
{
|
|
153
153
|
type: 'list',
|
|
154
154
|
items: [
|
|
155
|
-
'Prüfen Sie die HDMI/DisplayPort-Kabelverbindungen
|
|
155
|
+
'Prüfen Sie die HDMI/DisplayPort-Kabelverbindungen - lose Kabel reduzieren die Bandbreite',
|
|
156
156
|
'Aktualisieren Sie Ihre GPU-Treiber (NVIDIA, AMD, Intel)',
|
|
157
157
|
'Überprüfen Sie die Betriebssystem-Anzeigeeinstellungen, um sicherzustellen, dass eine hohe Bildwiederholfrequenz aktiviert ist',
|
|
158
158
|
'Probieren Sie verschiedene Kabel oder Anschlüsse an Ihrem Monitor aus',
|
|
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
type: 'paragraph',
|
|
169
|
-
html: 'Dieses Tool verwendet die requestAnimationFrame-API des Browsers, die direkt mit dem Aktualisierungszyklus Ihres Monitors synchronisiert wird. Durch Messen der Zeit zwischen den Animationsframes berechnen wir Ihre exakte Bildwiederholfrequenz mit hoher Präzision
|
|
169
|
+
html: 'Dieses Tool verwendet die requestAnimationFrame-API des Browsers, die direkt mit dem Aktualisierungszyklus Ihres Monitors synchronisiert wird. Durch Messen der Zeit zwischen den Animationsframes berechnen wir Ihre exakte Bildwiederholfrequenz mit hoher Präzision - keine spezielle Hardware erforderlich.',
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
172
|
ui: {
|
|
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
122
122
|
{
|
|
123
123
|
type: 'list',
|
|
124
124
|
items: [
|
|
125
|
-
'Load this detector
|
|
125
|
+
'Load this detector-measurement begins immediately',
|
|
126
126
|
'Choose between Fast (3s) or Stable (10s) measurement mode',
|
|
127
127
|
'Read your monitor\'s Hz from the speedometer dial',
|
|
128
128
|
'Compare against industry standards (60, 75, 120, 144, 240, 360Hz)',
|
|
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
152
152
|
{
|
|
153
153
|
type: 'list',
|
|
154
154
|
items: [
|
|
155
|
-
'Check HDMI/DisplayPort cable connections
|
|
155
|
+
'Check HDMI/DisplayPort cable connections-loose cables reduce bandwidth',
|
|
156
156
|
'Update your GPU drivers (NVIDIA, AMD, Intel)',
|
|
157
157
|
'Check OS display settings to ensure high refresh rate is enabled',
|
|
158
158
|
'Try different cables or ports on your monitor',
|
|
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
type: 'paragraph',
|
|
169
|
-
html: 'This tool uses the browser\'s requestAnimationFrame API, which synchronizes directly with your monitor\'s refresh cycle. By measuring the time between animation frames, we calculate your exact refresh rate with high precision
|
|
169
|
+
html: 'This tool uses the browser\'s requestAnimationFrame API, which synchronizes directly with your monitor\'s refresh cycle. By measuring the time between animation frames, we calculate your exact refresh rate with high precision-no special hardware needed.',
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
172
|
ui: {
|
|
@@ -22,7 +22,7 @@ const faqData = [
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
question: 'Pourquoi mon Hz détecté est-il différent de ce qu\'indique mon moniteur ?',
|
|
25
|
-
answer: 'Cela peut arriver si
|
|
25
|
+
answer: 'Cela peut arriver si: votre connexion par câble est lâche, vos pilotes sont obsolètes ou la mise à l\'échelle de votre système d\'exploitation interfère. Essayez de débrancher et de rebrancher votre câble d\'affichage, ou de mettre à jour les pilotes de votre GPU.',
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
question: 'Quels taux de rafraîchissement les moniteurs modernes prennent-ils en charge ?',
|
|
@@ -48,7 +48,7 @@ const howToData = [
|
|
|
48
48
|
text: 'L\'outil affiche la norme correspondant à votre moniteur (60, 75, 120, 144, 240, 360Hz).',
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
|
-
name: 'Optionnel
|
|
51
|
+
name: 'Optionnel: test de saut d\'images',
|
|
52
52
|
text: 'Observez le carré animé traverser l\'écran pour confirmer visuellement la fluidité.',
|
|
53
53
|
},
|
|
54
54
|
];
|
|
@@ -98,7 +98,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
98
98
|
seo: [
|
|
99
99
|
{
|
|
100
100
|
type: 'title',
|
|
101
|
-
text: 'Détecteur de Taux de Rafraîchissement du Moniteur
|
|
101
|
+
text: 'Détecteur de Taux de Rafraîchissement du Moniteur: Testez les Hz de votre Écran en Ligne',
|
|
102
102
|
level: 2,
|
|
103
103
|
},
|
|
104
104
|
{
|
|
@@ -146,7 +146,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
148
|
type: 'title',
|
|
149
|
-
text: 'Dépannage
|
|
149
|
+
text: 'Dépannage: L\'Écran Affiche moins de Hz que Prévu',
|
|
150
150
|
level: 3,
|
|
151
151
|
},
|
|
152
152
|
{
|
|
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
122
122
|
{
|
|
123
123
|
type: 'list',
|
|
124
124
|
items: [
|
|
125
|
-
'Buka detektor ini
|
|
125
|
+
'Buka detektor ini-pengukuran dimulai segera',
|
|
126
126
|
'Pilih antara mode pengukuran Cepat (3 detik) atau Stabil (10 detik)',
|
|
127
127
|
'Baca Hz monitor Anda dari dial speedometer',
|
|
128
128
|
'Bandingkan dengan standar industri (60, 75, 120, 144, 240, 360Hz)',
|
|
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
152
152
|
{
|
|
153
153
|
type: 'list',
|
|
154
154
|
items: [
|
|
155
|
-
'Periksa koneksi kabel HDMI/DisplayPort
|
|
155
|
+
'Periksa koneksi kabel HDMI/DisplayPort-kabel longgar mengurangi bandwidth',
|
|
156
156
|
'Perbarui driver GPU Anda (NVIDIA, AMD, Intel)',
|
|
157
157
|
'Periksa pengaturan layar OS untuk memastikan refresh rate tinggi telah diaktifkan',
|
|
158
158
|
'Coba kabel atau port yang berbeda pada monitor Anda',
|
|
@@ -166,7 +166,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
166
166
|
},
|
|
167
167
|
{
|
|
168
168
|
type: 'paragraph',
|
|
169
|
-
html: 'Alat ini menggunakan API requestAnimationFrame browser, yang sinkron langsung dengan siklus refresh monitor Anda. Dengan mengukur waktu antar frame animasi, kami menghitung refresh rate Anda yang tepat dengan presisi tinggi
|
|
169
|
+
html: 'Alat ini menggunakan API requestAnimationFrame browser, yang sinkron langsung dengan siklus refresh monitor Anda. Dengan mengukur waktu antar frame animasi, kami menghitung refresh rate Anda yang tepat dengan presisi tinggi-tanpa perlu perangkat keras khusus.',
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
172
|
ui: {
|
|
@@ -122,7 +122,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
122
122
|
{
|
|
123
123
|
type: 'list',
|
|
124
124
|
items: [
|
|
125
|
-
'Uruchom detektor
|
|
125
|
+
'Uruchom detektor - pomiar zaczyna się automatycznie',
|
|
126
126
|
'Wybierz tryb Szybki (3s) lub Stabilny (10s)',
|
|
127
127
|
'Odczytaj Hz z tarczy prędkościomierza',
|
|
128
128
|
'Porównaj z normami branżowymi (60, 75, 120, 144, 240, 360Hz)',
|
|
@@ -152,7 +152,7 @@ export const content: ToolLocaleContent<RefreshRateDetectorUI> = {
|
|
|
152
152
|
{
|
|
153
153
|
type: 'list',
|
|
154
154
|
items: [
|
|
155
|
-
'Sprawdź kabel HDMI/DisplayPort
|
|
155
|
+
'Sprawdź kabel HDMI/DisplayPort - słabe połączenie ogranicza przepustowość',
|
|
156
156
|
'Zaktualizuj sterowniki karty graficznej (NVIDIA, AMD, Intel)',
|
|
157
157
|
'Sprawdź ustawienia ekranu w systemie, aby włączyć wysokie odświeżanie',
|
|
158
158
|
'Wypróbuj inne kable lub porty w monitorze',
|