mirror of
https://github.com/dualshock-tools/dualshock-tools.github.io.git
synced 2026-07-18 13:44:17 +03:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fc58dbe64 | ||
|
|
2a834b130b | ||
|
|
c436d94ead | ||
|
|
1e7d4e83cc | ||
|
|
f643dbe005 | ||
|
|
b85f12eccd | ||
|
|
0aac1509aa | ||
|
|
5237c7ca46 | ||
|
|
b163a7d1d4 | ||
|
|
6f662c6a7a | ||
|
|
77b3cedfad | ||
|
|
1fa7066477 | ||
|
|
65376ea717 | ||
|
|
97317bd7b2 | ||
|
|
ef5b307046 | ||
|
|
9e359c9dcd | ||
|
|
152a11d7bc | ||
|
|
5c1a0f44f8 | ||
|
|
6c876b896b | ||
|
|
0105d3d71d | ||
|
|
4edbf811d7 | ||
|
|
7a30759a12 | ||
|
|
e83c790e5a | ||
|
|
120c1423a1 | ||
|
|
d1cbaeffd8 | ||
|
|
10123705f0 |
472
core.js
472
core.js
@@ -22,12 +22,17 @@ var last_written_finetune_data = []
|
||||
var finetune_visible = false
|
||||
var on_finetune_updating = false
|
||||
|
||||
// Global object to keep track of button states
|
||||
const ds_button_states = {
|
||||
// e.g. 'square': false, 'cross': false, ...
|
||||
};
|
||||
|
||||
// Alphabetical order
|
||||
var available_langs = {
|
||||
"ar_ar": { "name": "العربية", "file": "ar_ar.json", "direction": "rtl"},
|
||||
"bg_bg": { "name": "Български", "file": "bg_bg.json", "direction": "ltr"},
|
||||
"cz_cz": { "name": "Čeština", "file": "cz_cz.json", "direction": "ltr"},
|
||||
"da_dk": { "name": "Dansk", "file": "da_dk.json", "direction": "ltr"},
|
||||
"de_de": { "name": "Deutsch", "file": "de_de.json", "direction": "ltr"},
|
||||
"es_es": { "name": "Español", "file": "es_es.json", "direction": "ltr"},
|
||||
"fr_fr": { "name": "Français", "file": "fr_fr.json", "direction": "ltr"},
|
||||
@@ -236,6 +241,7 @@ async function ds4_calibrate_range_begin() {
|
||||
try {
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,2]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91)
|
||||
@@ -261,6 +267,7 @@ async function ds4_calibrate_range_end() {
|
||||
try {
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,2]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
data = await device.receiveFeatureReport(0x91)
|
||||
data2 = await device.receiveFeatureReport(0x92)
|
||||
@@ -289,6 +296,7 @@ async function ds4_calibrate_sticks_begin() {
|
||||
try {
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
@@ -316,6 +324,7 @@ async function ds4_calibrate_sticks_sample() {
|
||||
try {
|
||||
// Sample
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [3,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
@@ -342,6 +351,7 @@ async function ds4_calibrate_sticks_end() {
|
||||
try {
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
data2 = await device.receiveFeatureReport(0x92);
|
||||
@@ -365,18 +375,19 @@ async function ds4_calibrate_sticks_end() {
|
||||
|
||||
async function ds4_calibrate_sticks() {
|
||||
la("ds4_calibrate_sticks");
|
||||
var err = l("Stick calibration failed: ");
|
||||
let err = l("Stick calibration failed: ");
|
||||
try {
|
||||
set_progress(0);
|
||||
|
||||
// Begin
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [1,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
data2 = await device.receiveFeatureReport(0x92);
|
||||
d1 = data.getUint32(0, false);
|
||||
d2 = data2.getUint32(0, false);
|
||||
let data = await device.receiveFeatureReport(0x91);
|
||||
let data2 = await device.receiveFeatureReport(0x92);
|
||||
let d1 = data.getUint32(0, false);
|
||||
let d2 = data2.getUint32(0, false);
|
||||
if(d1 != 0x91010101 || d2 != 0x920101ff) {
|
||||
la("ds4_calibrate_sticks_failed", {"s": 1, "d1": d1, "d2": d2});
|
||||
close_calibrate_window();
|
||||
@@ -384,18 +395,19 @@ async function ds4_calibrate_sticks() {
|
||||
}
|
||||
|
||||
set_progress(10);
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
for(var i=0;i<3;i++) {
|
||||
// Sample
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [3,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
|
||||
// Assert
|
||||
data = await device.receiveFeatureReport(0x91);
|
||||
data2 = await device.receiveFeatureReport(0x92);
|
||||
let data = await device.receiveFeatureReport(0x91);
|
||||
let data2 = await device.receiveFeatureReport(0x92);
|
||||
if(data.getUint32(0, false) != 0x91010101 || data2.getUint32(0, false) != 0x920101ff) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
d2 = dec2hex32(data2.getUint32(0, false));
|
||||
let d1 = dec2hex32(data.getUint32(0, false));
|
||||
let d2 = dec2hex32(data2.getUint32(0, false));
|
||||
la("ds4_calibrate_sticks_failed", {"s": 2, "i": i, "d1": d1, "d2": d2});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 2") + " (" + d1 + ", " + d2 + " at i=" + i + ")");
|
||||
@@ -407,9 +419,10 @@ async function ds4_calibrate_sticks() {
|
||||
|
||||
// Write
|
||||
await device.sendFeatureReport(0x90, alloc_req(0x90, [2,1,1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
if(data.getUint32(0, false) != 0x91010101 || data2.getUint32(0, false) != 0x920101FF) {
|
||||
d1 = dec2hex32(data.getUint32(0, false));
|
||||
d2 = dec2hex32(data2.getUint32(0, false));
|
||||
let d1 = dec2hex32(data.getUint32(0, false));
|
||||
let d2 = dec2hex32(data2.getUint32(0, false));
|
||||
la("ds4_calibrate_sticks_failed", {"s": 3, "d1": d1, "d2": d2});
|
||||
close_calibrate_window();
|
||||
return show_popup(err + l("Error 3") + " (" + d1 + ", " + d2 + " at i=" + i + ")");
|
||||
@@ -547,21 +560,27 @@ async function ds5_system_info(base, num, length, decode = true) {
|
||||
return l("Unknown");
|
||||
}
|
||||
|
||||
function ds5_edge_color(x) {
|
||||
function ds5_color(x) {
|
||||
const colorMap = {
|
||||
'00' : 'White',
|
||||
'01' : 'Black',
|
||||
'02' : 'Cosmic Red',
|
||||
'03' : 'Nova Pink',
|
||||
'04' : 'Galactic Purple',
|
||||
'05' : 'Starlight Blue',
|
||||
'06' : 'Gray Camo',
|
||||
'07' : 'Volcanic Red',
|
||||
'08' : 'Sterling Silver',
|
||||
'09' : 'Chroma Indigo',
|
||||
'30' : '30Th Anniversary',
|
||||
'Z1' : 'God of War Ragnarok',
|
||||
'Z3' : 'Astro Bot'
|
||||
'00' : l('White'),
|
||||
'01' : l('Midnight Black'),
|
||||
'02' : l('Cosmic Red'),
|
||||
'03' : l('Nova Pink'),
|
||||
'04' : l('Galactic Purple'),
|
||||
'05' : l('Starlight Blue'),
|
||||
'06' : l('Grey Camouflage'),
|
||||
'07' : l('Volcanic Red'),
|
||||
'08' : l('Sterling Silver'),
|
||||
'09' : l('Cobalt Blue'),
|
||||
'10' : l('Chroma Teal'),
|
||||
'11' : l('Chroma Indigo'),
|
||||
'12' : l('Chroma Pearl'),
|
||||
'30' : l('30th Anniversary'),
|
||||
'Z1' : l('God of War Ragnarok'),
|
||||
'Z2' : l('Spider-Man 2'),
|
||||
'Z3' : l('Astro Bot'),
|
||||
'Z4' : l('Fortnite'),
|
||||
'Z6' : l('The Last of Us')
|
||||
};
|
||||
|
||||
const colorCode = x.slice(4, 6);
|
||||
@@ -569,6 +588,11 @@ function ds5_edge_color(x) {
|
||||
return colorName;
|
||||
}
|
||||
|
||||
// This function should be used only for ASCII strings (not UTF)
|
||||
function reverse_str(s) {
|
||||
return s.split('').reverse().join('');
|
||||
}
|
||||
|
||||
|
||||
async function ds5_info(is_edge) {
|
||||
try {
|
||||
@@ -604,15 +628,15 @@ async function ds5_info(is_edge) {
|
||||
serial_number = await ds5_system_info(1, 19, 17);
|
||||
append_info(l("Serial Number"), serial_number, "hw");
|
||||
append_info_extra(l("MCU Unique ID"), await ds5_system_info(1, 9, 9, false), "hw");
|
||||
append_info_extra(l("PCBA ID"), await ds5_system_info(1, 17, 14), "hw");
|
||||
append_info_extra(l("PCBA ID"), reverse_str(await ds5_system_info(1, 17, 14)), "hw");
|
||||
append_info_extra(l("Battery Barcode"), await ds5_system_info(1, 24, 23), "hw");
|
||||
append_info_extra(l("VCM Left Barcode"), await ds5_system_info(1, 26, 16), "hw");
|
||||
append_info_extra(l("VCM Right Barcode"), await ds5_system_info(1, 28, 16), "hw");
|
||||
|
||||
if(is_edge) {
|
||||
color = ds5_edge_color(serial_number);
|
||||
append_info(l("Color"), color + c_info, "hw");
|
||||
} else {
|
||||
color = ds5_color(serial_number);
|
||||
append_info(l("Color"), color + c_info, "hw");
|
||||
|
||||
if(!is_edge) {
|
||||
append_info(l("Board Model"), ds5_hw_to_bm(hwinfo) + b_info, "hw");
|
||||
}
|
||||
|
||||
@@ -929,11 +953,12 @@ async function wait_until_written(expected) {
|
||||
data = await device.receiveFeatureReport(0x81)
|
||||
|
||||
again = false
|
||||
for(i=0;i<expected.length;i++)
|
||||
for(i=0;i<expected.length;i++) {
|
||||
if(data.getUint8(1+i, true) != expected[i]) {
|
||||
again = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!again) {
|
||||
return true;
|
||||
}
|
||||
@@ -946,6 +971,40 @@ function set_edge_progress(score) {
|
||||
$("#dsedge-progress").css({ "width": score + "%" })
|
||||
}
|
||||
|
||||
async function ds5_edge_unlock_module(i) {
|
||||
m_name = i == 0 ? "left module" : "right module";
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, i, 11]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 6, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot unlock") + " " + l(m_name));
|
||||
}
|
||||
}
|
||||
|
||||
async function ds5_edge_lock_module(i) {
|
||||
m_name = i == 0 ? "left module" : "right module";
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 4, i, 8]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 4, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot lock") + " " + l(m_name));
|
||||
}
|
||||
}
|
||||
|
||||
async function ds5_edge_store_data_into(i) {
|
||||
m_name = i == 0 ? "left module" : "right module";
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, i]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 5, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot store data into") + " " + l(m_name));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
async function ds5_edge_flash_modules() {
|
||||
la("ds5_edge_flash_modules");
|
||||
var modal = null;
|
||||
@@ -959,74 +1018,36 @@ async function ds5_edge_flash_modules() {
|
||||
set_edge_progress(0);
|
||||
|
||||
// Reload data, this ensures correctly writing data in the controller
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
set_edge_progress(10);
|
||||
|
||||
// Unlock modules
|
||||
await ds5_edge_unlock_module(0);
|
||||
set_edge_progress(15);
|
||||
await ds5_edge_unlock_module(1);
|
||||
set_edge_progress(30);
|
||||
|
||||
// Unlock NVS
|
||||
await ds5_nvunlock()
|
||||
await new Promise(r => setTimeout(r, 50));
|
||||
set_edge_progress(5);
|
||||
set_edge_progress(45);
|
||||
|
||||
// This should trigger write into modules
|
||||
data = await ds5_get_inmemory_module_data()
|
||||
await new Promise(r => setTimeout(r, 50));
|
||||
set_edge_progress(10);
|
||||
set_edge_progress(60);
|
||||
await write_finetune_data(data)
|
||||
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
set_edge_progress(15);
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 0]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 6, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot unlock") + " " + l("left module"));
|
||||
}
|
||||
|
||||
// Extra delay
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
|
||||
set_edge_progress(30);
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 0]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 5, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot store data into") + " " + l("left module"));
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
|
||||
set_edge_progress(45);
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 6, 1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 6, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot unlock") + " " + l("right module"));
|
||||
}
|
||||
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
set_edge_progress(60);
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 5, 1]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 5, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot store data into") + " " + l("right module"));
|
||||
}
|
||||
|
||||
set_edge_progress(75);
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 4, 0, 0]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 4, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot lock") + " " + l("left module"));
|
||||
}
|
||||
|
||||
set_edge_progress(90);
|
||||
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [21, 4, 1, 0]))
|
||||
await new Promise(r => setTimeout(r, 200));
|
||||
ret = await wait_until_written([21, 4, 2])
|
||||
if(!ret) {
|
||||
throw new Error(l("Cannot lock") + " " + l("right module"));
|
||||
}
|
||||
|
||||
// Lock back modules
|
||||
await ds5_edge_lock_module(0);
|
||||
set_edge_progress(80);
|
||||
await ds5_edge_lock_module(1);
|
||||
set_edge_progress(100);
|
||||
|
||||
// Lock back NVS
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
await ds5_nvlock()
|
||||
|
||||
@@ -1127,11 +1148,29 @@ function welcome_accepted() {
|
||||
$("#welcomeModal").modal("hide");
|
||||
}
|
||||
|
||||
function init_svg_colors() {
|
||||
const lightBlue = '#7ecbff';
|
||||
const midBlue = '#3399cc';
|
||||
const controller = document.getElementById('Controller');
|
||||
set_svg_group_color(controller, lightBlue);
|
||||
|
||||
['Button_outlines', 'L3_outline', 'R3_outline', 'Trackpad_outline'].forEach(id => {
|
||||
const group = document.getElementById(id);
|
||||
set_svg_group_color(group, midBlue);
|
||||
});
|
||||
|
||||
['Button_infills', 'L3_infill', 'R3_infill', 'Trackpad_infill'].forEach(id => {
|
||||
const group = document.getElementById(id);
|
||||
set_svg_group_color(group, 'white');
|
||||
});
|
||||
}
|
||||
|
||||
function gboot() {
|
||||
gu = crypto.randomUUID();
|
||||
$("#infoshowall").hide();
|
||||
window.addEventListener('DOMContentLoaded', function() {
|
||||
lang_init();
|
||||
init_svg_colors();
|
||||
welcome_modal();
|
||||
$("#checkCircularity").on('change', on_circ_check_change);
|
||||
on_circ_check_change();
|
||||
@@ -1167,9 +1206,11 @@ async function on_finetune_change(x) {
|
||||
list = ["LL", "LT", "RL", "RT", "LR", "LB", "RR", "RB", "LX", "LY", "RX", "RY"]
|
||||
|
||||
out=[]
|
||||
for(i=0;i<12;i++) {
|
||||
v = $("#finetune" + list[i]).val()
|
||||
out.push(parseInt(v))
|
||||
|
||||
for(let i=0;i<12;i++) {
|
||||
let el = $("#finetune" + list[i]);
|
||||
let v = parseInt(el.val())
|
||||
out.push(v)
|
||||
}
|
||||
await write_finetune_data(out)
|
||||
}
|
||||
@@ -1195,9 +1236,9 @@ async function ds5_finetune() {
|
||||
curModal = new bootstrap.Modal(document.getElementById('finetuneModal'), {})
|
||||
curModal.show();
|
||||
|
||||
list = ["LL", "LT", "RL", "RT", "LR", "LB", "RR", "RB", "LX", "LY", "RX", "RY"]
|
||||
let list = ["LL", "LT", "RL", "RT", "LR", "LB", "RR", "RB", "LX", "LY", "RX", "RY"]
|
||||
for(i=0;i<12;i++) {
|
||||
$("#finetune" + list[i]).attr("value", data[i])
|
||||
$("#finetune" + list[i]).val(data[i])
|
||||
$("#finetune" + list[i]).on('change', on_finetune_change)
|
||||
}
|
||||
|
||||
@@ -1214,7 +1255,9 @@ async function ds5_get_inmemory_module_data() {
|
||||
} else if(mode == 3) {
|
||||
// DualSense Edge
|
||||
await device.sendFeatureReport(0x80, alloc_req(0x80, [12, 4]))
|
||||
|
||||
}
|
||||
await new Promise(r => setTimeout(r, 100));
|
||||
var data = await device.receiveFeatureReport(0x81)
|
||||
var cmd = data.getUint8(0, true);
|
||||
var p1 = data.getUint8(1, true);
|
||||
@@ -1544,6 +1587,28 @@ function refresh_stick_pos() {
|
||||
$("#el-lbl").text(el);
|
||||
$("#er-lbl").text(er);
|
||||
}
|
||||
|
||||
// Move L3 and R3 SVG elements according to stick position
|
||||
try {
|
||||
// These values are tuned for the SVG's coordinate system and visual effect
|
||||
const max_stick_offset = 25;
|
||||
// L3 center in SVG coordinates (from path: cx=295.63, cy=461.03)
|
||||
const l3_cx = 295.63, l3_cy = 461.03;
|
||||
// R3 center in SVG coordinates (from path: cx=662.06, cy=419.78)
|
||||
const r3_cx = 662.06, r3_cy = 419.78;
|
||||
|
||||
const l3_x = l3_cx + plx * max_stick_offset;
|
||||
const l3_y = l3_cy + ply * max_stick_offset;
|
||||
const l3_group = document.querySelector('g#L3');
|
||||
l3_group?.setAttribute('transform', `translate(${l3_x - l3_cx},${l3_y - l3_cy}) scale(0.70)`);
|
||||
|
||||
const r3_x = r3_cx + prx * max_stick_offset;
|
||||
const r3_y = r3_cy + pry * max_stick_offset;
|
||||
const r3_group = document.querySelector('g#R3');
|
||||
r3_group?.setAttribute('transform', `translate(${r3_x - r3_cx},${r3_y - r3_cy}) scale(0.70)`);
|
||||
} catch (e) {
|
||||
// Fail silently if SVG not present
|
||||
}
|
||||
}
|
||||
|
||||
function circ_checked() { return $("#checkCircularity").is(':checked') }
|
||||
@@ -1638,6 +1703,177 @@ function update_battery_status(bat_capacity, cable_connected, is_charging, is_er
|
||||
}
|
||||
}
|
||||
|
||||
const DS4_BUTTON_MAP = [
|
||||
{ name: 'up', byte: 4, mask: 0x0 }, // Dpad handled separately
|
||||
{ name: 'right', byte: 4, mask: 0x1 },
|
||||
{ name: 'down', byte: 4, mask: 0x2 },
|
||||
{ name: 'left', byte: 4, mask: 0x3 },
|
||||
{ name: 'square', byte: 4, mask: 0x10, svg: 'Square' },
|
||||
{ name: 'cross', byte: 4, mask: 0x20, svg: 'Cross' },
|
||||
{ name: 'circle', byte: 4, mask: 0x40, svg: 'Circle' },
|
||||
{ name: 'triangle', byte: 4, mask: 0x80, svg: 'Triangle' },
|
||||
{ name: 'l1', byte: 5, mask: 0x01, svg: 'L1' },
|
||||
{ name: 'l2', byte: 5, mask: 0x04, svg: 'L2' }, // analog handled separately
|
||||
{ name: 'r1', byte: 5, mask: 0x02, svg: 'R1' },
|
||||
{ name: 'r2', byte: 5, mask: 0x08, svg: 'R2' }, // analog handled separately
|
||||
{ name: 'share', byte: 5, mask: 0x10, svg: 'Create' },
|
||||
{ name: 'options', byte: 5, mask: 0x20, svg: 'Options' },
|
||||
{ name: 'l3', byte: 5, mask: 0x40, svg: 'L3' },
|
||||
{ name: 'r3', byte: 5, mask: 0x80, svg: 'R3' },
|
||||
{ name: 'ps', byte: 6, mask: 0x01, svg: 'PS' },
|
||||
{ name: 'touchpad', byte: 6, mask: 0x02, svg: 'Trackpad' },
|
||||
// No mute button on DS4
|
||||
];
|
||||
|
||||
const DS5_BUTTON_MAP = [
|
||||
{ name: 'up', byte: 7, mask: 0x0 }, // Dpad handled separately
|
||||
{ name: 'right', byte: 7, mask: 0x1 },
|
||||
{ name: 'down', byte: 7, mask: 0x2 },
|
||||
{ name: 'left', byte: 7, mask: 0x3 },
|
||||
{ name: 'square', byte: 7, mask: 0x10, svg: 'Square' },
|
||||
{ name: 'cross', byte: 7, mask: 0x20, svg: 'Cross' },
|
||||
{ name: 'circle', byte: 7, mask: 0x40, svg: 'Circle' },
|
||||
{ name: 'triangle', byte: 7, mask: 0x80, svg: 'Triangle' },
|
||||
{ name: 'l1', byte: 8, mask: 0x01, svg: 'L1' },
|
||||
{ name: 'l2', byte: 4, mask: 0xff }, // analog handled separately
|
||||
{ name: 'r1', byte: 8, mask: 0x02, svg: 'R1' },
|
||||
{ name: 'r2', byte: 5, mask: 0xff }, // analog handled separately
|
||||
{ name: 'create', byte: 8, mask: 0x10, svg: 'Create' },
|
||||
{ name: 'options', byte: 8, mask: 0x20, svg: 'Options' },
|
||||
{ name: 'l3', byte: 8, mask: 0x40, svg: 'L3' },
|
||||
{ name: 'r3', byte: 8, mask: 0x80, svg: 'R3' },
|
||||
{ name: 'ps', byte: 9, mask: 0x01, svg: 'PS' },
|
||||
{ name: 'touchpad', byte: 9, mask: 0x02, svg: 'Trackpad' },
|
||||
{ name: 'mute', byte: 9, mask: 0x04, svg: 'Mute' },
|
||||
];
|
||||
|
||||
// Generic button processing for DS4/DS5
|
||||
function process_ds_buttons(data, BUTTON_MAP, dpad_byte, l2_analog_byte, r2_analog_byte) {
|
||||
if (!data || !data.data) return;
|
||||
|
||||
const pressedColor = '#1a237e'; // pleasing dark blue
|
||||
// L2/R2 analog infill
|
||||
[
|
||||
['l2', 'L2_infill', data.data.getUint8(l2_analog_byte)],
|
||||
['r2', 'R2_infill', data.data.getUint8(r2_analog_byte)]
|
||||
].forEach(([name, svg, val]) => {
|
||||
// Fade between white and pressedColor based on analog value
|
||||
const t = val / 255;
|
||||
const color = lerp_color('#ffffff', pressedColor, t);
|
||||
if(val != ds_button_states[name + '_analog']) {
|
||||
ds_button_states[name + '_analog'] = val;
|
||||
const infill = document.getElementById(svg);
|
||||
set_svg_group_color(infill, color);
|
||||
}
|
||||
});
|
||||
|
||||
// Dpad is a 4-bit hat value
|
||||
const hat = data.data.getUint8(dpad_byte) & 0x0F;
|
||||
const dpad_map = {
|
||||
up: (hat === 0 || hat === 1 || hat === 7),
|
||||
right: (hat === 1 || hat === 2 || hat === 3),
|
||||
down: (hat === 3 || hat === 4 || hat === 5),
|
||||
left: (hat === 5 || hat === 6 || hat === 7)
|
||||
};
|
||||
for (let dir of ['up', 'right', 'down', 'left']) {
|
||||
const pressed = dpad_map[dir];
|
||||
if (ds_button_states[dir] !== pressed) {
|
||||
ds_button_states[dir] = pressed;
|
||||
// Update SVG if present
|
||||
const group = document.getElementById(dir.charAt(0).toUpperCase() + dir.slice(1) + '_infill');
|
||||
set_svg_group_color(group, pressed ? pressedColor : 'white');
|
||||
}
|
||||
}
|
||||
|
||||
// Other buttons
|
||||
for (let btn of BUTTON_MAP) {
|
||||
if (['up', 'right', 'down', 'left'].includes(btn.name)) continue; // Dpad handled above
|
||||
const pressed = (data.data.getUint8(btn.byte) & btn.mask) !== 0;
|
||||
if (ds_button_states[btn.name] !== pressed) {
|
||||
ds_button_states[btn.name] = pressed;
|
||||
if (btn.svg) {
|
||||
const group = document.getElementById(btn.svg + '_infill');
|
||||
set_svg_group_color(group, pressed ? pressedColor : 'white');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function set_svg_group_color(group, color) {
|
||||
if (group) {
|
||||
let elements = group.querySelectorAll('path,rect,circle,ellipse,line,polyline,polygon');
|
||||
elements.forEach(el => {
|
||||
// Set up a smooth transition for fill and stroke if not already set
|
||||
if (!el.style.transition) {
|
||||
el.style.transition = 'fill 0.10s, stroke 0.10s';
|
||||
}
|
||||
el.setAttribute('fill', color);
|
||||
el.setAttribute('stroke', color);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// --- Touchpad overlay helpers ---
|
||||
function parse_touch_points(data, offset) {
|
||||
// Returns array of up to 2 points: {active, id, x, y}
|
||||
const points = [];
|
||||
for (let i = 0; i < 2; i++) {
|
||||
const base = offset + i * 4;
|
||||
const arr = [];
|
||||
for (let j = 0; j < 4; j++) arr.push(data.getUint8(base + j));
|
||||
const b0 = data.getUint8(base);
|
||||
const active = (b0 & 0x80) === 0; // 0 = finger down, 1 = up
|
||||
const id = b0 & 0x7F;
|
||||
const b1 = data.getUint8(base + 1);
|
||||
const b2 = data.getUint8(base + 2);
|
||||
const b3 = data.getUint8(base + 3);
|
||||
// x: 12 bits, y: 12 bits
|
||||
const x = ((b2 & 0x0F) << 8) | b1;
|
||||
const y = (b3 << 4) | (b2 >> 4);
|
||||
points.push({ active, id, x, y });
|
||||
}
|
||||
return points;
|
||||
}
|
||||
|
||||
let hasActiveTouchPoints = false;
|
||||
let trackpadBbox = undefined;
|
||||
|
||||
function update_touchpad_circles(points) {
|
||||
const hasActivePointsNow = points.some(pt => pt.active);
|
||||
if(!hasActivePointsNow && !hasActiveTouchPoints) return;
|
||||
|
||||
// Find the Trackpad_infill group in the SVG
|
||||
const svg = document.getElementById('controller-svg');
|
||||
const trackpad = svg?.querySelector('g#Trackpad_infill');
|
||||
if (!trackpad) return;
|
||||
|
||||
// Remove the previous touch points, if any
|
||||
trackpad.querySelectorAll('circle.ds-touch').forEach(c => c.remove());
|
||||
hasActiveTouchPoints = hasActivePointsNow;
|
||||
trackpadBbox = trackpadBbox ?? trackpad.querySelector('path')?.getBBox();
|
||||
|
||||
// Draw up to 2 circles
|
||||
points.forEach((pt, idx) => {
|
||||
if (!pt.active) return;
|
||||
// Map raw x/y to SVG
|
||||
// DS4/DS5 touchpad is 1920x943 units (raw values)
|
||||
const RAW_W = 1920, RAW_H = 943;
|
||||
const pointRadius = trackpadBbox.width * 0.05;
|
||||
const cx = trackpadBbox.x + pointRadius + (pt.x / RAW_W) * (trackpadBbox.width - pointRadius*2);
|
||||
const cy = trackpadBbox.y + pointRadius + (pt.y / RAW_H) * (trackpadBbox.height - pointRadius*2);
|
||||
const circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');
|
||||
circle.setAttribute('class', 'ds-touch');
|
||||
circle.setAttribute('cx', cx);
|
||||
circle.setAttribute('cy', cy);
|
||||
circle.setAttribute('r', pointRadius);
|
||||
circle.setAttribute('fill', idx === 0 ? '#2196f3' : '#e91e63');
|
||||
circle.setAttribute('fill-opacity', '0.5');
|
||||
circle.setAttribute('stroke', '#3399cc');
|
||||
circle.setAttribute('stroke-width', '4');
|
||||
trackpad.appendChild(circle);
|
||||
});
|
||||
}
|
||||
|
||||
function process_ds4_input(data) {
|
||||
var lx = data.data.getUint8(0);
|
||||
var ly = data.data.getUint8(1);
|
||||
@@ -1658,6 +1894,12 @@ function process_ds4_input(data) {
|
||||
refresh_sticks();
|
||||
}
|
||||
|
||||
// Use DS4 map: dpad byte 4, L2 analog 7, R2 analog 8
|
||||
process_ds_buttons(data, DS4_BUTTON_MAP, 4, 7, 8);
|
||||
|
||||
const points = parse_touch_points(data.data, 34);
|
||||
update_touchpad_circles(points);
|
||||
|
||||
// Read battery
|
||||
var bat = data.data.getUint8(29);
|
||||
var bat_data = bat & 0x0f;
|
||||
@@ -1717,6 +1959,12 @@ function process_ds_input(data) {
|
||||
refresh_finetune();
|
||||
}
|
||||
|
||||
// Use DS5 map: dpad byte 7, L2 analog 4, R2 analog 5
|
||||
process_ds_buttons(data, DS5_BUTTON_MAP, 7, 4, 5);
|
||||
|
||||
const points = parse_touch_points(data.data, 32);
|
||||
update_touchpad_circles(points);
|
||||
|
||||
var bat = data.data.getUint8(52);
|
||||
var bat_charge = bat & 0x0f;
|
||||
var bat_status = bat >> 4;
|
||||
@@ -1742,6 +1990,13 @@ function process_ds_input(data) {
|
||||
update_battery_status(bat_capacity, cable_connected, is_charging, is_error);
|
||||
}
|
||||
|
||||
function set_mute_visibility(show) {
|
||||
const muteOutline = document.getElementById('Mute_outline');
|
||||
const muteInfill = document.getElementById('Mute_infill');
|
||||
if (muteOutline) muteOutline.style.display = show ? '' : 'none';
|
||||
if (muteInfill) muteInfill.style.display = show ? '' : 'none';
|
||||
}
|
||||
|
||||
async function continue_connection(report) {
|
||||
try {
|
||||
device.oninputreport = null;
|
||||
@@ -1761,6 +2016,8 @@ async function continue_connection(report) {
|
||||
if(device.productId == 0x05c4) {
|
||||
$("#infoshowall").hide()
|
||||
$("#ds5finetune").hide()
|
||||
// Hide mute button for DS4
|
||||
set_mute_visibility(false);
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
@@ -1770,6 +2027,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x09cc) {
|
||||
$("#infoshowall").hide()
|
||||
$("#ds5finetune").hide()
|
||||
// Hide mute button for DS4
|
||||
set_mute_visibility(false);
|
||||
if(await ds4_info()) {
|
||||
connected = true;
|
||||
mode = 1;
|
||||
@@ -1779,6 +2038,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x0ce6) {
|
||||
$("#infoshowall").show()
|
||||
$("#ds5finetune").show()
|
||||
// Show mute button for DS5
|
||||
set_mute_visibility(true);
|
||||
if(await ds5_info(false)) {
|
||||
connected = true;
|
||||
mode = 2;
|
||||
@@ -1788,6 +2049,8 @@ async function continue_connection(report) {
|
||||
} else if(device.productId == 0x0df2) {
|
||||
$("#infoshowall").show()
|
||||
$("#ds5finetune").show()
|
||||
// Show mute button for DS5 Edge
|
||||
set_mute_visibility(true);
|
||||
if(await ds5_info(true)) {
|
||||
connected = true;
|
||||
mode = 3;
|
||||
@@ -2351,3 +2614,24 @@ function lang_translate(target_file, target_lang, target_direction) {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
function lerp_color(a, b, t) {
|
||||
// a, b: hex color strings, t: 0.0-1.0
|
||||
function hex2rgb(hex) {
|
||||
hex = hex.replace('#', '');
|
||||
if (hex.length === 3) hex = hex.split('').map(x => x + x).join('');
|
||||
const num = parseInt(hex, 16);
|
||||
return [(num >> 16) & 255, (num >> 8) & 255, num & 255];
|
||||
}
|
||||
function rgb2hex(r, g, b) {
|
||||
return '#' + [r, g, b].map(x => x.toString(16).padStart(2, '0')).join('');
|
||||
}
|
||||
const c1 = hex2rgb(a);
|
||||
const c2 = hex2rgb(b);
|
||||
const c = [
|
||||
Math.round(c1[0] + (c2[0] - c1[0]) * t),
|
||||
Math.round(c1[1] + (c2[1] - c1[1]) * t),
|
||||
Math.round(c1[2] + (c2[2] - c1[2]) * t)
|
||||
];
|
||||
return rgb2hex(c[0], c[1], c[2]);
|
||||
}
|
||||
|
||||
137
index.html
137
index.html
@@ -131,16 +131,129 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
|
||||
<div id="mainmenu" class="container" style="display: none;">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-md-6 col-sm-12">
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header"><i class="fas fa-gamepad"></i> <span class="ds-i18n">Controller Info</span></div>
|
||||
<dl class="row px-3 py-2" id="fwinfo"></dl>
|
||||
<span id="infoshowall" class="pb-4 px-4 row">
|
||||
<button class="btn btn-outline-secondary" onclick="show_info_modal()"><i class="fas fa-plus me-1"></i> <span class="ds-i18n">Show all</span></button>
|
||||
</span>
|
||||
</div>
|
||||
<br>
|
||||
<div class="card text-bg-light" >
|
||||
<div class="card-header"><i class="fas fa-gamepad"></i> <span class="ds-i18n">Controller Info</span></div>
|
||||
<dl class="row px-3 py-2" id="fwinfo"></dl>
|
||||
<span id="infoshowall" class="pb-4 px-4 row">
|
||||
<button class="btn btn-outline-secondary" onclick="show_info_modal()"><i class="fas fa-plus me-1"></i> <span class="ds-i18n">Show all</span></button>
|
||||
</span>
|
||||
</div>
|
||||
<!-- DS5 Controller SVG below Controller Info box -->
|
||||
<div class="my-3 text-center mx-3">
|
||||
<!-- DualSense 5 Controller SVG inlined for button highlighting -->
|
||||
<svg id="controller-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 518" style="width: 80%; height: auto; max-width: 80%;" stroke-width="1">
|
||||
<g id="Button_infills">
|
||||
<g id="Mute_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path id="Mute_infill" d="M454.47,468.7c-6.47,0-12.69.04-18.75.14-.92.01-2.18.28-2.96,1.48-.56.85-.83,2.14-.8,3.81.03,2.24.41,3.3,3.67,3.32,4.47.03,8.94.02,13.41.02l5.53-.03c1.83,0,3.67,0,5.5-.01,4.41-.01,8.97-.03,13.46.04,3.68.09,4.03-1.61,4.06-3.62.02-1.47-.23-2.58-.76-3.39-.67-1.03-1.83-1.6-3.26-1.62-6.64-.08-12.98-.12-19.1-.12Z"/>
|
||||
</g>
|
||||
<g id="Down_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M177.4,357.17c-1.88,2.05-4.45,3.18-7.24,3.18h-22.91c-2.79,0-5.36-1.13-7.25-3.18-1.88-2.05-2.79-4.71-2.55-7.49l1.25-14.78c.43-5.04,2.71-9.71,6.42-13.16l9.04-8.39c1.21-1.12,2.74-1.68,4.27-1.68s2.98.54,4.18,1.61l9.44,8.45c3.87,3.47,6.24,8.23,6.68,13.4l1.23,14.55c.24,2.78-.67,5.44-2.56,7.49Z"/>
|
||||
</g>
|
||||
<g id="PS_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M455.41,437.59c11.37.03,20.87-9.06,21-20.1.14-11.24-9.39-20.97-20.61-21.05-11.23-.08-21,9.57-20.99,20.72,0,11.16,9.32,20.4,20.6,20.43Z"/>
|
||||
</g>
|
||||
<g id="Right_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M223.51,284.09v22.91c0,2.79-1.13,5.36-3.18,7.24-2.05,1.89-4.71,2.8-7.49,2.56l-14.55-1.23c-5.17-.44-9.93-2.81-13.39-6.68l-8.46-9.44c-2.17-2.43-2.14-6.06.07-8.45l8.4-9.04c3.44-3.71,8.11-5.99,13.15-6.42l14.78-1.25c2.78-.24,5.44.67,7.49,2.56,2.05,1.88,3.18,4.45,3.18,7.24Z"/>
|
||||
</g>
|
||||
<g id="Left_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M140.97,299.45l-8.46,9.44c-3.46,3.87-8.22,6.24-13.39,6.68l-14.55,1.23c-2.78.24-5.44-.67-7.49-2.56-2.05-1.88-3.18-4.45-3.18-7.24v-22.91c0-2.79,1.13-5.36,3.18-7.24,1.84-1.69,4.17-2.6,6.63-2.6.28,0,.57.01.86.04l14.78,1.25c5.04.43,9.71,2.71,13.15,6.42l8.4,9.04c2.21,2.39,2.24,6.02.07,8.45Z"/>
|
||||
</g>
|
||||
<g id="Up_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M179.96,241.41l-1.23,14.55c-.44,5.17-2.81,9.93-6.68,13.39l-9.44,8.46c-2.43,2.17-6.06,2.14-8.45-.07l-9.04-8.4c-3.71-3.44-5.99-8.11-6.42-13.15l-1.25-14.78c-.24-2.78.67-5.44,2.55-7.49,1.89-2.05,4.46-3.18,7.25-3.18h22.91c2.79,0,5.36,1.13,7.24,3.18,1.89,2.05,2.8,4.71,2.56,7.49Z"/>
|
||||
</g>
|
||||
<g id="Triangle_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M751.45,261.08c15.08-.01,26.75-11.5,26.73-26.31-.02-14.47-12.19-26.62-26.73-26.69-14.57-.07-26.65,11.99-26.66,26.63-.01,14.84,11.65,26.37,26.66,26.36Z"/>
|
||||
</g>
|
||||
<g id="Cross_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M750.93,379.05c15.44-.06,27.38-11.64,27.24-26.43-.13-14.28-12.84-26.83-26.99-26.3-14.58.55-26.43,12.2-26.39,26.91.04,14.23,11.83,25.88,26.14,25.82Z"/>
|
||||
</g>
|
||||
<g id="Circle_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M787.29,293.47c-.03,14.49,11.88,26.68,26.15,26.75,14.74.08,26.99-11.95,26.95-26.46-.04-14.51-12.12-26.34-27.04-26.48-14.04-.14-26.03,11.91-26.06,26.18Z"/>
|
||||
</g>
|
||||
<g id="Square_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M689.1,320.22c14.61.11,27.23-12.13,27.17-26.35-.06-14.09-12.36-26.44-26.54-26.66-14.42-.22-26.52,11.67-26.66,26.18-.13,14.49,11.74,26.73,26.03,26.83Z"/>
|
||||
</g>
|
||||
<g id="Options_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M691.58,199.27l-4.27,17.92c-.91,3.82-4.76,6.19-8.58,5.28-3.82-.91-6.19-4.76-5.28-8.58l4.27-17.92c.78-3.27,3.71-5.48,6.93-5.48.54,0,1.1.06,1.65.19,1.85.44,3.42,1.58,4.42,3.2s1.3,3.53.86,5.38Z"/>
|
||||
</g>
|
||||
<g id="Create_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M224.03,191.39c.55-.13,1.11-.19,1.65-.19,3.22,0,6.15,2.21,6.93,5.47l4.27,17.93c.44,1.85.13,3.76-.86,5.38-1,1.62-2.57,2.76-4.42,3.2-3.82.91-7.67-1.46-8.58-5.28l-4.27-17.92c-.91-3.82,1.46-7.67,5.28-8.58Z"/>
|
||||
</g>
|
||||
<g id="R2_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M800.14,115.88c-1.06,1.16-2.71,1.73-5.05,1.73-.01,0-.03,0-.04-.01-24.46-6.24-52.88-10.2-84.5-11.76h-.12c-4.19.08-7.09-.8-8.55-2.62-1.41-1.74-1.67-4.53-.77-8.29l.03-.15,9.87-67.57c3.29-14.17,13.23-21.12,30.28-21.12,2.57,0,5.31.16,8.22.47,13.16,1.54,22.93,6.87,29.86,16.29,2.6,3.53,4.67,7.72,6.16,12.44,7.81,24.72,11.55,46.61,15.88,71.95l.15.88c.41,3.61-.06,6.25-1.42,7.76Z"/>
|
||||
</g>
|
||||
<g id="L2_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M208.41,103.22c-1.47,1.82-4.36,2.7-8.55,2.62h-.12c-31.62,1.56-60.04,5.52-84.5,11.76-.01.01-.03.01-.04.01-2.34,0-4-.57-5.05-1.73-1.36-1.51-1.84-4.15-1.42-7.76l.15-.88c4.33-25.34,8.07-47.23,15.87-71.95,1.49-4.72,3.57-8.91,6.17-12.44,6.93-9.42,16.7-14.75,29.86-16.29,2.9-.31,5.64-.47,8.22-.47,17.05,0,26.98,6.95,30.28,21.12l9.87,67.57.03.15c.89,3.76.63,6.55-.77,8.29Z"/>
|
||||
</g>
|
||||
<g id="R1_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M805.8,173.73c-45.97-8.48-86.34-15.03-123.26-19.99,2.9-8.22,9.5-13.32,20.48-15.9,26.02-3.4,53.76,2.2,87.27,17.61.98.44,1.96.95,2.94,1.51,9.2,5.27,12.41,9.42,12.57,16.77Z"/>
|
||||
</g>
|
||||
<g id="L1_infill" transform="translate(0,0.65) scale(0.70)">
|
||||
<path d="M226.89,153.84c-42.76,6.62-84.3,13.1-123.56,19.27.76-6.19,2.09-12.15,27.86-22.29,28.7-10.58,37.26-12.24,70.44-13.64,2.49-.11,4.68,0,6.67.32,9.71,1.57,15.81,6.94,18.59,16.34Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="Outline" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="Controller">
|
||||
<path id="Controller_outline" d="M804.61,172.5s.09.02.13.02c-45.03-8.29-84.58-14.71-120.82-19.6.06,0,.12.02.17.02-.09.21-.14.44-.23.66-1.95.4-4.06.27-6,.85-.01-.01-.04-.03-.06-.05-.04-.13-.09-.26-.14-.39.02,0,.04,0,.07,0-4.87-.52-9.74-1.01-14.62-1.5-4.79-.46-9.6-.91-14.4-1.34h-.01s-.37-.05-.37-.05c-9.11-.83-18.27-1.58-27.45-2.28,0,.04,0,.08,0,.11,6.85.92,13.16,2.58,18.67,6.93,0,0-.01-.01-.02-.02,1.13.1,2.24.2,3.36.3,5.18,1.42,9.39,5.36,10.93,10.49,1.6,5.35,1.3,12.24-.9,20.47l-21.05,109.2c-4.19,26.12-19.01,37.08-42.82,41.56l-143.01.03-128.89-.03c-23.72-4.39-39.07-18.19-42.83-41.64l-2.11-10.93c-.29-2.09-.65-4.23-1.12-6.43l-12.19-62.64-5.57-28.92-.04-.19c-.09-.35-.16-.68-.25-1.03l-1.25-6.42s0-.03-.01-.04c-.67-4.99-.48-9.34.61-12.98,1.44-4.81,5.22-8.56,9.95-10.19,1.68-.14,3.36-.28,5.03-.42-.01,0-.02.02-.04.03.13-.02.26-.04.39-.06,1.51-.96,3.05-1.79,4.52-2.46,4.51-2.11,9.69-3.99,14.78-4.58-8.71.66-17.56,1.37-26.29,2.11l-1.11.09c-9.48.82-18.77,1.68-27.61,2.55l-.46.05s0-.01,0-.02c-.02.03-.03.06-.04.09-1.99.06-3.94-.42-5.98-.72,0-.03,0-.06-.01-.09.03,0,.06,0,.08-.01-41.23,6.38-81.95,12.73-121.09,18.88,0-.03.01-.07.02-.1l-5.76,1.61c-1.39.76-2.77,1.68-4.11,2.75-6.4,5.15-12.04,13.69-17.24,26.11-27.39,64.19-47.54,129.24-59.9,193.34C4.64,462.34-.21,530.22,3.08,597.4c2.41,40.48,7.54,66.82,16.62,85.41,9.85,20.12,24.59,31.39,46.4,35.45l39.76,12.39.33.07h.1c.97.12,1.93.18,2.86.18,13.63,0,18.84-11.41,21.55-19.96,27.65-75.71,49.02-130.11,67.27-171.19,8.52-19.59,24.3-29.11,48.23-29.11,3.5,0,7.23.21,11.11.63h.17c60.68,2.54,123.31,3.82,186.16,3.82,70.29,0,142.26-1.6,213.94-4.76,2.31-.2,4.59-.3,6.77-.3,23.28,0,39.64,11.03,50,33.68,26.25,62.96,48.44,119.86,67.83,173.94,3.28,8.94,9.45,13.47,18.32,13.47,1.52,0,3.14-.14,4.82-.4h.06s45.5-13.11,45.5-13.11c2-.48,4.05-1.09,6.27-1.86l.13-.04.72-.25v-.02c15.47-5.75,26.84-17.21,34.75-35,7.77-17.48,12.58-41.33,15.58-77.35,4.35-57.49-1.58-134.16-16.29-210.35-15.8-81.82-40.06-154.86-68.3-205.65-2.37-4.62-4.05-7.26-5.79-9.11-2.01-2.17-4.26-3.46-7.64-4.35,0-.05-.03.03-.04-.02M654.75,157.28c1.32.12,2.27.2,2.26.19,4.84.46,9.76.95,14.92,1.48-3.75,2.27-6.89,5.18-9.51,8.8-.01-.02-.01-.04-.02-.06-.81,1.03-1.56,2.12-2.23,3.26-.18-2.07-.53-4.04-1.07-5.86-.89-2.98-2.4-5.62-4.35-7.82ZM251.1,157.47l.22-.17.34-.03c-2.05,2.16-3.62,4.8-4.53,7.83-.29.95-.5,1.95-.69,2.98-.3-.5-.5-.83-.51-.82-2.55-3.31-5.76-6.16-9.46-8.41,4.54-.44,9.37-.89,14.63-1.37ZM63.74,711.34c-1.7,0-3.53-.26-5.45-.77l-.46-.09c-15.03-4.97-25.58-14.54-33.18-30.09-8.75-17.89-13.71-43.59-16.08-83.29C2.18,466.43,27.04,334.31,82.48,204.42c5.96-14.26,12.4-22.95,19.68-26.57,36.97-5.81,77.23-12.09,119.66-18.67,12.6,2.24,22,10.48,24.57,21.52.29,2.12.73,4.32,1.3,6.61l5.63,28.91,13.52,70.16c3.04,22.28-4.43,36.44-19.51,54.89-33.86,35.52-63.96,83.16-92.02,145.65-22.57,50.27-43.21,108.54-64.97,183.45-3.79,15.91-8.97,32.96-18.74,38.81-2.41,1.45-4.98,2.16-7.85,2.16ZM804.28,725.31c-1.3.21-2.54.31-3.7.31-6.47,0-10.8-3.22-13.23-9.84-19.36-54.03-41.59-111.02-67.97-174.28-11.21-24.52-29.78-36.96-55.17-36.96-2.28,0-4.64.1-6.97.3-71.45,3.15-143.25,4.75-213.42,4.75-62.79,0-125.39-1.28-185.99-3.8-3.91-.42-7.72-.63-11.32-.63-26.2,0-44.22,10.9-53.58,32.37-18.31,41.24-39.73,95.76-67.43,171.64-3.62,11.38-8.49,16.23-16.28,16.23-.66,0-1.36-.03-2.07-.1l-34.11-10.63c.47-.24.93-.49,1.38-.76,11.51-6.9,17.19-25.2,21.22-42.14,31.82-109.48,78.28-245.56,155.72-326.77l.12-.14c10.32-12.6,15.94-21.99,18.94-31.77.01.02.02.03.03.05l.04-.29c.47-1.24.83-2.6,1.14-4.03,5.82,18.4,22.43,32.57,45.18,34.56l129.25.04,143.13-.03h.24c23.32-2.05,38.12-13.14,44.92-33.72.1.51.2,1.01.32,1.53,3.02,14.37,11.49,26.24,20.3,37l.17.19c81.44,78.96,128.1,212.33,162.99,332.38,5.91,20.1,10.54,31.1,19.1,35.05l-32.95,9.49ZM902.84,602.66c-4.81,57.88-14.43,96.11-47.36,107.83-4.19,1.09-7.37,1.59-9.99,1.59-9.87,0-14.41-6.75-22.08-32.85-22.39-77.03-43.38-136.08-66.05-185.82-29.41-64.53-61.55-113.22-98.27-148.86-16.5-20.18-23.88-35.21-18.4-61.3l20.03-98.96c4.49-15.34,12.4-22.67,27.28-25.27,35.69,4.91,74.62,11.29,119,19.5h.07c5.65,1.12,7.18,2.15,11.82,11.17,60.68,109.11,92.4,301.63,83.95,412.97Z"/>
|
||||
<g id="Speaker_grill">
|
||||
<circle cx="420.29" cy="357.71" r="4.82"/>
|
||||
<circle cx="437.84" cy="357.71" r="4.82"/>
|
||||
<circle cx="455.38" cy="357.71" r="4.82"/>
|
||||
<circle cx="472.93" cy="357.71" r="4.82"/>
|
||||
<circle cx="490.47" cy="358.68" r="4.82"/>
|
||||
</g>
|
||||
<path id="L3_surround" d="M340.92,373.72c-12.1-11.94-28.56-18.52-46.36-18.52-1.03,0-2.06.02-3.11.06-16.56.69-32.12,7.92-43.82,20.35-11.43,12.15-17.66,28.1-17.11,43.7-.63,16.4,5.79,32.86,17.63,45.16,12.39,12.87,29.14,19.96,47.17,19.96h.13c17.75-.03,34.16-6.86,46.21-19.24,12.14-12.46,18.58-29.31,18.14-47.45-.41-16.77-7.12-32.41-18.9-44.04ZM296.63,478.55c-.35,0-.7,0-1.06,0-16.24,0-31.34-6.14-42.53-17.29-11.18-11.15-17.33-26.19-17.32-42.36.02-27.96,22.56-58.15,58.94-58.15h.29c16.72.07,32,6.28,43.02,17.47,10.8,10.97,16.65,25.88,16.48,41.98-.4,36.53-29.71,58.36-57.82,58.36Z"/>
|
||||
<path id="R3_surround" d="M617.17,355.14c-1.39,0-2.81.05-4.21.13-16.38,1.04-31.68,7.93-43.07,19.39-11.63,11.71-18.09,27.2-18.18,43.63-.1,18.38,6.27,34.57,18.42,46.8,12.21,12.3,29.46,19.38,47.3,19.41h.1c16.61,0,32.4-6.7,44.48-18.88,12.21-12.3,19.13-29.12,19-46.1.29-16.6-6.42-33.11-18.41-45.31-12.1-12.31-28.23-19.09-45.43-19.09ZM675.5,419.52c-.02,32.9-25.99,58.85-59.12,59.08h-.4c-15.55,0-30.85-6.54-41.96-17.95-11.2-11.5-17.15-26.51-16.74-42.27.84-32.25,26.93-57.61,59.4-57.74h.24c16.08,0,31.03,6.27,42.11,17.65,10.89,11.19,16.89,26.21,16.48,41.23Z"/>
|
||||
</g>
|
||||
<g id="Button_outlines">
|
||||
<path id="L1" d="M131.54,151.76c28.58-10.54,37.1-12.19,70.13-13.58.62-.03,1.21-.04,1.78-.04,1.7,0,3.23.11,4.69.35,8.92,1.44,14.64,6.2,17.45,14.54-.03,0-.06,0-.08.01,0,.03,0,.06.01.09,2.04.3,3.99.78,5.98.72.02-.03.03-.06.04-.09-3.07-11.83-10.65-18.79-22.53-20.72-1.76-.27-3.6-.41-5.61-.41-.63,0-1.28,0-1.95.04-5.25.22-9.69.44-13.55.68-23.59,1.48-33.63,4.15-58.32,13.26-1.9.75-3.55,1.43-5.01,2.05l-.16.07c-23.9,10.2-24.72,17.05-25.6,24.3-.02.13-.04.25-.05.38l5.76-1.61c.79-5.14,3.38-10.75,27.02-20.05Z"/>
|
||||
<path id="R1" d="M804.81,159.88c-2.27-2.33-5.34-4.53-9.35-6.83-1.04-.6-2.15-1.17-3.28-1.69-27.77-12.77-52.08-18.98-74.31-18.98-5.21,0-10.43.34-15.56,1.02l-.23.04c-13.31,3.1-21.29,9.84-24.35,20.58-.02,0-.04,0-.07,0,.05.13.1.26.14.39.02.02.05.03.06.05.49-.18,1-.3,1.52-.33,1.52-.11,3.01-.3,4.48-.51.01-.04.03-.08.05-.12.05-.18.11-.36.18-.54-.06,0-.12-.02-.17-.02,2.98-7.21,9.14-11.7,19.28-14.1,4.8-.62,9.73-.94,14.65-.94,21.43,0,44.99,6.05,72.03,18.48.91.41,1.84.89,2.85,1.47,8.44,4.83,11.54,8.54,12.01,14.69-.05,0-.09-.02-.13-.02.06.13.12.25.16.39.02.06.05.12.07.18,1.01.07,1.98.26,2.89.58.87-.31,1.74-.34,2.57-.15-.14-5.55-1.73-9.75-5.49-13.61Z"/>
|
||||
<path id="L2_outline" d="M115.16,122.1h.4l.52-.07.06-.02c24.15-6.19,52.33-10.12,83.69-11.68h.47c5.39,0,9.3-1.44,11.61-4.29,2.31-2.88,2.86-6.94,1.67-11.99l-9.91-67.79c-3.78-16.37-15.49-24.66-34.81-24.66-2.7,0-5.6.17-8.61.49-14.28,1.66-25.37,7.75-32.97,18.08-2.9,3.94-5.2,8.57-6.83,13.75-7.91,25.05-11.67,47.06-16.02,72.55l-.18,1.03c-.57,5.06.28,8.9,2.55,11.39,1.92,2.12,4.73,3.2,8.34,3.2ZM109.72,108.29l.15-.89c4.32-25.3,8.06-47.16,15.84-71.81,1.46-4.61,3.48-8.7,6.02-12.15,6.76-9.19,16.3-14.38,29.16-15.89,2.88-.31,5.61-.46,8.11-.46,16.53,0,26.12,6.66,29.29,20.26l9.88,67.62.04.18c.81,3.44.62,5.94-.57,7.43-1.21,1.5-3.65,2.25-7.25,2.25h-.69c-31.62,1.56-60.09,5.52-84.61,11.76-1.98-.02-3.35-.48-4.19-1.4-1.15-1.27-1.55-3.69-1.18-6.92Z"/>
|
||||
<path id="R2_outline" d="M709.98,110.34h.41c31.43,1.56,59.6,5.48,83.74,11.68l.06.02.53.07h.4c3.61,0,6.42-1.08,8.34-3.2,2.27-2.5,3.13-6.33,2.54-11.45l-.17-.97c-4.35-25.49-8.11-47.5-16.02-72.55-1.63-5.18-3.93-9.81-6.83-13.75-7.61-10.33-18.71-16.42-32.99-18.08-3-.33-5.89-.49-8.6-.49-19.32,0-31.03,8.3-34.82,24.74l-9.87,67.63c-1.21,5.13-.66,9.2,1.66,12.08,2.31,2.85,6.22,4.29,11.61,4.29ZM702.09,95.12l.04-.2,9.85-67.49c3.18-13.69,12.77-20.35,29.31-20.35,2.49,0,5.22.16,8.1.46,12.87,1.51,22.41,6.7,29.17,15.89,2.53,3.43,4.55,7.52,6.01,12.15,7.79,24.65,11.52,46.51,15.85,71.82l.14.83c.37,3.3-.03,5.71-1.17,6.97-.85.93-2.22,1.39-4.19,1.4-24.52-6.25-52.99-10.21-84.66-11.77h-.64c-3.56,0-6.07-.77-7.26-2.25-1.2-1.49-1.4-3.99-.56-7.47Z"/>
|
||||
<path id="Create_outline" d="M218.64,218.94c1.25,5.26,5.9,8.93,11.31,8.93.92,0,1.83-.11,2.69-.32,3.02-.72,5.57-2.57,7.2-5.22,1.63-2.65,2.13-5.76,1.41-8.77l-4.26-17.93c-1.25-5.26-5.9-8.93-11.31-8.93-.9,0-1.81.11-2.7.32-3.02.71-5.57,2.57-7.2,5.21-1.63,2.65-2.13,5.76-1.42,8.78l4.27,17.93ZM220.47,195.11c.86-1.4,2.21-2.37,3.79-2.75.46-.11.93-.16,1.42-.16,2.85,0,5.3,1.93,5.96,4.7l4.27,17.93c.38,1.59.11,3.23-.74,4.62-.86,1.4-2.21,2.38-3.8,2.75-.47.11-.94.17-1.42.17-2.85,0-5.3-1.94-5.96-4.71l-4.27-17.93c-.38-1.59-.11-3.23.75-4.62Z"/>
|
||||
<path id="Options_outline" d="M677.7,226.85c.91.21,1.82.32,2.69.32,5.4,0,10.05-3.68,11.3-8.94l4.27-17.92c.72-3.02.22-6.15-1.41-8.79-1.63-2.64-4.18-4.5-7.2-5.22-.88-.21-1.79-.31-2.69-.31-5.41,0-10.06,3.67-11.32,8.93l-4.27,17.93c-1.49,6.23,2.38,12.51,8.62,14.01ZM674.43,214.12l4.26-17.92c.66-2.77,3.11-4.71,5.96-4.71.5,0,.96.06,1.42.17,1.59.38,2.94,1.35,3.8,2.74.85,1.38,1.12,3.03.74,4.63l-4.26,17.92c-.66,2.77-3.11,4.71-5.96,4.71-.47,0-.95-.06-1.42-.17-1.59-.38-2.94-1.35-3.8-2.75-.86-1.39-1.12-3.04-.74-4.63Z"/>
|
||||
<path id="Left_outline" d="M99.81,321.31c1.27.35,2.6.53,3.93.53.42,0,.83-.02,1.25-.06l14.55-1.23c5.53-.47,10.68-2.71,14.76-6.39.68-.6,1.32-1.25,1.94-1.94l8.45-9.44c3.91-4.36,3.85-10.88-.13-15.18l-8.39-9.04c-4.29-4.63-10.11-7.47-16.4-8l-14.78-1.25c-4.13-.36-8.24,1.05-11.29,3.85s-4.8,6.79-4.8,10.93v22.91c0,4.14,1.75,8.12,4.8,10.93,1.75,1.61,3.85,2.76,6.11,3.38ZM93.9,284.09c0-2.79,1.13-5.36,3.18-7.24,1.84-1.69,4.17-2.6,6.63-2.6.28,0,.57.01.86.04l14.78,1.25c5.04.43,9.71,2.71,13.15,6.42l8.4,9.04c2.21,2.39,2.24,6.02.07,8.45l-8.46,9.44c-3.46,3.87-8.22,6.24-13.39,6.68l-14.55,1.23c-2.78.24-5.44-.67-7.49-2.56-2.05-1.88-3.18-4.45-3.18-7.24v-22.91Z"/>
|
||||
<path id="Right_outline" d="M172.85,287.6c-3.98,4.3-4.04,10.82-.14,15.18l8.27,9.23.19.21c4.32,4.83,10.25,7.78,16.7,8.33l14.55,1.23c.42.04.83.06,1.25.06,1.4,0,2.79-.2,4.12-.58,2.18-.64,4.22-1.76,5.92-3.33,3.05-2.81,4.8-6.79,4.8-10.93v-22.91c0-4.14-1.75-8.13-4.8-10.93-3.05-2.8-7.16-4.2-11.29-3.85l-14.78,1.25c-.74.06-1.48.16-2.2.28-2.7.47-5.27,1.36-7.65,2.64-2.43,1.31-4.64,3.01-6.55,5.08l-8.39,9.04ZM198.06,275.54l14.78-1.25c2.78-.24,5.44.67,7.49,2.56,2.05,1.88,3.18,4.45,3.18,7.24v22.91c0,2.79-1.13,5.36-3.18,7.24-2.05,1.89-4.71,2.8-7.49,2.56l-14.55-1.23c-5.17-.44-9.93-2.81-13.39-6.68l-8.46-9.44c-2.17-2.43-2.14-6.06.07-8.45l8.4-9.04c3.44-3.71,8.11-5.99,13.15-6.42Z"/>
|
||||
<path id="Down_outline" d="M183.71,334.71c-.13-1.61-.42-3.18-.84-4.71-.05-.16-.1-.32-.15-.47-.22-.68-.45-1.34-.69-2-1.43-3.61-3.69-6.87-6.65-9.52l-9.44-8.46c-4.36-3.9-10.88-3.85-15.18.14l-9.04,8.39c-1.05.97-2,2.01-2.85,3.12-2.94,3.82-4.74,8.41-5.15,13.28l-1.25,14.78c-.15,1.83.03,3.65.54,5.38.62,2.18,1.75,4.21,3.31,5.91,2.8,3.05,6.79,4.8,10.93,4.8h22.91c4.14,0,8.12-1.75,10.93-4.8,2.8-3.05,4.2-7.16,3.85-11.29l-1.23-14.55ZM177.4,357.17c-1.88,2.05-4.45,3.18-7.24,3.18h-22.91c-2.79,0-5.36-1.13-7.25-3.18-1.88-2.05-2.79-4.71-2.55-7.49l1.25-14.78c.43-5.04,2.71-9.71,6.42-13.16l9.04-8.39c1.21-1.12,2.74-1.68,4.27-1.68s2.98.54,4.18,1.61l9.44,8.45c3.87,3.47,6.24,8.23,6.68,13.4l1.23,14.55c.24,2.78-.67,5.44-2.56,7.49Z"/>
|
||||
<path id="Up_outline" d="M133.72,256.61c.48,5.73,2.88,11.07,6.81,15.22.38.41.78.8,1.19,1.18l9.04,8.39c2.18,2.02,4.92,3.03,7.67,3.03s5.36-.97,7.51-2.9l9.44-8.45c1.35-1.2,2.55-2.53,3.58-3.96,2.51-3.43,4.1-7.44,4.64-11.72.05-.34.08-.68.11-1.02l1.23-14.55c.35-4.13-1.05-8.24-3.85-11.29-2.81-3.05-6.79-4.8-10.93-4.8h-22.91c-4.14,0-8.13,1.75-10.93,4.8-1.53,1.66-2.64,3.64-3.27,5.76-.54,1.77-.74,3.65-.58,5.53l1.25,14.78ZM140,233.92c1.89-2.05,4.46-3.18,7.25-3.18h22.91c2.79,0,5.36,1.13,7.24,3.18,1.89,2.05,2.8,4.71,2.56,7.49l-1.23,14.55c-.44,5.17-2.81,9.93-6.68,13.39l-9.44,8.46c-2.43,2.17-6.06,2.14-8.45-.07l-9.04-8.4c-3.71-3.44-5.99-8.11-6.42-13.15l-1.25-14.78c-.24-2.78.67-5.44,2.55-7.49Z"/>
|
||||
<path id="Cross_outline" d="M751.82,321.39h-.11c-8.53,0-16.94,3.65-23.08,10.01-5.91,6.13-9.01,13.94-8.72,21.98.63,17.53,13.54,30.1,31.38,30.57h.03c17.47,0,31.35-13.6,31.6-30.96.12-8.05-3.19-16.1-9.08-22.09-5.9-6.01-13.93-9.48-22.02-9.51ZM770.09,370.25c-4.93,5-11.74,7.77-19.16,7.8h-.1c-13.76,0-24.99-11.14-25.03-24.82-.04-13.99,11.13-25.37,25.43-25.91.28-.01.56-.02.84-.02,13.25,0,24.99,11.83,25.12,25.32.06,6.67-2.46,12.93-7.09,17.63Z"/>
|
||||
<path id="Triangle_outline" d="M751.06,266c.21,0,.41,0,.62,0,8.36,0,16.79-3.45,22.54-9.22,5.71-5.73,8.72-13.49,8.69-22.44-.05-17.11-14.19-31.03-31.52-31.03h-.19c-17.15.1-31.24,14.15-31.4,31.3-.08,8.08,3.16,15.85,9.1,21.87,5.94,6.02,14.02,9.48,22.16,9.51ZM751.32,209.08h.12c13.93.07,25.71,11.83,25.73,25.69.01,6.89-2.62,13.27-7.4,17.98-4.79,4.71-11.3,7.31-18.35,7.32-6.99,0-13.47-2.6-18.25-7.33-4.77-4.72-7.4-11.13-7.39-18.03.01-14.13,11.47-25.63,25.53-25.63Z"/>
|
||||
<path id="Circle_outline" d="M791.23,272.06c-5.72,5.82-8.79,13.5-8.65,21.62.31,17.85,13.17,30.72,31.27,31.3.3,0,.6.01.9.01,16.35,0,30.24-14.13,30.33-30.86.05-8.44-3.12-16.31-8.92-22.14-5.91-5.94-13.96-9.21-22.68-9.21-8.47,0-16.37,3.3-22.25,9.28ZM839.39,293.77c.02,6.64-2.62,12.96-7.44,17.78-4.93,4.95-11.46,7.67-18.37,7.67,0,0-.14,0-.14,0-13.66-.07-25.18-11.87-25.15-25.75.03-13.65,11.4-25.19,24.83-25.19h.23c14.33.14,26.01,11.57,26.05,25.49Z"/>
|
||||
<path id="Square_outline" d="M691.99,262.62c-.79-.06-1.6-.09-2.38-.09-8.46,0-16.39,3.35-22.34,9.45-5.74,5.88-8.93,13.76-8.74,21.58-.29,17.51,12.78,31.02,30.42,31.42.26,0,.52,0,.78,0,17.09,0,30.37-12.98,30.9-30.18.51-16.54-12.34-30.97-28.64-32.18ZM707.82,311.38c-4.97,4.99-11.72,7.85-18.53,7.85,0,0-.18,0-.18,0-6.58-.05-12.82-2.74-17.59-7.59-4.87-4.95-7.51-11.43-7.45-18.24.13-13.89,11.46-25.19,25.26-25.19h.38c13.56.21,25.5,12.2,25.56,25.67.03,6.44-2.62,12.65-7.44,17.5Z"/>
|
||||
<path id="PS_outline" d="M455.4,442.49h.21c14.28-.12,25.41-11.31,25.35-25.47-.06-14.05-11.44-25.51-25.42-25.54-13.74,0-25.39,11.7-25.44,25.55-.03,6.72,2.63,13.09,7.46,17.95,4.82,4.84,11.16,7.51,17.84,7.51ZM441.75,403.34c3.78-3.75,8.85-5.9,13.92-5.9h.13c5.08.04,10.12,2.23,13.84,6.02,3.73,3.8,5.84,8.91,5.78,14.02-.13,10.54-9.08,19.11-20,19.11h0c-10.81-.02-19.6-8.74-19.6-19.43,0-5.03,2.17-10.07,5.94-13.82Z"/>
|
||||
<path id="Mute_outline" d="M474.24,464.3c-6.6-.06-13.03-.1-19.11-.1-6.51,0-12.67.04-18.82.11-2.55.03-4.67.99-6.15,2.77-1.4,1.7-2.12,4.04-2.07,6.78.07,3.52,1.54,7.73,8.15,7.76,2.64.01,5.27.02,7.91.02h11.06s1.74-.03,1.74-.03c0,0,7.44-.02,9.31-.02,2.62,0,5.25,0,7.86.04h.17c7.21,0,8.38-5.01,8.43-8,.05-2.57-.65-4.8-2.03-6.45-1.54-1.85-3.77-2.85-6.45-2.88ZM473.79,476.4h-2.19c-2.66-.05-2.76-.04-5.42-.04-1.84,0-10.97.03-10.97.03l-5.52.04h-5.9c-2.5,0-5,0-7.5-.02-.93,0-2.31-.66-2.33-2.29-.02-1.53-.18-2.63.18-3.31.57-1.06,1.65-1.24,2.25-1.25,6.08-.11,12.21-.17,18.74-.17,6.06,0,12.48.05,19.09.15,1.14.02,2.07.53,2.55,1.42.21.4.5,1.12.47,2.82-.02,1.47-.69,2.61-3.43,2.61Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="Trackpad_infill" >
|
||||
<path d="M452.27,328.53v-.02c40.22,0,80.43.07,120.65-.07,6.47-.02,13.17.01,19.36-1.58,19.32-4.99,29.59-18.18,33.51-36.6,7.44-34.93,15.37-69.99,21.95-105.09,1.8-9.6-.91-20.7-9.35-26.91-6.53-4.8-15.07-5.38-22.94-6-15.84-1.24-31.65-1.69-47.52-2.33-25.29-1.01-52.32-3.71-77.62-4-59.86-.67-117.65,1.12-177.41,5.09-10.18.68-20.91.48-30.97,2.12-12.6,2.05-25.72,12.82-22.5,31.32,2.97,17.08,7.65,34.26,11,51.28,3.72,18.85,7.61,37.68,11.08,56.58,2.33,12.67,8.64,23.23,19.04,30.56,9.97,7.03,21.64,5.61,33.14,5.62,39.53.06,79.06.02,118.6.02Z"/>
|
||||
</g>
|
||||
<g id="Trackpad_outline" >
|
||||
<path d="M272.25,153.56c-4.52,2.07-9.76,5.6-12.42,9.85-4.66,6.89-3.71,15.95-1.11,26.9l19.74,98.37c4.52,27.51,18.61,41.63,45.84,43.95h.12l235.94.06c-4.66-.08,4.33,0,9.56,0,35.3,0,49.5-11.1,56.07-37.73l20.44-101.35c4.26-16.93,3.93-29.59-6.87-37.71-6.24-4.92-13.49-6.41-21.4-7.26-52.97-4-107.12-6.03-161.4-6.03-.3,0-.6,0-.9,0-2.3-.01-4.58-.02-6.81-.02-.36,0-.72,0-1.08,0-.33,0-.66,0-1,0-3.06.02-6.18.05-9.34.09-48.92.43-98.66,2.47-148.15,6.11-5.85.15-12,2.31-17.24,4.76ZM641.07,192.4l-20.45,101.35c-6.01,24.35-18.98,33.44-50.41,33.44-3.02,0-6.24.2-9.64,0l-235.88-.06c-24.7-2.11-36.7-14.33-40.82-39.44l-19.79-98.56c-2.23-9.46-3.46-17.08.31-22.64,4.07-6.04,11.93-10.09,23.26-12.03,13.9-1.04,27.83-1.95,41.74-2.73,35.06-1.79,70.63-3.02,101.96-3.47.19,0,.38,0,.58,0,1.55-.02,3.08-.04,4.6-.06,6.53-.06,13.04-.09,19.54-.09,46.61.2,104.83,2.34,158.55,5.8,3.45.26,7.4.89,10.36,1.77,18.01,5.87,21.08,16.85,16.09,36.73Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="L3" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="L3_infill">
|
||||
<path d="M295.63,461.03c23.36,0,41.53-17.87,41.57-40.86.03-23.53-18.65-42.27-42.16-42.27-23.09,0-41.82,18.55-41.83,41.45-.01,23.9,18.09,41.69,42.42,41.69Z"/>
|
||||
</g>
|
||||
<g id="L3_outline">
|
||||
<path d="M295.14,466.67c-26.36-.18-47.62-21.47-47.16-47.19.51-28.21,21.76-46.51,47.28-47.04,25.52-.53,47.65,22.07,47.37,47.25-.29,26.05-21.63,47.15-47.5,46.98ZM295.63,461.03c23.36,0,41.53-17.87,41.57-40.86.03-23.53-18.65-42.27-42.16-42.27-23.09,0-41.82,18.55-41.83,41.45-.01,23.9,18.09,41.69,42.42,41.69Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g id="R3" transform="translate(0,0.65) scale(0.70)">
|
||||
<g id="R3_infill">
|
||||
<path d="M658.23,419.7c.55-22.76-17.76-41.19-40.35-41.72-23.43-.55-42.68,18.19-43.29,40.74-.65,23.92,18.7,41.15,39.11,42.46,25.96,1.66,44.96-18.72,44.52-41.48Z"/>
|
||||
</g>
|
||||
<g id="R3_outline">
|
||||
<path d="M664.07,419.78c-.01,26.37-21.16,47.39-47.6,47.32-26.19-.06-48.19-21.58-47.62-47.5.59-26.82,21.12-47.52,48.44-47.45,26.83.08,46.79,21.47,46.78,47.62ZM658.23,419.7c.55-22.76-17.76-41.19-40.35-41.72-23.43-.55-42.68,18.19-43.29,40.74-.65,23.92,18.7,41.15,39.11,42.46,25.96,1.66,44.96-18.72,44.52-41.48Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<!-- alt="DualShock 5 Controller" -->
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 col-sm-12" style="min-width: 330px;">
|
||||
@@ -495,7 +608,7 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-xl-6 py-3">
|
||||
<div class="card">
|
||||
<h5 class="card-header"><i class="fas fa-code"></i> Software</h5>
|
||||
<h5 class="card-header"><i class="fas fa-code"></i> <span class="ds-i18n">Software</span></h5>
|
||||
<div class="card-body">
|
||||
<dl class="row" id="fwinfoextra-fw"></dl>
|
||||
</div>
|
||||
@@ -503,7 +616,7 @@ dl.row dd { font-family: monospace; }
|
||||
</div>
|
||||
<div class="col-lg-12 col-xl-6 py-3">
|
||||
<div class="card">
|
||||
<h5 class="card-header"><i class="fas fa-microchip"></i> Hardware</h5>
|
||||
<h5 class="card-header"><i class="fas fa-microchip"></i> <span class="ds-i18n">Hardware</span></h5>
|
||||
<div class="card-body">
|
||||
<dl class="row" id="fwinfoextra-hw"></dl>
|
||||
</div>
|
||||
@@ -830,7 +943,7 @@ dl.row dd { font-family: monospace; }
|
||||
<div class="container">
|
||||
<footer>
|
||||
<div class="d-flex flex-column flex-sm-row justify-content-between py-4 my-4 border-top" id="footbody">
|
||||
<p><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.5</a> (2025-05-17) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
<p><a target="_blank" href="https://github.com/dualshock-tools/dualshock-tools.github.io/commits/main/"><span class="ds-i18n">Version</span> 2.10</a> (2025-08-02) - <a href="#" class="ds-i18n" onclick="show_donate_modal();">Support this project</a> <span id="authorMsg"></span></p>
|
||||
|
||||
<ul class="list-unstyled d-flex">
|
||||
<li class="ms-3"><a class="link-body-emphasis" href="mailto:ds4@the.al" target="_blank"><svg class="bi" width="24" height="24"><use xlink:href="#mail"/></svg></a></li>
|
||||
|
||||
@@ -187,8 +187,10 @@
|
||||
"Bluetooth Address": "عنوان البلوتوث",
|
||||
"Show all": "عرض الكل",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cancel": "",
|
||||
"Cannot lock": "",
|
||||
@@ -196,29 +198,46 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"Save": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -161,8 +161,10 @@
|
||||
"Save changes permanently": "Запазете промените постоянно",
|
||||
"Reboot controller": "Рестартирайте контролера",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -172,9 +174,14 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
@@ -186,6 +193,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
@@ -194,7 +205,9 @@
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
@@ -206,9 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
@@ -217,7 +234,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -143,9 +143,11 @@
|
||||
"Check circularity": "Zkontrolujte rozsah",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -158,9 +160,14 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
@@ -174,6 +181,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
@@ -184,8 +195,10 @@
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"No.": "",
|
||||
"Nova Pink": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
@@ -201,10 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
@@ -215,7 +232,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
|
||||
246
lang/da_dk.json
Normal file
246
lang/da_dk.json
Normal file
@@ -0,0 +1,246 @@
|
||||
{
|
||||
".authorMsg": "- Oversættelse til dansk af Claus Christensen",
|
||||
"DualShock Calibration GUI": "DualShock Kalibrerings GUI",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Browseren understøttes ikke. Brug venligst en webbrowser med WebHID-understøttelse (f.eks. Chrome).",
|
||||
"Connect": "Tilslut",
|
||||
"Connected to:": "Tilsluttet til:",
|
||||
"Disconnect": "Afbryd",
|
||||
"Calibrate stick center": "Kalibrér styrepindens centrum",
|
||||
"Calibrate stick range": "Kalibrér styrepindens rækkevidde",
|
||||
"Sections below are not useful, just some debug infos or manual commands": "Afsnittene nedenfor er ikke relevante, blot nogle fejlfindingsoplysninger eller manuelle kommandoer",
|
||||
"NVS Status": "NVS Status",
|
||||
"Unknown": "Ukendt",
|
||||
"Debug buttons": "Fejlfindingsknapper",
|
||||
"Query NVS status": "Forespørg NVS status",
|
||||
"NVS unlock": "lås NVS op",
|
||||
"NVS lock": "lås NVS",
|
||||
"Get BDAddr": "Hent BDAddr",
|
||||
"Fast calibrate stick center (OLD)": "Hurtig kalibrering af styrepindens centrum (GAMMEL)",
|
||||
"Stick center calibration": "Kalibrering af styrepindens centrum",
|
||||
"Welcome": "Velkommen",
|
||||
"Step 1": "Trin 1",
|
||||
"Step 2": "Trin 2",
|
||||
"Step 3": "Trin 3",
|
||||
"Step 4": "Trin 4",
|
||||
"Completed": "Fuldført",
|
||||
"Welcome to the stick center-calibration wizard!": "Velkommen til guiden til kalibrering af styrepindens centrum!",
|
||||
"This tool will guide you in re-centering the analog sticks of your controller. It consists in four steps: you will be asked to move both sticks in a direction and release them.": "Dette værktøj vil guide dig i at centrere de analoge styrepinde på din controller igen. Det består af fire trin: Du vil blive bedt om at bevæge begge styrepinde i én retning og derefter slippe dem.",
|
||||
"Please be aware that, <i>once the calibration is running, it cannot be canceled</i>. Do not close this page or disconnect your controller until is completed.": "Vær venligst opmærksom på, at <i>når kalibreringen først er i gang, kan den ikke annulleres</i>. Luk ikke denne side, og frakobl ikke din controller, før processen er afsluttet.",
|
||||
"Press <b>Start</b> to begin calibration.": "Tryk på <b>\"Start\"</b> for at begynde kalibreringen.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Flyt begge styrepinde til det <b>øverste venstre hjørne</b>, og slip dem.",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "Når styrepindene er tilbage i centrum, skak du trykke på <b>\"Fortsæt\"</b>.",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Flyt begge styrepinde til det <b>øverste højre hjørne</b>, og slip dem.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Flyt begge styrepinde til det <b>nederste venstre hjørne</b>, og slip dem.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Flyt begge styrepinde til det <b>nederste højre hjørne</b>, og slip dem.",
|
||||
"Calibration completed successfully!": "Kalibreringen er gennemført med succes!",
|
||||
"Next": "Næste",
|
||||
"Recentering the controller sticks. ": "Genjustering af controllerens styrepinde. ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "Luk venligst ikke dette vindue, og frakobl ikke din controller. ",
|
||||
"Range calibration": "Rækkeviddekalibrering",
|
||||
"<b>The controller is now sampling data!</b>": "<b>Controlleren indsamler nu data!</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Rotér styrepindene langsomt for at dække hele rækkevidden. Tryk på \"Færdig\", når du er færdig.",
|
||||
"Done": "Færdig",
|
||||
"Hi, thank you for using this software.": "Hej, tak fordi du bruger denne software.",
|
||||
"If you're finding it helpful and you want to support my efforts, feel free to": "Hvis du finder den nyttig, og du ønsker at støtte mine bestræbelser, er du velkommen til at",
|
||||
"buy me a coffee": "købe mig en kaffe",
|
||||
"! :)": "! :)",
|
||||
"Do you have any suggestion or issue? Drop me a message via email or discord.": "Har du forslag eller oplever du problemer? Send mig en besked via e-mail eller Discord.",
|
||||
"Cheers!": "Cheers!",
|
||||
"Support this project": "Støt dette projekt",
|
||||
"unknown": "ukendt",
|
||||
"original": "original",
|
||||
"clone": "klon",
|
||||
"locked": "låst",
|
||||
"unlocked": "ulåst",
|
||||
"error": "fejl",
|
||||
"Build Date": "Build Dato",
|
||||
"HW Version": "HW Version",
|
||||
"SW Version": "SW Version",
|
||||
"Device Type": "Enhedstype",
|
||||
"Range calibration completed": "Rækkeviddekalibrering gennemført",
|
||||
"Range calibration failed: ": "Rækkeviddekalibrering mislykkedes: ",
|
||||
"Cannot unlock NVS": "Kan ikke låse NVS op",
|
||||
"Cannot relock NVS": "Kan ikke låse NVS igen",
|
||||
"Error 1": "Fejl 1",
|
||||
"Error 2": "Fejl 2",
|
||||
"Error 3": "Fejl 3",
|
||||
"Stick calibration failed: ": "Kalibrering af styrepinde mislykkedes: ",
|
||||
"Stick calibration completed": "Kalibrering af styrepinde gennemført",
|
||||
"NVS Lock failed: ": "NVS låsning mislykkedes: ",
|
||||
"NVS Unlock failed: ": "NVS oplåsning mislykkedes: ",
|
||||
"Please connect only one controller at time.": "Forbind kun én controller ad gangen.",
|
||||
"Sony DualShock 4 V1": "Sony DualShock 4 V1",
|
||||
"Sony DualShock 4 V2": "Sony DualShock 4 V2",
|
||||
"Sony DualSense": "Sony DualSense",
|
||||
"Sony DualSense Edge": "Sony DualSense Edge",
|
||||
"Connected invalid device: ": "Forbundet til en ugyldig enhed: ",
|
||||
"The device appears to be a DS4 clone. All functionalities are disabled.": "Enheden ser ud til at være en DS4-klon. Alle funktioner er deaktiveret.",
|
||||
"Error: ": "Fejl: ",
|
||||
"My handle on discord is: the_al": "Mit brugernavn på Discord er: the_al",
|
||||
"Initializing...": "Initialiserer...",
|
||||
"Storing calibration...": "Gemmer kalibrering...",
|
||||
"Sampling...": "Sampling...",
|
||||
"Calibration in progress": "Kalibrering er i gang",
|
||||
"Start": "Start",
|
||||
"Continue": "Fortsæt",
|
||||
"You can check the calibration with the": "Du kan tjekke kalibreringen med",
|
||||
"Have a nice day :)": "Hav en god dag :)",
|
||||
"Welcome to the Calibration GUI": "Velkommen til Kalibrerings GUI",
|
||||
"Just few things to know before you can start:": "Bare et par ting, du skal vide, før du går i gang:",
|
||||
"This website is not affiliated with Sony, PlayStation & co.": "Denne hjemmeside er ikke tilknyttet Sony, PlayStation & co.",
|
||||
"This service is provided without warranty. Use at your own risk.": "Denne service leveres uden garanti og benyttes på eget ansvar.",
|
||||
"Keep the internal battery of the controller connected and ensure it is well charged. If the battery dies during operations, the controller will be damaged and rendered unusable.": "Hold controllerens interne batteri tilsluttet, og sørg for, at det er godt opladet. Hvis batteriet løber tør for strøm under processen, kan controlleren blive beskadiget og ubrugelig.",
|
||||
"Before doing the permanent calibration, try the temporary one to ensure that everything is working well.": "Før du foretager en permanent kalibrering, bør du prøve en midlertidig for at sikre, at alt fungerer korrekt.",
|
||||
"Understood": "Forstået",
|
||||
"Version": "Version",
|
||||
"Frequently Asked Questions": "Ofte stillede spørgsmål",
|
||||
"Close": "Luk",
|
||||
"Welcome to the F.A.Q. section! Below, you'll find answers to some of the most commonly asked questions about this website. If you have any other inquiries or need further assistance, feel free to reach out to me directly. Your feedback and questions are always welcome!": "<b>Velkommen til sektionen med ofte stillede spørgsmål!</b><br> Her finder du svar på nogle af de mest almindelige spørgsmål om denne hjemmeside. Hvis du har andre spørgsmål eller har brug for yderligere hjælp, er du altid velkommen til at kontakte mig direkte. Din feedback og dine spørgsmål er altid velkomne!",
|
||||
"How does it work?": "Hvordan fungerer det?",
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "Bag kulisserne er denne hjemmeside resultatet af et års dedikeret arbejde med reverse-engineering af DualShock controllere for sjov/hobby, udført af en tilfældig fyr på internettet.",
|
||||
"Through": "Gennem",
|
||||
"this research": "denne forskning",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": ", blev det opdaget, at der findes nogle udokumenterede kommandoer på DualShock-controllere, som kan sendes via USB og anvendes under fabriksmonteringsprocessen. Når disse kommandoer sendes, starter controlleren en genkalibrering af de analoge styrepinde.",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "Selvom det oprindelige fokus for denne forskning oprindeligt ikke var rettet mod genkalibrering, blev det hurtigt klart, at en service med denne funktion kunne være til stor gavn for mange. Og dermed er vi her.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "Bliver kalibreringen ved med at være aktiv under gameplay på PS4/PS5?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "Ja, hvis du sætter kryds i boksen \"Skriv ændringer permanent i controlleren\", bliver kalibreringen skrevet direkte ind i controllerens firmware. Det sikrer, at den forbliver aktiv, uanset hvilken konsol controlleren tilsluttes.",
|
||||
"Is this an officially endorsed service?": "Er dette en officielt godkendt service?",
|
||||
"No, this service is simply a creation by a DualShock enthusiast.": "Nej, denne service er blot skabt af en DualShock-entusiast.",
|
||||
"Does this website detects if a controller is a clone?": "Kan denne hjemmeside registrere, om en controller er en klon?",
|
||||
"Yes, only DualShock4 at the moment. This happened because I accidentally purchased some clones, spent time identifying the differences and added this functionality to prevent future deception.": "Ja, kun DualShock4 i øjeblikket. Det skete, fordi jeg ved en fejl købte nogle kloner, brugte tid på at identificere forskellene og tilføjede denne funktionalitet for at forhindre fremtidigt bedrag.",
|
||||
"Unfortunately, the clones cannot be calibrated anyway, because they only clone the behavior of a DualShock4 during a normal gameplay, not all the undocumented functionalities.": "Desværre kan klonerne ikke kalibreres, fordi de kun efterligner DualShock4’s adfærd under almindeligt gameplay og ikke alle de udokumenterede funktioner.",
|
||||
"If you want to extend this detection functionality to DualSense, please ship me a fake DualSense and you'll see it in few weeks.": "Hvis du ønsker at udvide denne detektionsfunktionalitet til DualSense, så send mig en falsk DualSense, og du vil kunne se resultaterne om et par uger.",
|
||||
"What development is in plan?": "Hvilke forbedringer er planlagt?",
|
||||
"I maintain two separate to-do lists for this project, although the priority has yet to be established.": "Jeg vedligeholder to separate to-do-lister for dette projekt, selvom prioriteringen endnu ikke er fastlagt.",
|
||||
"The first list is about enhancing support for DualShock4 and DualSense controllers:": "Den første liste handler om at forbedre understøttelsen af DualShock4- og DualSense-controllere:",
|
||||
"Implement calibration of L2/R2 triggers.": "Implementering af kalibrering for L2/R2-aftrækker.",
|
||||
"Improve detection of clones, particularly beneficial for those seeking to purchase used controllers with assurance of authenticity.": "Forbedring af registreringen af kloner, hvilket især er nyttigt for dem, der ønsker at købe brugte controllere med garanti for ægthed.",
|
||||
"Enhance user interface (e.g. provide additional controller information)": "Forbedring af brugergrænsefladen (f.eks. ved at vise flere oplysninger om controlleren).",
|
||||
"Add support for recalibrating IMUs.": "Tilføjelse af understøttelse for genkalibrering af IMU’er.",
|
||||
"Additionally, explore the possibility of reviving non-functioning DualShock controllers (further discussion available on Discord for interested parties).": "Undersøgelse af muligheden for at genoplive ikke-fungerende DualShock-controllere (yderligere diskussion er tilgængelig på Discord for interesserede).",
|
||||
"The second list contains new controllers I aim to support:": "Den anden liste indeholder nye controllere, jeg har til hensigt at understøtte:",
|
||||
"DualSense Edge": "DualSense Edge",
|
||||
"DualShock 3": "DualShock 3",
|
||||
"XBox Controllers": "Xbox Controller",
|
||||
"Each of these tasks presents both immense interest and significant time investment. To provide context, supporting a new controller typically demands 6-12 months of full-time research, alongside a stroke of good fortune.": "Hver af disse opgaver er både utroligt spændende og kræver en betydelig tidsmæssig investering. For at sætte det i perspektiv kræver det typisk 6-12 måneders fuldtidsforskning at tilføje understøttelse af en ny controller - og en god portion held.",
|
||||
"I love this service, it helped me! How can I contribute?": "Jeg elsker denne service, den har hjulpet mig! Hvordan kan jeg bidrage?",
|
||||
"I'm glad to hear that you found this helpful! If you're interested in contributing, here are a few ways you can help me:": "Jeg er glad for at høre, at du fandt dette nyttigt! Hvis du er interesseret i at bidrage, er her nogle måder, du kan hjælpe mig på:",
|
||||
"Consider making a": "Overvej at give en",
|
||||
"donation": "donation",
|
||||
"to support my late-night caffeine-fueled reverse-engineering efforts.": ", for at støtte mine sene nætter med koffein-drevne reverse-engineering indsatser.",
|
||||
"Ship me a controller you would love to add (send me an email for organization).": "Send mig en controller, du gerne vil have tilføjet (send en e-mail for at aftale det praktiske).",
|
||||
"Translate this website in your language": "Oversæt denne hjemmeside til dit sprog",
|
||||
", to help more people like you!": ", for at hjælpe flere personer som dig!",
|
||||
"This website uses analytics to improve the service.": "Hjemmesiden anvender analyseværktøjer for at forbedre servicen.",
|
||||
"Board Model": "Board Model",
|
||||
"This feature is experimental.": "Denne funktion er eksperimentel.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Giv mig venligst besked, hvis board modellen på din controller ikke bliver registreret korrekt.",
|
||||
"Board model detection thanks to": "Board model detektion, tak til",
|
||||
"Please connect the device using a USB cable.": "Tilslut venligst enheden med et USB-kabel.",
|
||||
"This DualSense controller has outdated firmware.": "Denne DualSense controller har forældet firmware.",
|
||||
"Please update the firmware and try again.": "Opdater venligst firmwaren og prøv igen.",
|
||||
"Joystick Info": "Joystick Info",
|
||||
"Err R:": "Fejl R:",
|
||||
"Err L:": "Fejl L:",
|
||||
"Check circularity": "Tjek cirkularitet",
|
||||
"Can I reset a permanent calibration to previous calibration?": "Kan jeg nulstille en permanent kalibrering til en tidligere kalibrering?",
|
||||
"No.": "Nej.",
|
||||
"Can you overwrite a permanent calibration?": "Kan man overskrive en permanent kalibrering?",
|
||||
"Yes. Simply do another permanent calibration.": "Ja. Du skal blot foretage en ny permanent kalibrering.",
|
||||
"Does this software resolve stickdrift?": "Kan denne software løse styrepinddrift?",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "Styrepinddrift skyldes en fysisk fejl; nemlig snavs, en slidt potentiometer eller i nogle tilfælde en slidt fjeder.",
|
||||
"This software will not fix stick drift on its own if you already experience that. What it will help with, is ensuring the new joystick(s) will function properly after replacing the old one(s) to work well with.": "Denne software kan ikke alene rette styrepinddrift, hvis du allerede oplever det. Det, den kan hjælpe med, er at sikre, at den nye styrepind eller de nye styrepinde fungerer korrekt efter udskiftning af de gamle.",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "Jeg har bemærket, at nogle controllere direkte fra fabrikken har dårligere kalibrering end efter en genkalibrering. Det gælder især for cirkulariteten på SCUF-controllere med en unik skal.",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "(Dualsense) Vil en opdatering af firmwaren nulstille kalibreringen?",
|
||||
"After range calibration, joysticks always go in corners.": "Efter rækkeviddekalibrering, bevæger styrepindene sig altid ud i hjørnerne.",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "Dette problem opstår, fordi du har klikket på \"Færdig\" lige efter at have startet en rækkeviddekalibrering.",
|
||||
"Please read the instructions.": "Læs venligst vejledningen.",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "Du skal dreje styrepindene, inden du trykker på \"Færdig\".",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "Sørg for at røre ved kanterne af styrepindens ramme og drej langsomt, helst i begge retninger - med uret og mod uret.",
|
||||
"Only after you have done that, you click on \"Done\".": "Først når du har gjort det, skal du klikke på \"Færdig\".",
|
||||
"Changes saved successfully": "Ændringer gemt med succes",
|
||||
"Error while saving changes:": "Fejl under gemning af ændringer",
|
||||
"Save changes permanently": "Gem ændringer permanent",
|
||||
"Reboot controller": "Genstart Controller",
|
||||
"Controller Info": "Controller Info",
|
||||
"Debug Info": "Fejlfindingsinfo",
|
||||
"Software": "Software",
|
||||
"Hardware": "Hardware",
|
||||
"FW Build Date": "FW Build Dato",
|
||||
"FW Type": "FW Type",
|
||||
"FW Series": "FW Serie",
|
||||
"Serial Number": "Serienummer",
|
||||
"Battery Barcode": "Batteri Stregkode",
|
||||
"VCM Left Barcode": "VCM Venstre Stregkode",
|
||||
"VCM Right Barcode": "VCM Højre Stregkode",
|
||||
"Show all": "Vis alt",
|
||||
"Finetune stick calibration": "Finjuster styrepindskalibrering",
|
||||
"(beta)": "(beta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Denne skærm giver mulighed for at finjustere de rå kalibreringsdata på din controller.",
|
||||
"Left stick": "Venstre styrepind",
|
||||
"Right stick": "Højre styrepind",
|
||||
"Center X": "Centrér X",
|
||||
"Center Y": "Centrér Y",
|
||||
"Save": "Gem",
|
||||
"Cancel": "Afbryd",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "DualShock Kalibrerings GUI understøtter i øjeblikket ikke DualSense Edge.",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Jeg arbejder aktivt på at tilføje kompatibilitet, den primære udfordring ligger i at gemme data i stick modulerne.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Hvis dette værktøj har været nyttigt for dig, eller du gerne vil se DualSense Edge understøttelse komme hurtigere, så overvej venligst at støtte projektet med en",
|
||||
"Thank you for your generosity and support!": "Tak for din gavmildhed og støtte!",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "<b>Eksternt</b>: ved at påføre +1,8V direkte på det synlige testpunkt uden at åbne controlleren.",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "<b>Intern</b>: ved at lodde en ledning fra en +1,8V kilde til skrivebeskyttelses-testpunktet (TP).",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Bluetooth Address": "Bluetooth Adresse",
|
||||
"Calibration is being stored in the stick modules.": "Kalibreringen bliver gemt i styrepindmodulerne.",
|
||||
"Cannot lock": "Kan ikke låse",
|
||||
"Cannot store data into": "Kan ikke gemme data i",
|
||||
"Cannot unlock": "Kan ikke låse op",
|
||||
"Chroma Indigo": "Chroma Indigo",
|
||||
"Chroma Pearl": "Chroma Pearl",
|
||||
"Chroma Teal": "Chroma Teal",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Color": "Farve",
|
||||
"Color detection thanks to": "Farvedetektering, tak til",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"DualSense Edge Calibration": "DualSense Edge Kalibrering",
|
||||
"FW Update": "FW Opdatering",
|
||||
"FW Update Info": "FW Opdateringsinfo",
|
||||
"FW Version": "FW Version",
|
||||
"For more info or help, feel free to reach out on Discord.": "For mere info eller hjælp, er du velkommen til at kontakte os på Discord.",
|
||||
"Fortnite": "Fortnite",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"HW Model": "HW Model",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Hvis kalibreringen ikke gemmes permanent, skal du dobbelttjekke kabelføringen af hardware-modifikationen.",
|
||||
"Left Module Barcode": "Venstre Modul Stregkode",
|
||||
"MCU Unique ID": "MCU Unikt ID",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"More details and images": "Flere detaljer og billeder",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"PCBA ID": "PCBA ID",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Forbind venligst en DualShock 4-, DualSense- eller DualSense Edge-controller til din computer, og tryk på Tilslut.",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "Højre Modul Stregkode",
|
||||
"SBL FW Version": "SBL FW Version",
|
||||
"Spider FW Version": "Spider FW Version",
|
||||
"Spider-Man 2": "Spider-Man 2",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "Understøttelse af kalibrering af DualSense Edge styrepindmoduler er nu tilgængelig som en <b>eksperimentel funktion</b>.",
|
||||
"The Last of Us": "The Last of Us",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "Dette involverer midlertidigt at deaktivere skrivebeskyttelsen ved, at anvende <b>+1,8V</b> til et specifikt testpunkt på hver modul.",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Dette er kun for avancerede brugere. Hvis du er usikker på hvad du laver, bør du ikke forsøge det.",
|
||||
"Touchpad FW Version": "Touchpad FW Version",
|
||||
"Touchpad ID": "Touchpad ID",
|
||||
"Venom FW Version": "Venom FW Version",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Vi påtager os intet ansvar for eventuelle skader forårsaget af denne ændring.",
|
||||
"White": "Hvid",
|
||||
"You can do this in two ways:": "Du kan gøre dette på to måder:",
|
||||
"here": "her",
|
||||
"left module": "venstre modul",
|
||||
"right module": "højre modul",
|
||||
"": ""
|
||||
}
|
||||
@@ -187,38 +187,57 @@
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Ich arbeite aktiv daran, die Kompatibilität hinzuzufügen. Die größte Herausforderung besteht darin, Daten in die Stick-Module zu speichern.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Wenn Ihnen dieses Tool geholfen hat oder Sie möchten, dass die DualSense-Edge-Unterstützung schneller verfügbar ist, ziehen Sie bitte in Betracht, das Projekt mit einem Beitrag zu unterstützen",
|
||||
"Thank you for your generosity and support!": "Vielen Dank für Ihre Großzügigkeit und Unterstützung!",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"FW Update": "",
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"MCU Unique ID": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"SBL FW Version": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"Touchpad FW Version": "",
|
||||
"Touchpad ID": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -143,9 +143,11 @@
|
||||
"Check circularity": "Comprobar circularidad",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -158,9 +160,14 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
@@ -174,6 +181,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
@@ -184,8 +195,10 @@
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"No.": "",
|
||||
"Nova Pink": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
@@ -201,10 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
@@ -215,7 +232,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
|
||||
@@ -23,19 +23,19 @@
|
||||
"Completed": "Terminé",
|
||||
"Welcome to the stick center-calibration wizard!": "Bienvenue dans l'assistant de calibrage de centrage du joystick !",
|
||||
"This tool will guide you in re-centering the analog sticks of your controller. It consists in four steps: you will be asked to move both sticks in a direction and release them.": "Cet outil va vous guider afin de recentrer les joysticks analogiques de votre manette. Il consiste en quatres étapes: il vous sera demandé de bouger les deux joysticks dans une direction puis de les relacher.",
|
||||
"Please be aware that, <i>;once the calibration is running, it cannot be canceled</i>;. Do not close this page or disconnect your controller until is completed.": "Veuillez noter <i>;qu’une fois le calibrage lancée, il n’est pas possible de l'annuler</i>;. Ne fermez pas cette page ou ne déconnectez pas la manette tant que le calibrage n’est pas terminée.",
|
||||
"Press <b>;Start</b>; to begin calibration.": "Appuyez sur <b>;Démarrer</b>; pour commencer le calibrage.",
|
||||
"Please move both sticks to the <b>;top-left corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en haut à gauche</b>; puis relachez-les.",
|
||||
"When the sticks are back in the center, press <b>;Continue</b>;.": "Une fois les deux joysticks recentrés, appuyez sur <b>;Continuer</b>;.",
|
||||
"Please move both sticks to the <b>;top-right corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en haut à droite</b>; puis relachez-les.",
|
||||
"Please move both sticks to the <b>;bottom-left corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en bas à gauche</b>; puis relachez-les.",
|
||||
"Please move both sticks to the <b>;bottom-right corner</b>; and release them.": "Veuillez déplacer les deux joysticks <b>;en bas à droite</b>; puis relachez-les.",
|
||||
"Please be aware that, <i>once the calibration is running, it cannot be canceled</i>. Do not close this page or disconnect your controller until is completed.": "Veuillez noter <i>qu'une fois le calibrage lancée, il n'est pas possible de l'annuler</i>. Ne fermez pas cette page ou ne déconnectez pas la manette tant que le calibrage n'est pas terminée.",
|
||||
"Press <b>Start</b> to begin calibration.": "Appuyez sur <b>Démarrer</b> pour commencer le calibrage.",
|
||||
"Please move both sticks to the <b>top-left corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en haut à gauche</b> puis relachez-les.",
|
||||
"When the sticks are back in the center, press <b>Continue</b>.": "Une fois les deux joysticks recentrés, appuyez sur <b>Continuer</b>.",
|
||||
"Please move both sticks to the <b>top-right corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en haut à droite</b> puis relachez-les.",
|
||||
"Please move both sticks to the <b>bottom-left corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en bas à gauche</b> puis relachez-les.",
|
||||
"Please move both sticks to the <b>bottom-right corner</b> and release them.": "Veuillez déplacer les deux joysticks <b>en bas à droite</b> puis relachez-les.",
|
||||
"Calibration completed successfully!": "Calibrage terminé avec succès !",
|
||||
"Next": "Suivant",
|
||||
"Recentering the controller sticks. ": "Recentrement des joysticks de la manette en cours. ",
|
||||
"Please do not close this window and do not disconnect your controller. ": "Veuillez ne pas fermer cette fenêtre et ne déconnectez pas votre manette. ",
|
||||
"Range calibration": "Calibrage de la portée du joystick",
|
||||
"<b>;The controller is now sampling data!</b>;": "<b>;La manette est maintenant en train d'échantillonner les données !</b>;",
|
||||
"<b>The controller is now sampling data!</b>": "<b>La manette est maintenant en train d'échantillonner les données !</b>",
|
||||
"Rotate the sticks slowly to cover the whole range. Press \"Done\" when completed.": "Faites tourner doucement les joysticks afin de couvrir toute leur portée. Appuyez sur \"Terminer\" une fois terminé.",
|
||||
"Done": "Terminer",
|
||||
"Hi, thank you for using this software.": "Salut, merci d'avoir utilisé cet outil.",
|
||||
@@ -143,9 +143,11 @@
|
||||
"Check circularity": "Vérifier la circularité",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -158,9 +160,14 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
@@ -174,6 +181,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
@@ -184,8 +195,10 @@
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"No.": "",
|
||||
"Nova Pink": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
@@ -201,10 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
@@ -215,7 +232,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
|
||||
@@ -212,15 +212,34 @@
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Nem vállalunk felelősséget az ezen módosítás megkísérlése által okozott károkért.",
|
||||
"You can do this in two ways:": "Ezt kétféleképpen teheted meg:",
|
||||
"here": "itt",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"Right Module Barcode": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"Cannot lock": "Zárolás nem lehetséges",
|
||||
"Cannot store data into": "Adatok tárolása nem lehetséges ide:",
|
||||
"Cannot unlock": "Feloldás nem lehetséges",
|
||||
"Color": "Szín",
|
||||
"Color detection thanks to": "A színészlelésért köszönet illeti:",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Ha a kalibráció nem került véglegesen tárolásra, kérlek, ellenőrizd újra a hardvermódosítás vezetékezését!",
|
||||
"Left Module Barcode": "Bal modul vonalkódja",
|
||||
"Right Module Barcode": "Jobb modul vonalkódja",
|
||||
"left module": "bal modul",
|
||||
"right module": "jobb modul",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"White": "Fehér",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Fortnite": "",
|
||||
"Spider-Man 2": "",
|
||||
"The Last of Us": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -223,5 +223,24 @@
|
||||
"Right Module Barcode": "Codice modulo destro",
|
||||
"left module": "modulo sinistro",
|
||||
"right module": "modulo destro",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"White": "Original White",
|
||||
"Chroma Indigo": "Chroma Indigo",
|
||||
"Chroma Pearl": "Chroma Pearl",
|
||||
"Chroma Teal": "Chroma Teal",
|
||||
"Fortnite": "Fortnite",
|
||||
"Spider-Man 2": "Spider-Man 2",
|
||||
"The Last of Us": "The Last of Us",
|
||||
"": ""
|
||||
}
|
||||
|
||||
@@ -155,9 +155,11 @@
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "このツールが役に立った場合、またはDualSense Edgeのサポートを早く実現したい場合は、プロジェクトへの支援をご検討ください。",
|
||||
"Thank you for your generosity and support!": "ご支援とご厚意に感謝します!",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -167,9 +169,14 @@
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
@@ -182,6 +189,10 @@
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
@@ -189,8 +200,10 @@
|
||||
"Left Module Barcode": "",
|
||||
"MCU Unique ID": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"No.": "",
|
||||
"Nova Pink": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
@@ -204,8 +217,12 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
@@ -215,7 +232,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
|
||||
@@ -186,8 +186,10 @@
|
||||
"Bluetooth Address": "Bluetooth Address",
|
||||
"Show all": "모두 보기",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cancel": "",
|
||||
"Cannot lock": "",
|
||||
@@ -195,29 +197,46 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"Save": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -143,9 +143,11 @@
|
||||
"Check circularity": "Controleer de circulariteit",
|
||||
"(Dualsense) Will updating the firmware reset calibration?": "",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"After range calibration, joysticks always go in corners.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -158,9 +160,14 @@
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Changes saved successfully": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"Does this software resolve stickdrift?": "",
|
||||
@@ -174,6 +181,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I have noticed some controllers out of the box have worse factory calibration than if I would recalibrate them. Especially true for circularity of SCUF controllers with a unique shell.": "",
|
||||
@@ -184,8 +195,10 @@
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Make sure to touch the edges of the joystick frame and rotate slowly, preferably in each direction - clockwise and anti-clockwise.": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"No.": "",
|
||||
"Nova Pink": "",
|
||||
"Only after you have done that, you click on \"Done\".": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
@@ -201,10 +214,14 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Stickdrift is caused by a physical defect; namely dirt, worn potentiometer or in some cases a worn spring.": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This issue happens because you have clicked \"Done\" immediately after starting a range calibration.": "",
|
||||
@@ -215,7 +232,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"Yes. Simply do another permanent calibration.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"You have to rotate the joysticks before you press \"Done\".": "",
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
".authorMsg": "Tłumaczenie na język polski wykonał - Marekk2k :)",
|
||||
".authorMsg": "Tłumaczenie na język polski wykonał <a href='https://github.com/Marekk2k'>Marekk</a>",
|
||||
"DualShock Calibration GUI": "DualShock Calibration GUI",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Nie wspierana przeglądarka! Proszę użyć przeglądarki internetowej wpierającą WebHID (np. Chrome).",
|
||||
"Connect": "Połącz",
|
||||
"Connected to:": "Połączono z:",
|
||||
"Disconnect": "Rozłącz",
|
||||
"Disconnect": "Rozłącz kontroler",
|
||||
"Calibrate stick center": "Skalibruj centralny punkt drążków",
|
||||
"Calibrate stick range": "Skalibruj maksymalny zakres drążków",
|
||||
"Reset controller": "Zresetuj kontroler",
|
||||
@@ -100,7 +100,7 @@
|
||||
"Behind the scenes, this website is the culmination of one year of dedicated effort in reverse-engineering DualShock controllers for fun/hobby from a random guy on the internet.": "Za kulisami ta witryna internetowa jest wynikiem całorocznych wysiłków związanych z inżynierią wsteczną kontrolerów DualShock dla zabawy/hobby jakiegoś przypadkowego faceta w Internecie.",
|
||||
"Through": "Poprzez",
|
||||
"this research": "badania",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "odkryto, że w kontrolerach DualShock znajdują się pewne nieudokumentowane polecenia, które można wysyłać przez USB i wykorzystywać w procesie produkcyjnym. Po wysłaniu tych poleceń sterownik rozpoczyna ponowną kalibrację drążków.",
|
||||
", it was discovered that there exist some undocumented commands on DualShock controllers that can be sent via USB and are used during factory assembly process. If these commands are sent, the controller starts the recalibration of analog sticks.": "odkryto, że w kontrolerach DualShock, oraz Dualsense znajdują się pewne nieudokumentowane polecenia, które można wysyłać poprzez USB i wykorzystywać je w procesie produkcyjnym. Po wysłaniu tych poleceń sterownik rozpoczyna ponowną kalibrację drążków.",
|
||||
"While the primary focus of this research wasn't initially centered on recalibration, it became apparent that a service offering this capability could greatly benefit numerous individuals. And thus, here we are.": "Chociaż początkowo główny nacisk w tych badaniach nie skupiał się na ponownej kalibracji, stało się jasne, że usługa oferująca taką możliwość może przynieść ogromne korzyści wielu osobom. I tak oto jesteśmy.",
|
||||
"Does the calibration remain effective during gameplay on PS4/PS5?": "Czy kalibracja pozostaje skuteczna podczas gry na PS4/PS5?",
|
||||
"Yes, if you tick the checkbox \"Write changes permanently in the controller\". In that case, the calibration is flashed directly in the controller firmware. This ensures that it remains in place regardless of the console it's connected to.": "Tak, jeśli zaznaczysz w checkbox \"Zapisz zmiany na stałe w kontrolerze\" W takim przypadku kalibracja zostanie wczytana bezpośrednio w oprogramowaniu sterownika. Dzięki temu pozostanie na swoim miejscu niezależnie od konsoli, do której jest podłączony.",
|
||||
@@ -134,8 +134,8 @@
|
||||
"This website uses analytics to improve the service.": "Ta strona korzysta z analiz w celu ulepszenia usług.",
|
||||
"Board Model": "Model płytki",
|
||||
"This feature is experimental.": "Ta funkcja jest eksperymentalna.",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Proszę daj mi znać jaki model płytki kontrolera nie został wykryty poprawnie",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby która wykryła model płytki",
|
||||
"Please let me know if the board model of your controller is not detected correctly.": "Jeżeli model płytki został wykryty błędnie prosimy o kontakt",
|
||||
"Board model detection thanks to": "Podziękowania dla osoby za funkcję wykrywania modelu płytki",
|
||||
"Please connect the device using a USB cable.": "Proszę podłącz urządzenie przy pomocy kabla USB.",
|
||||
"This DualSense controller has outdated firmware.": "Ten kontroler Dualsense posiada przestarzały firmware.",
|
||||
"Please update the firmware and try again.": "Proszę zaktualizuj firmware i spróbuj ponownie.",
|
||||
@@ -188,7 +188,7 @@
|
||||
"Show all": "Pokaż wszystko",
|
||||
"Finetune stick calibration": "Dokładna kalibracja drążków",
|
||||
"(beta)": "(beta)",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Te okienko pozwala na dokładniejszą zmianę w danych o kalibracji w twoim kontrolerze",
|
||||
"This screen allows to finetune raw calibration data on your controller": "Te okienko pozwala na ustawianie dokładniejszych danych o kalibracji w twoim kontrolerze",
|
||||
"Left stick": "Lewy drążęk",
|
||||
"Right stick": "Prawy drążęk",
|
||||
"Center X": "Punkt X",
|
||||
@@ -199,29 +199,48 @@
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktywnie pracuję nad dodaniem kompatybilności, ale głównym wyzwaniem jest przechowywanie danych w modułach drążków.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Jeśli uważasz że to narzędzie było dla ciebie pomocne, lub chcesz aby wsparcie DualSense Edge pojawiło się szybciej, rozważ wsparcie projektu poprzez",
|
||||
"Thank you for your generosity and support!": "Dziękujemy za hojność i wsparcie!",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"More details and images": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"30th Anniversary": "30th Anniversary",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "<b>Zewnętrznie</b>: poprzez podanie +1.8V bezpośrednio do widocznego punktu testowego bez otwierania kontrolera.",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "<b>Wewnętrznie</b>: przez przylutowanie przewodu z źródła +1.8V do punktu testowego ochrony przed zapisem.",
|
||||
"Astro Bot": "Astro Bot",
|
||||
"Calibration is being stored in the stick modules.": "Kalibracja jest zapisywana w modułach drążków.",
|
||||
"Cannot lock": "Nie można zablokować",
|
||||
"Cannot store data into": "Nie można zachować informacji w",
|
||||
"Cannot unlock": "Nie można odblokować",
|
||||
"Cobalt Blue": "Cobalt Blue",
|
||||
"Color": "Kolor",
|
||||
"Color detection thanks to": "Podziękowania dla osoby za funkcję wykrywania kolorów",
|
||||
"Cosmic Red": "Cosmic Red",
|
||||
"DualSense Edge Calibration": "Kalibracja Dualsense Edge",
|
||||
"For more info or help, feel free to reach out on Discord.": "Aby uzyskać więcej informacji lub pomoc, skontaktuj się do nas na Discordzie",
|
||||
"Galactic Purple": "Galactic Purple",
|
||||
"God of War Ragnarok": "God of War Ragnarok",
|
||||
"Grey Camouflage": "Grey Camouflage",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Jeżeli kalibracja nie została zachowana na stałe, prosimy o dwukrotnym sprawdzeniu ręcznie wykonanej modyfikacji",
|
||||
"Left Module Barcode": "Barcode lewego modułu",
|
||||
"Midnight Black": "Midnight Black",
|
||||
"More details and images": "Więcej szczegółów i zdjęć",
|
||||
"Nova Pink": "Nova Pink",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Podłącz kontroler Dualshock 4, Dualsense, lub Dualsense Edge do komputera, i naciśnij opcję Połącz",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Uwaga: moduły drążków w DS Edge <b>nie mogą być kalibrowane wyłącznie za pomocą oprogramowania!</b>. Aby zapisać niestandardową kalibrację w wewnętrznej pamięci drążka, wymagana jest ręczna <b>modyfikacja sprzętowa</b>.",
|
||||
"Right Module Barcode": "Barcode prawego modułu",
|
||||
"Starlight Blue": "Starlight Blue",
|
||||
"Sterling Silver": "Sterling Silver",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "Wsparcie dla obsługi kalibrowania modułów drążków DualSense Edge jest teraz dostępna jako <b>funkcja eksperymentalna</b>.",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "Obejmuje to na tymczasowym wyłączeniu ochrony przed zapisem poprzez podanie <b>+1.8V</b> do określonego punktu testowego na każdym module.",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Tylko dla zaawansowanych użytkowników. Jeśli nie jesteś pewien co robisz, proszę nie próbuj tego!",
|
||||
"Volcanic Red": "Volcanic Red",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Nie ponosimy odpowiedzialności za jakiekolwiek szkody spowodowane próbą tej modyfikacji.",
|
||||
"White": "White",
|
||||
"You can do this in two ways:": "Możesz to zrobić na 2 sposoby",
|
||||
"here": "tutaj",
|
||||
"left module": "lewy moduł",
|
||||
"right module": "prawy moduł",
|
||||
"Chroma Indigo": "Chroma Indigo",
|
||||
"Chroma Pearl": "Chroma Pearl",
|
||||
"Chroma Teal": "Chroma Teal",
|
||||
"Fortnite": "Fortnite",
|
||||
"Spider-Man 2": "Spider-Man 2",
|
||||
"The Last of Us": "The Last of US",
|
||||
"": ""
|
||||
}
|
||||
@@ -161,8 +161,10 @@
|
||||
"Save changes permanently": "Salvar alterações permanentemente.",
|
||||
"Reboot controller": "Reiniciar controle",
|
||||
"(beta)": "(beta)",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -172,9 +174,14 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
@@ -186,6 +193,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
@@ -194,7 +205,9 @@
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
@@ -206,9 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
@@ -217,7 +234,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -188,7 +188,8 @@
|
||||
"MCU Unique ID": "ID Unico da MCU",
|
||||
"More details and images": "Mais detalhes e imagens",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Ligue um comando DualShock 4, DualSense ou DualSense Edge ao seu computador e prima conectar.",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Nota: os módulos do DS Edge <b>não podem ser calibrados apenas por software</b>. Para armazenar uma calibração personalizada na memória interna do joystick, é necessária uma <b>modificação de hardware</b>.",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.": "Nota: os módulos do DS Edge <b>não podem ser calibrados apenas por software</b>.",
|
||||
"To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Para armazenar uma calibração personalizada na memória interna do joystick, é necessária uma <b>modificação de hardware</b>.",
|
||||
"Right stick": "joystick direito",
|
||||
"SBL FW Version": "Versão de FW SBL",
|
||||
"Save": "Gravar",
|
||||
@@ -210,17 +211,36 @@
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Não nos responsabilizamos por quaisquer dano causado ao tentar usar esta modificação.",
|
||||
"You can do this in two ways:": "Pode fazer isto de duas formas",
|
||||
"here": "Aqui",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"FW Series": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"PCBA ID": "",
|
||||
"Right Module Barcode": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"Cannot lock": "Não é possível bloquear",
|
||||
"Cannot store data into": "Não é possível armazenar dados em",
|
||||
"Cannot unlock": "Não é possível desbloquear",
|
||||
"Color": "Cor",
|
||||
"Color detection thanks to": "Detecção de cor graças a",
|
||||
"FW Series": "Série do FW",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Se a calibração não for armazenada permanentemente, verifique novamente os fios soldados na modificação de hardware.",
|
||||
"Left Module Barcode": "Código de barras do módulo esquerdo",
|
||||
"PCBA ID": "ID do PCBA",
|
||||
"Right Module Barcode": "Código de barras do módulo direito",
|
||||
"left module": "módulo esquerdo",
|
||||
"right module": "módulo direito",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"The Last of Us": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -198,26 +198,45 @@
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Aktivno radim na dodavanju kompatibilnosti, glavni izazov je u čuvanju podataka u modulima džojstika.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Ako vam je ovaj alat bio koristan ili želite da podrška za DualSense Edge stigne brže, razmislite o podršci projekta sa",
|
||||
"Thank you for your generosity and support!": "Hvala vam na velikodušnosti i podršci!",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Cosmic Red": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
145
lang/ru_ru.json
145
lang/ru_ru.json
@@ -1,5 +1,5 @@
|
||||
{
|
||||
".authorMsg": "- Перевод на Русский язык выполнен: <a href='https://www.youtube.com/channel/UC8pzDCIt_CUj8sa7cYgPzHQ'>Tamir-Teknik</a>",
|
||||
".authorMsg": "- Перевод на Русский язык выполнен: <a href='https://www.youtube.com/channel/UC8pzDCIt_CUj8sa7cYgPzHQ'>Tamir-Teknik. Дополнил Amnesia44</a>",
|
||||
"DualShock Calibration GUI": "Интерфейс калибровки DualShock",
|
||||
"Unsupported browser. Please use a web browser with WebHID support (e.g. Chrome).": "Неподдерживаемый браузер. Используйте браузер с поддержкой WebHID (например, Chrome).",
|
||||
"Connect": "Подключить",
|
||||
@@ -160,67 +160,86 @@
|
||||
"Error while saving changes:": "Ошибка при сохранении изменений:",
|
||||
"Save changes permanently": "Сохранить изменения навсегда",
|
||||
"Reboot controller": "Перезагрузить контроллер",
|
||||
"(beta)": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
"Cancel": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
"FW Build Date": "",
|
||||
"FW Series": "",
|
||||
"FW Type": "",
|
||||
"FW Update": "",
|
||||
"FW Update Info": "",
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "",
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"More details and images": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
"Right Module Barcode": "",
|
||||
"Right stick": "",
|
||||
"SBL FW Version": "",
|
||||
"Save": "",
|
||||
"Serial Number": "",
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
"Touchpad FW Version": "",
|
||||
"Touchpad ID": "",
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"(beta)": "Бета",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "<b>Снаружи</b>: подачей напряжения +1,8 В непосредственно на видимую тестовую точку (TP) без вскрытия корпуса контроллера.",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "<b>Внутри</b>: припаяйте провод от +1,8 В к точке защиты от записи.",
|
||||
"Battery Barcode": "Штрих-код батареи",
|
||||
"Bluetooth Address": "Адрес Bluetooth",
|
||||
"Calibration is being stored in the stick modules.": "Калибровка сохраняется в модулях стиков",
|
||||
"Cancel": "Отмена",
|
||||
"Cannot lock": "Не удалось заблокировать",
|
||||
"Cannot store data into": "Не удалось сохранить данные",
|
||||
"Cannot unlock": "Не удалось разблокировать",
|
||||
"Center X": "Центр оси X",
|
||||
"Center Y": "Центр оси Y",
|
||||
"Color": "Цвет",
|
||||
"Color detection thanks to": "За определение цвета спасибо",
|
||||
"Controller Info": "Инфо контроллера",
|
||||
"Debug Info": "Дебаг-информация",
|
||||
"Debug buttons": "Отладка кнопок",
|
||||
"DualSense Edge Calibration": "Калибровка DualSense Edge",
|
||||
"FW Build Date": "Дата сборки ПО",
|
||||
"FW Series": "Серия ПО",
|
||||
"FW Type": "Тип ПО",
|
||||
"FW Update": "Обновление ПО",
|
||||
"FW Update Info": "Информация об обновлении ПО",
|
||||
"FW Version": "Версия ПО",
|
||||
"Finetune stick calibration": "Точная калибровка стиков",
|
||||
"For more info or help, feel free to reach out on Discord.": "Для получения помощи не стесняйтесь обращаться в Discord",
|
||||
"HW Model": "Модель устройства",
|
||||
"Hardware": "Аппаратная часть",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "Я активно работаю над добавлением совместимости, но основная проблема заключается в хранении данных в модулях стиков.",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Если калибровка не сохраняется после перезагрузки, тщательно проверьте правильность подключения.",
|
||||
"If this tool has been helpful to you or you want to see DualSense Edge support arrive faster, please consider supporting the project with a": "Если этот инструмент был вам полезен или вы хотите, чтобы поддержка DualSense Edge появилась быстрее, пожалуйста, рассмотрите возможность поддержать проект —",
|
||||
"Left Module Barcode": "Штрих-код левого модуля",
|
||||
"Left stick": "Левый стик",
|
||||
"MCU Unique ID": "Уникальный MCU ID",
|
||||
"More details and images": "Больше деталей и изображения",
|
||||
"PCBA ID": "ID платы",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "Подключите контроллер DualShock 4, DualSense или DualSense Edge к компьютеру и нажмите кнопку Подключить",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "Обратите внимание: модули стиков на контроллере Dualsense Edge <b>нельзя откалибровать только с помощью программного обеспечения</b>. Для сохранения пользовательской калибровки во внутренней памяти джойстика требуется <b>аппаратная модификация</b>.",
|
||||
"Right Module Barcode": "Штрих-код правого модуля",
|
||||
"Right stick": "Правый стик",
|
||||
"SBL FW Version": "Версия прошивки SBL",
|
||||
"Save": "Сохранить",
|
||||
"Serial Number": "Серийный номер",
|
||||
"Show all": "Показать все",
|
||||
"Software": "Программное обеспечение",
|
||||
"Spider FW Version": "Версия прошивки Spider",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "Поддержка калибровки модулей DualSense Edge теперь доступна в качестве <b>экспериментальной функции</b>",
|
||||
"Thank you for your generosity and support!": "Спасибо за вашу щедрость и поддержку",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "В настоящее время графический интерфейс калибровки DualShock не поддерживает DualSense Edge.",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "Для этого необходимо временно отключить защиту от записи, подав напряжение <b>+1,8 В</b> на определенную контрольную точку на каждом модуле.",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "Только для продвинутых пользователей! Если вы не уверены ",
|
||||
"This screen allows to finetune raw calibration data on your controller": "На этом экране можно более точно откалибровать ваш контроллер",
|
||||
"Touchpad FW Version": "Версия прошивки тачпада",
|
||||
"Touchpad ID": "ID тачпада",
|
||||
"VCM Left Barcode": "Штрих-код левого VCM",
|
||||
"VCM Right Barcode": "Штрих-код правого VCM",
|
||||
"Venom FW Version": "Версия прошивки Venom",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Мы не несем ответсвенности за какой-либо причиненный ущерб данной модификацией",
|
||||
"You can do this in two ways:": "Это можно сделать двумя способами",
|
||||
"here": "здесь",
|
||||
"left module": "Левый модуль",
|
||||
"right module": "Правый модуль",
|
||||
"30th Anniversary": "",
|
||||
"Astro Bot": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Cosmic Red": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"Midnight Black": "",
|
||||
"Nova Pink": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"The Last of Us": "",
|
||||
"Volcanic Red": "",
|
||||
"White": "",
|
||||
"": ""
|
||||
}
|
||||
@@ -161,8 +161,10 @@
|
||||
"Save changes permanently": "Değişiklikleri kalıcı olarak kaydet",
|
||||
"Reboot controller": "Denetleyiciyi yeniden başlat",
|
||||
"(beta)": "",
|
||||
"30th Anniversary": "",
|
||||
"<b>Externally</b>: by applying +1.8V directly to the visible test point without opening the controller": "",
|
||||
"<b>Internally</b>: by soldering a wire from a +1.8V source to the write-protect TP.": "",
|
||||
"Astro Bot": "",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Calibration is being stored in the stick modules.": "",
|
||||
@@ -172,9 +174,14 @@
|
||||
"Cannot unlock": "",
|
||||
"Center X": "",
|
||||
"Center Y": "",
|
||||
"Chroma Indigo": "",
|
||||
"Chroma Pearl": "",
|
||||
"Chroma Teal": "",
|
||||
"Cobalt Blue": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Controller Info": "",
|
||||
"Cosmic Red": "",
|
||||
"Debug Info": "",
|
||||
"Debug buttons": "",
|
||||
"DualSense Edge Calibration": "",
|
||||
@@ -186,6 +193,10 @@
|
||||
"FW Version": "",
|
||||
"Finetune stick calibration": "",
|
||||
"For more info or help, feel free to reach out on Discord.": "",
|
||||
"Fortnite": "",
|
||||
"Galactic Purple": "",
|
||||
"God of War Ragnarok": "",
|
||||
"Grey Camouflage": "",
|
||||
"HW Model": "",
|
||||
"Hardware": "",
|
||||
"I'm actively working on adding compatibility, the primary challenge lies in storing data into the stick modules.": "",
|
||||
@@ -194,7 +205,9 @@
|
||||
"Left Module Barcode": "",
|
||||
"Left stick": "",
|
||||
"MCU Unique ID": "",
|
||||
"Midnight Black": "",
|
||||
"More details and images": "",
|
||||
"Nova Pink": "",
|
||||
"PCBA ID": "",
|
||||
"Please connect a DualShock 4, a DualSense or DualSense Edge controller to your computer and press Connect.": "",
|
||||
"Please note: the stick modules on the DS Edge <b>cannot be calibrated via software alone</b>.To store a custom calibration on the stick's internal memory, a <b>hardware modification</b> is required.": "",
|
||||
@@ -206,9 +219,13 @@
|
||||
"Show all": "",
|
||||
"Software": "",
|
||||
"Spider FW Version": "",
|
||||
"Spider-Man 2": "",
|
||||
"Starlight Blue": "",
|
||||
"Sterling Silver": "",
|
||||
"Support for calibrating DualSense Edge stick modules is now available as an <b>experimental feature</b>.": "",
|
||||
"Thank you for your generosity and support!": "",
|
||||
"The DualShock Calibration GUI does not currently support the DualSense Edge.": "",
|
||||
"The Last of Us": "",
|
||||
"This involves temporarily disabling write protection by applying <b>+1.8V</b> to a specific test point on each module.": "",
|
||||
"This is only for advanced users. If you're not sure what you're doing, please do not attempt it.": "",
|
||||
"This screen allows to finetune raw calibration data on your controller": "",
|
||||
@@ -217,7 +234,9 @@
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"Volcanic Red": "",
|
||||
"We are not responsible for any damage caused by attempting this modification.": "",
|
||||
"White": "",
|
||||
"You can do this in two ways:": "",
|
||||
"here": "",
|
||||
"left module": "",
|
||||
|
||||
@@ -163,26 +163,26 @@
|
||||
"Reboot controller": "Перезавантажити контролер",
|
||||
"Controller Info": "Інформація про контролер",
|
||||
"Debug Info": "Інформація для налагодження",
|
||||
"Software": "ПЗ",
|
||||
"Hardware": "Апаратура",
|
||||
"FW Build Date": "Дата складання прошивки",
|
||||
"Software": "Програмне забезпечення",
|
||||
"Hardware": "Апаратне забезпечення",
|
||||
"FW Build Date": "Дата збірки прошивки",
|
||||
"FW Type": "Тип прошивки",
|
||||
"FW Series": "Серія прошивки",
|
||||
"FW Version": "Версія прошивки",
|
||||
"FW Update": "Оновлення прошивки",
|
||||
"FW Update Info": "Інформація про оновлення прошивки",
|
||||
"FW Update Info": "Інфо про оновлення прошивки",
|
||||
"SBL FW Version": "Версія прошивки SBL",
|
||||
"Venom FW Version": "Версія прошивки Venom",
|
||||
"Spider FW Version": "Версія прошивки Spider",
|
||||
"Touchpad FW Version": "Версія прошивки сенсорної панелі",
|
||||
"Touchpad FW Version": "Версія прошивки тачпаду",
|
||||
"Serial Number": "Серійний номер",
|
||||
"MCU Unique ID": "Унікальний ID MCU",
|
||||
"PCBA ID": "ID PCBA",
|
||||
"Battery Barcode": "Штрих-код батареї",
|
||||
"VCM Left Barcode": "Штрих-код VCM лівий",
|
||||
"VCM Right Barcode": "Штрих-код VCM правий",
|
||||
"HW Model": "Модель апаратного забезпечення",
|
||||
"Touchpad ID": "ID сенсорної панелі",
|
||||
"HW Model": "Апаратна модель",
|
||||
"Touchpad ID": "ID тачпаду",
|
||||
"Bluetooth Address": "Bluetooth адреса",
|
||||
"Show all": "Показати все",
|
||||
"(beta)": "(бета)",
|
||||
@@ -212,15 +212,34 @@
|
||||
"We are not responsible for any damage caused by attempting this modification.": "Ми не несемо відповідальності за будь-які пошкодження, спричинені спробами цієї модифікації.",
|
||||
"You can do this in two ways:": "Ви можете зробити це двома способами:",
|
||||
"here": "тут",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "",
|
||||
"Left Module Barcode": "",
|
||||
"Right Module Barcode": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"30th Anniversary": "Обмежена серія до 30-тої річниці",
|
||||
"Astro Bot": "Обмежена серія Astro Bot",
|
||||
"Cannot lock": "Не вдалося заблокувати",
|
||||
"Cannot store data into": "Не вдалося зберегти дані в",
|
||||
"Cannot unlock": "Не вдалося розблокувати",
|
||||
"Cobalt Blue": "Кобальтово-синій",
|
||||
"Color": "Колір",
|
||||
"Color detection thanks to": "Розпізнавання кольору завдяки",
|
||||
"Cosmic Red": "Космічний червоний",
|
||||
"Galactic Purple": "Галактичний пурпуровий",
|
||||
"God of War Ragnarok": "Обмежена серія God of War: Ragnarok",
|
||||
"Grey Camouflage": "Сірий камуфляж",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "Якщо калібрування не зберігається постійно, будь ласка, перевірте підключення апаратної модифікації.",
|
||||
"Left Module Barcode": "Штрих-код лівого модуля",
|
||||
"Midnight Black": "Чорна ніч",
|
||||
"Nova Pink": "Рожевий «Нова зірка»",
|
||||
"Right Module Barcode": "Штрих-код правого модуля",
|
||||
"Starlight Blue": "Зоряний синій",
|
||||
"Sterling Silver": "Монетний срібний",
|
||||
"Volcanic Red": "Вулканічний червоний",
|
||||
"White": "Білий",
|
||||
"left module": "лівий модуль",
|
||||
"right module": "правий модуль",
|
||||
"Chroma Indigo": "Насичений індиго",
|
||||
"Chroma Pearl": "Насичений перлистий",
|
||||
"Chroma Teal": "Насичений синьо-зелений",
|
||||
"Fortnite": "Обмежена серія Fortnite",
|
||||
"Spider-Man 2": "Обмежена серія Spider-Man 2",
|
||||
"The Last of Us": "Обмежена серія The Last of Us",
|
||||
"": ""
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,14 +214,33 @@
|
||||
"You can do this in two ways:": "你可以用两种方式来做",
|
||||
"here": "这里",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "如果校准没有永久生效,请检查硬件模块的接线。",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Left Module Barcode": "",
|
||||
"Right Module Barcode": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"Cannot lock": "无法锁定",
|
||||
"Cannot store data into": "无法将数据存储到",
|
||||
"Cannot unlock": "无法解锁",
|
||||
"Color": "颜色",
|
||||
"Color detection thanks to": "颜色检测由",
|
||||
"Left Module Barcode": "左侧模块条形码",
|
||||
"Right Module Barcode": "右侧模块条形码",
|
||||
"left module": "左侧模块",
|
||||
"right module": "右侧模块",
|
||||
"30th Anniversary": "30周年纪念版",
|
||||
"Astro Bot": "宇宙机器人",
|
||||
"Cobalt Blue": "钴晶蓝",
|
||||
"Cosmic Red": "星辰红",
|
||||
"Galactic Purple": "银河紫",
|
||||
"God of War Ragnarok": "战神:诸神黄昏",
|
||||
"Grey Camouflage": "深灰迷彩",
|
||||
"Midnight Black": "午夜黑",
|
||||
"Nova Pink": "新星粉",
|
||||
"Starlight Blue": "星光蓝",
|
||||
"Sterling Silver": "亮灰银",
|
||||
"Volcanic Red": "火山红",
|
||||
"White": "白色",
|
||||
"Chroma Indigo": "净彩靛青",
|
||||
"Chroma Pearl": "净彩珠白",
|
||||
"Chroma Teal": "净彩凫绿",
|
||||
"Fortnite": "堡垒之夜",
|
||||
"Spider-Man 2": "漫威蜘蛛侠2",
|
||||
"The Last of Us": "最后生还者",
|
||||
"": ""
|
||||
}
|
||||
@@ -207,21 +207,40 @@
|
||||
"You can do this in two ways:": "您可以透過兩種方式來完成這項操作:",
|
||||
"here": "這裏",
|
||||
"If the calibration is not stored permanently, please double-check the wirings of the hardware mod.": "如果校準沒有永久生效,請檢查硬件模塊的接線。",
|
||||
"Battery Barcode": "",
|
||||
"Bluetooth Address": "",
|
||||
"Cannot lock": "",
|
||||
"Cannot store data into": "",
|
||||
"Cannot unlock": "",
|
||||
"Color": "",
|
||||
"Color detection thanks to": "",
|
||||
"Left Module Barcode": "",
|
||||
"MCU Unique ID": "",
|
||||
"Right Module Barcode": "",
|
||||
"Serial Number": "",
|
||||
"VCM Left Barcode": "",
|
||||
"VCM Right Barcode": "",
|
||||
"Venom FW Version": "",
|
||||
"left module": "",
|
||||
"right module": "",
|
||||
"Battery Barcode": "電池條形碼",
|
||||
"Bluetooth Address": "藍牙地址",
|
||||
"Cannot lock": "無法鎖定",
|
||||
"Cannot store data into": "無法將數據存儲到",
|
||||
"Cannot unlock": "無法解鎖",
|
||||
"Color": "顏色",
|
||||
"Color detection thanks to": "顏色檢測由",
|
||||
"Left Module Barcode": "左側模塊條形碼",
|
||||
"MCU Unique ID": "MCU唯壹ID",
|
||||
"Right Module Barcode": "右側模塊條形碼",
|
||||
"Serial Number": "序列號",
|
||||
"VCM Left Barcode": "VCM左條形碼",
|
||||
"VCM Right Barcode": "VCM右條形碼",
|
||||
"Venom FW Version": "Venom固件版本",
|
||||
"left module": "左側模塊",
|
||||
"right module": "右側模塊",
|
||||
"30th Anniversary": "30週年紀念版",
|
||||
"Astro Bot": "宇宙機器人",
|
||||
"Cobalt Blue": "鈷藍色",
|
||||
"Cosmic Red": "星塵紅",
|
||||
"Galactic Purple": "銀河紫",
|
||||
"God of War Ragnarok": "戰神:諸神黃昏",
|
||||
"Grey Camouflage": "深灰迷彩",
|
||||
"Midnight Black": "午夜黑",
|
||||
"Nova Pink": "星幻粉",
|
||||
"Starlight Blue": "星光藍",
|
||||
"Sterling Silver": "亮灰銀",
|
||||
"Volcanic Red": "火山紅",
|
||||
"White": "白色",
|
||||
"Chroma Indigo": "閃耀靛紫",
|
||||
"Chroma Pearl": "閃耀珍珠白",
|
||||
"Chroma Teal": "閃耀青",
|
||||
"Fortnite": "要塞英雄",
|
||||
"Spider-Man 2": "蜘蛛人2",
|
||||
"The Last of Us": "最後生還者",
|
||||
"": ""
|
||||
}
|
||||
73
scripts/process_lang.py
Executable file
73
scripts/process_lang.py
Executable file
@@ -0,0 +1,73 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# (C) 2025 dualshock-tools
|
||||
#
|
||||
# This script can be used to add or remove a sentence from all the language
|
||||
# files. It's really simple and hacking: just edit this files adding lines
|
||||
# In the corresponsing fields (add, remove) and run it.
|
||||
#
|
||||
# Quick note: run it from the "root" directory of the project: it searches for
|
||||
# ./lang/ so the correct command should be `python3 scripts/process_lang.py`.
|
||||
|
||||
data = {
|
||||
"remove": [
|
||||
# Add here lines to remove from each language file
|
||||
],
|
||||
"add": [
|
||||
# Add here lines to add to each language file
|
||||
],
|
||||
}
|
||||
|
||||
## ---
|
||||
|
||||
import os, json
|
||||
|
||||
def process_file(filename):
|
||||
x = json.loads(open(filename, "r").read())
|
||||
|
||||
modified = False
|
||||
for i in data["remove"]:
|
||||
if i in x:
|
||||
del x[i]
|
||||
modified = True
|
||||
else:
|
||||
print("[REMOVE] %s: Cannot find '%s'" % (filename, i))
|
||||
for i in data["add"]:
|
||||
if i in x:
|
||||
print("[ADD] %s: '%s' already present" % (filename, i))
|
||||
else:
|
||||
x[i] = ""
|
||||
modified = True
|
||||
|
||||
del x[""]
|
||||
empties = []
|
||||
for i in x:
|
||||
if len(x[i].strip()) == 0:
|
||||
empties += [i]
|
||||
|
||||
empties = sorted(empties)
|
||||
|
||||
for i in empties:
|
||||
del x[i]
|
||||
|
||||
for i in empties:
|
||||
x[i] = ""
|
||||
|
||||
x[""] = ""
|
||||
|
||||
return (modified, json.dumps(x, indent=4, ensure_ascii=False))
|
||||
|
||||
|
||||
files = list(os.listdir("lang"))
|
||||
|
||||
for i in files:
|
||||
modified, new_file = process_file("lang/" + i)
|
||||
if not modified:
|
||||
print("%s: not modified" % (i, ))
|
||||
continue
|
||||
if len(new_file) < 100:
|
||||
print("%s: invalid content" % (i, ))
|
||||
continue
|
||||
print("%s: writing changes" % (i, ))
|
||||
|
||||
open("lang/" + i, "w").write(new_file)
|
||||
Reference in New Issue
Block a user