Create a custom camera mode, and even start a capture all through QR Codes. This is the fastest way to access many of the new GoPro Labs' firmware features that are pre-installed on Bones. Many features of this page are also available as a mobile app.
Install from:
|
Mode:
Video
Standard
Activity
Cinematic SloMo Basic
TimeWarp Timelapse Nightlapse
Photo Burst Night not set
Cinematic SloMo Basic
TimeWarp Timelapse Nightlapse
Photo Burst Night not set
Resolution:
1080p
2.7k
4k
5.3k
2.7k4:3 4k4:3 5k4:3 not set
2.7k4:3 4k4:3 5k4:3 not set
Resolution:
1080p
2.7k
4k
2.7k4:3 4k4:3 not set
2.7k4:3 4k4:3 not set
Frame Rate:
24
25
30
50
60
100 120 200 240 not set
100 120 200 240 not set
Lens FOV:
Wide
Narrow
Linear
Superview Linear+HL
or Max Lens Mod: Wide Superview
Linear(1080) Horizon Lock not set
Superview Linear+HL
or Max Lens Mod: Wide Superview
Linear(1080) Horizon Lock not set
Lens:
Wide
Linear
Narrow
or Max Lens Mod: Wide Superview
Horizon Lock not set
or Max Lens Mod: Wide Superview
Horizon Lock not set
Lens:
Wide
Linear
Narrow
not set
Lens:
Wide
Linear
Linear+HL
Narrow
or Max Lens Mod: Wide Superview
Linear Horizon Lock not set
Narrow
or Max Lens Mod: Wide Superview
Linear Horizon Lock not set
Zoom:
Burst Style:
Auto
3/1
5/1
10/1
25/1 10/3 30/3 30/6
30/10 not set
25/1 10/3 30/3 30/6
30/10 not set
TimeWarp Speed:
2X
5X
10X
15X
30X Auto not set
30X Auto not set
TLV Interval:
0.5s
1s
2s
5s
10s
30s 60s 2min 5min
30min 60min not set
30s 60s 2min 5min
30min 60min not set
NLV Interval:
Auto
4s
5s
10s
15s 20s 30s 60s 2min
5min 30min 60min not set
15s 20s 30s 60s 2min
5min 30min 60min not set
Shutter:
auto
2s
5s
10s
15s 20s 30s not set
15s 20s 30s not set
Hypersmooth:
Off
Standard
High
Boost not set
Boost not set
Hindsight:
Off
15s
30s
not set
Duration:
Off
15s
30s
1min
5min
15min 30min 1hr 2hr 3hr
not set
15min 30min 1hr 2hr 3hr
not set
Photo Properties:
Standard Raw + JPEG Superphoto HDR
not set
Standard Raw + JPEG Superphoto HDR
not set
Wind Reduction:
Auto
Off
On
not set
Spot Metering
Your Virtual Touch Screen
Disable
Exposure Lock 3s after scan (to avoid locking on the QR Code)
Disable
Exposure Lock 3s after scan (to avoid locking on the QR Code)
Protune Controls
Color:
Vibrant
Natural
Flat
not set
Bit rate:
Standard
High
not set
White Balance:
Auto
2300K
2800K
3200K
4000K
4500K
5000K
5500K 6000K 6500K Native not set
5500K 6000K 6500K Native not set
ISO Min:
100 (def)
200
400
800
1600
3200
6400
not set
ISO Max:
100
200
400
800
1600 (def)
3200
6400
not set
Lock Shutter:
360°
180°
90°
45°
22°
10°
5°
2°
Auto
not set
EV Compensation:
-2
-1.5
-1
-0.5
0
+0.5
+1
+1.5
+2
not set
Sharpness:
Low
Medium
High
not set
Protune Reset:
Camera Preferences
Voice Control:
off
on
not set
Quick Capture:
off
on
not set
Default Mode:
Last Used
Video
Photo
Timelapse
not set
Orientation Lock:
Landscape ↑
↓
Portrait ←
→
Unlocked
not set
Camera Auto Off:
5 mins
15 mins
30 mins
Never
not set
WiFi Connections:
Off
On
On 2.4GHz
On 5GHz
not set
Voice Language:
English US
English UK
English AUS
English IND
Spanish EU
Spanish NA
German
Italian
Chinese
Japanese
Korean
French
Portuguese
Russian
Swedish
not set
Set date and time
add 1/100th of a second
Camera Actions
Pairing: Quik App
Remote
Cancel
Reset: Factory Presets WiFi Labs
Auto Wake on Power: Enable Disable
Use 12GB Chapters: Enable Disable
Overclock Bitrate: Take On Risk More Info
Reset: Factory Presets WiFi Labs
Auto Wake on Power: Enable Disable
Use 12GB Chapters: Enable Disable
Overclock Bitrate: Take On Risk More Info
<b>Warning:</b> The only risk is SD card encoding reliability, as this capture is thoroughly tested at the default bitrates, up to 100Mb/s. Some SD cards can support higher bit-rates when fairly new, but then may fail when extensively used. As the bit-rate is increased, the probability of capture failures increase. Lower frame rate maybe more reliable than higher framerates as some extreme overclocks. Experiment extensively before using this feature on critical projects. You can also disable LRVs and audio capture to help push the video bitrate to the maximum. See more on these <a href="../control/extensions">Labs extensions</a>. Changes can be reversed with a Labs reset. This will not damage your GoPro.
</small>
Auto Capture Trigger:
Sound Pressure Level (range 30-120dB)
Camera Motion - Gyro+Accel (range 1-9)
Scene Motion (range 1-6)
Sensitivity: (value from range ). Help
Delay start: seconds.
Hold time: capture seconds after motion stops.
SPL (dB) at 1m/3ft | Activity |
---|---|
30 | calm room |
40-60 | conversation |
60-80 | passenger car |
80-90 | busy roadway |
100 | jack hammer |
110 | chain saw |
120 | air horn |
Sensitivity | Activity |
---|---|
1 | Throwing the camera |
2 | Jumps |
5 | any hand-held movement |
8 | tiny movement |
9 | small tremor |
Sensitivity | Activity |
---|---|
1 | Everything moving |
2 | Large nearby movement |
3 | Medium object movement |
4 | small movement |
5 | tiny movement |
6 | any change |
Delay start: seconds.
Hold time: capture seconds after motion stops.
Repeat Command
Make Boot Command on SD Card -- Automatic Action on boot
not setMake Boot Command on SD Card -- Automatic Action on boot
Additional Commands:
GoProQR:
Copy Image to Clipboard
Share this QR Code as a URL:
Copy URL to Clipboard
Reset page
More features for Labs enabled cameras
updated: May 3, 2022
<script> var clipcopy = ""; var lastcmd = ""; var lasttimecmd = "xxxxxxxxx"; var changed = false; var ms = 0; var lastms = 0; var timechecked = false; var once = true; var even = 0; var qrcode; var i; function makeQR() { if(once === true) { qrcode = new QRCode(document.getElementById("qrcode"), { text : "QR Control\nReady", width : 400, height : 400, correctLevel : QRCode.CorrectLevel.M }); } once = false; } function startTime() { var today; var yy; var mm; var dd; var h; var m; var s; var timecodefps = 30; var cmd = ""; var timenotchecked; dset("settingsRES", false); dset("settingsFPS", false); dset("settingsFOV", false); dset("settingsPFOV", false); dset("settingsTLVFOV", false); dset("settingsTWFOV", false); dset("settingsZoom", false); dset("settingsRESTLV", false); dset("settingsVideo", false); dset("settingsHindsight", false); dset("settingsDuration", false); dset("settingsPhotoRAW", false); dset("settingsPT", false); dset("settingsPTR", false); dset("spotMeterCheck", false); dset("spotMeter", false); dset("settingsBurst", false); dset("settingsTimewarp", false); dset("settingsTimelapse", false); dset("settingsNightlapse", false); dset("settingsNightexposure", false); dset("settingsAUDT",false); dset("ptCOLOR", false); dset("ptBITRATE", false); dset("ptWBAL", false); dset("ptISO",false); dset("ptIMIN",false); dset("ptSHUT",false); dset("ptIMIN",false); dset("ptEV",false); dset("ptSHARP",false); //dset("ptAUD",false); dset("opVC", false); dset("opQC", false); dset("opDM", false); //dset("opBV", false); //dset("opLO", false); dset("opOR", false); dset("opAO", false); dset("opWC", false); dset("opLN", false); dset("NakedTools", false); //dset("aS", false); //dset("aSM", false); //dset("aIT", false); dset("aR", false); dset("splHelp", false); dset("imuHelp", false); dset("motionHelp", false); dset("bitrHelp", false); dset("bitrSlider", false); dset("motionParams", false); dset("opDTS", false); var checkedmode = 0; var actionmode = 0; var x; for (i = 1; i < 14; i++) { var mode = "m"+i; x = document.getElementById(mode).checked; if( x === true) checkedmode = i; } for (i = 1; i < 16; i++) { var amode = "sap"+i; if(document.getElementById(amode) !== null) { x = document.getElementById(amode).checked; if( x === true) actionmode = i; } } //m1 mV //m2 mV0 //m3 mV1 //m4 mV2 //m5 mV3 //m6 mV4 //m7 mTW //m8 mT //m9 mNL //m10 mP //m11 mPB //m12 mPN switch(checkedmode) { default: case 1: //Video case 2: //mV0 case 3: //mV1 case 4: //mV2 case 5: //mV3 case 6: //mV4 dset("settingsRES", true); dset("settingsFPS", true); dset("settingsFOV", true); dset("settingsVideo", true); dset("settingsHindsight", true); dset("settingsDuration", true); dset("settingsPT", true); //dset("settingsAUDT",true); break; case 7: //TimeWarp Video dset("settingsTimewarp", true); dset("settingsDuration", true); dset("settingsRESTLV", true); dset("settingsTWFOV", true); dset("settingsPT", true); break; case 8: //Timelapse Video dset("settingsTimelapse", true); dset("settingsDuration", true); dset("settingsRESTLV", true); dset("settingsTLVFOV", true); dset("settingsPT", true); break; case 9: //NL Video dset("settingsNightlapse", true); dset("settingsNightexposure", true); dset("settingsDuration", true); dset("settingsRESTLV", true); dset("settingsPT", true); dset("settingsTLVFOV", true); break; case 10: //Photo dset("settingsPT", true); dset("settingsPFOV", true); dset("settingsPhotoRAW", true); break; case 11: //Burst dset("settingsBurst", true); dset("settingsPT", true); dset("settingsTLVFOV", true); dset("settingsPhotoRAW", true); break; case 12: //Night dset("settingsNightexposure", true); dset("settingsPT", true); dset("settingsTLVFOV", true); dset("settingsPhotoRAW", true); break; } if(document.getElementById("sm") !== null) { if( (document.getElementById("raw3").checked === true) || //Superphoto (document.getElementById("raw4").checked === true)) //HDR { document.getElementById("sm").checked = false; } else { dset("spotMeterCheck", true); } dset("spotMeter", document.getElementById("sm").checked); } if(document.getElementById("pt") !== null) { if(document.getElementById("pt").checked === true) dset("settingsPTR", true); if(document.getElementById("pt").checked === true && document.getElementById("ptr").checked === false) { dset("ptCOLOR", true); dset("ptWBAL", true); dset("ptISO",true); dset("ptIMIN",true); dset("ptSHUT",true); if(document.getElementById('iso8').checked === true) { //dset("ptSHUT",false); dset("ptEV",true); } else { //dset("ptSHUT",true); if(document.getElementById('shut9').checked === true || document.getElementById('shut10').checked === true) { // not shutter lock dset("ptEV",true); } } //if(checkedmode >= 1 && checkedmode <= 6) //Video + Audio modes //{ // dset("ptAUD",true); //} if(checkedmode >= 1 && checkedmode <= 9) //Video modes { dset("ptBITRATE", true); } dset("ptSHARP",true); } } if(document.getElementById("options") !== null) { if(document.getElementById("options").checked === true) { dset("opVC", true); dset("opQC", true); dset("opDM", true); //dset("opBV", true); //dset("opLO", true); dset("opOR", true); dset("opAO", true); dset("opWC", true); dset("opLN", true); } } if(document.getElementById("actions") !== null) { if(document.getElementById("actions").checked === true) { dset("NakedTools", true); //dset("aS", true); //dset("aSM", true); //dset("aIT", true); if(actionmode > 12) { dset("motionParams", true); dset("aR", true); } if(document.getElementById("helpRange") !== null) { if(document.getElementById("helpRange").checked === true) { if(actionmode == 13) dset("splHelp", true); if(actionmode == 14) dset("imuHelp", true); if(actionmode == 15) dset("motionHelp", true); } } } else actionmode = 0; } if(document.getElementById("helpBitr") !== null) { if(document.getElementById("helpBitr").checked === true) { dset("bitrHelp", true); } } if(actionmode == 12) { dset("bitrSlider", true); } cmd = dcmd(cmd,"m"); // set mode switch(checkedmode) { case 7: //TWarp cmd = dcmd(cmd,"fpswarp"); break; case 8: //TLV cmd = dcmd(cmd,"fpslapse"); break; case 9: //NLV cmd = dcmd(cmd,"fpsnight"); cmd = dcmd(cmd,"nightexp"); break; case 11: //Burst cmd = dcmd(cmd,"b"); break; case 12: //Night cmd = dcmd(cmd,"nightexp"); break; } if(checkedmode <= 9) { if(checkedmode == 7 || checkedmode == 8 || checkedmode == 9) // TLV/TWarp Res/NLV { cmd = dcmd(cmd, "rt"); } else { cmd = dcmd(cmd,"r"); //RES } } if(checkedmode <= 6) // video mode { cmd = dcmd(cmd,"p"); //fps } var zoom; if(checkedmode > 6) // not video { if(checkedmode == 7) //TWarp { cmd = dcmd(cmd,"twf"); //fov if( (document.getElementById("twf1").checked === true) || //Wide (document.getElementById("twf2").checked === true) || //Linear (document.getElementById("twf3").checked === true) ) //Linear+HL { dset("settingsZoom", true); zoom = parseInt(document.getElementById("zoom").value); zoom *= 10; document.getElementById("zoomtext").innerHTML = zoom+"%"; if(zoom == 100) zoom = 99; cmd = cmd + zoom; //fov } else if((document.getElementById("twf5").checked === true) || //MLM Wide (document.getElementById("twf6").checked === true) || //MLM Superview (document.getElementById("twf7").checked === true) ) //MLM Linear { if(document.getElementById("twmlmhl").checked === true) { cmd = cmd + "L"; //level MLM modes } } } else if(checkedmode == 10) //Photo { cmd = dcmd(cmd,"pf"); //fov if( (document.getElementById("pf1").checked === true) || //Wide (document.getElementById("pf2").checked === true) ) //Linear { dset("settingsZoom", true); zoom = parseInt(document.getElementById("zoom").value); zoom *= 10; document.getElementById("zoomtext").innerHTML = zoom+"%"; if(zoom == 100) zoom = 99; cmd = cmd + zoom; //fov } else if((document.getElementById("pf4").checked === true) || //MLM Wide (document.getElementById("pf5").checked === true)) //MLM Superview { if(document.getElementById("pmlmhl").checked === true) { cmd = cmd + "L"; //level MLM modes } } } else //Everything else { cmd = dcmd(cmd,"tlvf"); //fov if( (document.getElementById("tlvf1").checked === true) || //Wide (document.getElementById("tlvf2").checked === true) ) //Linear { dset("settingsZoom", true); zoom = parseInt(document.getElementById("zoom").value); zoom *= 10; document.getElementById("zoomtext").innerHTML = zoom+"%"; if(zoom == 100) zoom = 99; cmd = cmd + zoom; //fov } } } else { cmd = dcmd(cmd,"f"); //fov if( (document.getElementById("f1").checked === true) || //Wide (document.getElementById("f3").checked === true) || //Linear (document.getElementById("f5").checked === true) ) //Linear+HL { dset("settingsZoom", true); zoom = parseInt(document.getElementById("zoom").value); zoom *= 10; document.getElementById("zoomtext").innerHTML = zoom+"%"; if(zoom == 100) zoom = 99; cmd = cmd + zoom; //fov } else if((document.getElementById("f6").checked === true) || //MLM Wide (document.getElementById("f7").checked === true) || //MLM Superview (document.getElementById("f8").checked === true) ) //MLM Linear { if(document.getElementById("mlmhl").checked === true) { cmd = cmd + "L"; //level MLM modes } dset("settingsZoom", false); } else { dset("settingsZoom", false); } } if(checkedmode >= 10 && checkedmode <= 13) //RAW Photo modes cmd = dcmd(cmd,"raw"); //raw photo control if(document.getElementById("sm") !== null) { if(document.getElementById("sm").checked === true) { var pos = dcmd("","sp"); if(document.getElementById("sl").checked === true) { cmd = dcmd(cmd,"sl") + pos; //spot Lock } else { cmd = dcmd(cmd,"sm") + pos; //spotMeter } } } if(document.getElementById("pt").checked === true) { if(document.getElementById("ptr").checked === true) { cmd = cmd + "t0"; //protune reset } else { cmd = cmd + "t"; //protune } } cmd = dcmd(cmd,"eis"); //eis cmd = dcmd(cmd,"hind"); //hindsight cmd = dcmd(cmd,"dur"); //duration cmd = dcmd(cmd,"all"); //auto low light cmd = dcmd(cmd,"audt"); //audio control if(document.getElementById("p1") !== null) { x = document.getElementById("p1").checked; if( x === true) timecodefps = 24; } if(document.getElementById("p2") !== null) { x = document.getElementById("p2").checked; if( x === true) timecodefps = 30; } if(document.getElementById("p3") !== null) { x = document.getElementById("p3").checked; if( x === true) timecodefps = 60; } if(document.getElementById("p6") !== null) { x = document.getElementById("p6").checked; if( x === true) timecodefps = 25; } if(document.getElementById("p7") !== null) { x = document.getElementById("p7").checked; if( x === true) timecodefps = 50; } if(document.getElementById("pt") !== null) { if(document.getElementById("pt").checked === true && document.getElementById("ptr").checked === false) { cmd = dcmd(cmd,"ptc"); //color cmd = dcmd(cmd,"br"); //bitrate cmd = dcmd(cmd,"wb"); //wb if(document.getElementById('iso8').checked === false) { cmd = dcmd(cmd,"iso"); //iso max if(document.getElementById('isomin8').checked === false) { let isomin = dcmd("","isomin"); //min let isomax = dcmd("","iso"); //max var min = parseInt(isomin.substring(1)); var max = parseInt(isomax.substring(1)); if(max < min) { if(max == 1) document.getElementById('isomin1').checked = true; if(max == 2) document.getElementById('isomin2').checked = true; if(max == 4) document.getElementById('isomin3').checked = true; if(max == 8) document.getElementById('isomin4').checked = true; if(max == 16) document.getElementById('isomin5').checked = true; if(max == 32) document.getElementById('isomin6').checked = true; cmd = cmd + "M" + max; //set the min to match the max iso } else cmd = dcmd(cmd,"isomin"); //add iso min if(document.getElementById('shut10').checked === false) { //cmd = dcmd(cmd,"iso"); //iso max cmd = dcmd(cmd,"shut"); //shutter angle } } else if(document.getElementById('shut10').checked === false) { cmd = dcmd(cmd,"shut"); //shutter angle } } else if(document.getElementById('isomin8').checked === false) { cmd = cmd + "i64"; //ADD fake ISO max cmd = dcmd(cmd,"isomin");//iso min if(document.getElementById('shut10').checked === false) { //cmd = cmd + "i64"; //ADD fake max cmd = dcmd(cmd,"shut"); //shutter angle } } else if(document.getElementById('shut10').checked === false) { cmd = cmd + "i64"; //ADD fake ISO max cmd = dcmd(cmd,"shut"); //shutter angle } cmd = dcmd(cmd,"ev"); //ev cmd = dcmd(cmd,"sharp"); //sharp //cmd = dcmd(cmd,"aud"); //audio control cmd = dcmd(cmd,"bit"); //bitrate control } } if(document.getElementById("options") !== null) { if(document.getElementById("options").checked === true) { var opt = ""; var addO = "o"; cmd = dcmd(cmd,"gps"); cmd = dcmd(cmd,"vc"); cmd = dcmd(cmd,"qc"); cmd = dcmd(cmd,"dm"); opt = dcmd(addO, "bv"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "db"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "lo"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "or"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "ao"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "so"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "wc"); if(opt != "o") { cmd = cmd + opt; addO = ""; } opt = dcmd(addO, "ln"); if(opt != "o") { cmd = cmd + opt; addO = ""; } } } if(document.getElementById("actions") !== null) { if(document.getElementById("actions").checked === true) { } else { dset("opDT", true); } } var dt = document.getElementById("dt").checked; today = new Date(); if(cmd != lastcmd) { ms = today.getTime(); changed = true; lastcmd = cmd; } if((dt === true && actionmode<13) || (dt === true && actionmode>=13 && document.getElementById("repeat").checked === false && document.getElementById("boot").checked === false)) { //dset("opDTS", true); dset("copyshow", false); // don't what user printing or sharing code with wrong date and time var frms; var secs = true;//document.getElementById("dtsec").checked; var timecode = document.getElementById("dttimecode").checked; yy = today.getFullYear() - 2000; mm = today.getMonth() + 1; dd = today.getDate(); h = today.getHours(); m = today.getMinutes(); s = today.getSeconds(); ms = today.getMilliseconds(); frms = (h * 3600 + m * 60 + s) * timecodefps + Math.floor((timecodefps * ms) / 1000); yy = checkTime(yy); mm = checkTime(mm); dd = checkTime(dd); h = checkTime(h); m = checkTime(m); s = checkTime(s); ms = Math.floor(ms / 10); // hundredths ms = checkTime(ms); //var curr = today.getTime(); cmd = cmd + "oT" + yy + mm + dd + h + m; if(secs || timecode) { cmd = cmd + s; if(timecode) { cmd = cmd + "." + ms; } } timechecked = true; } else { dset("opDTS", false); dset("copyshow", true); if(timechecked === true) { ms = today.getTime(); changed = true; } timenotchecked = false; } var actions = document.getElementById("actions").checked; if(actions === true) { //var S_added = 0; //var SM_added = 0; cmd = dcmd(cmd,"sap"); //naked action if(actionmode >= 13) { if(document.getElementById("mstart") !== null) { var mstart = document.getElementById("mstart").value; if(mstart <= 0) mstart = 6; if(actionmode == 13 ) //audio trigger { while(mstart <= 30) mstart*=10; if(mstart > 120) mstart = 120; } else if(mstart > 9) mstart = 9; cmd = cmd + mstart; /*if(document.getElementById("mend") !== null) { var mend = document.getElementById("mend").value; if(mend > 0 && SM_added) { cmd = cmd + "-" + mend; } }*/ if(document.getElementById("dhold") !== null) { var dhold = document.getElementById("dhold").value; if(dhold > 0) { cmd = cmd + "D" + dhold; } } if(document.getElementById("mhold") !== null) { var mhold = document.getElementById("mhold").value; if(mhold > 0) { cmd = cmd + "H" + mhold; } } } } if(actionmode>=13 && document.getElementById("repeat").checked === true) { cmd = cmd + "!" + "R"; document.getElementById("dt").checked = false; } } if(document.getElementById("bitr") !== null) { var bitrate = parseInt(document.getElementById("bitr").value); document.getElementById("bitrtext").innerHTML = bitrate + "Mb/s"; if(actionmode == 12) { cmd = cmd + bitrate; } } if(document.getElementById("addcmd") !== null) { cmd = cmd + document.getElementById("addcmd").value; } if(actionmode>=13 && document.getElementById("boot").checked === true) { cmd = "!MQRDR=1!MBOOT=\"!Lboot\"!SAVEboot=" + cmd; } if(cmd != lasttimecmd) { changed = true; } var delay = 200; if(changed === true) { if(cmd === "") cmd = "\"QR Control\nReady\""; makeQR(); even ++; { qrcode.clear(); qrcode.makeCode(cmd); } if(cmd != lasttimecmd) { document.getElementById("qrtext").innerHTML = cmd; clipcopy = "https://gopro.github.io/labs/control/set/?cmd=" + cmd; document.getElementById("urltext").innerHTML = clipcopy; lasttimecmd = cmd; } lastms = today.getTime(); changed = false; delay = 10; //console.log(cmd); } var t = setTimeout(startTime, delay); } function checkTime(i) { if (i < 10) {i = "0" + i;} // add zero in front of numbers < 10 return i; } function dset(label, on) { var settings = document.getElementById(label); if(on === true) { if (settings.style.display === 'none') settings.style.display = 'block'; } else { settings.style.display = 'none'; } } function dcmd(cmd, id) { var x; if(document.getElementById(id) !== null) { x = document.getElementById(id).checked; if( x === true) cmd = cmd + document.getElementById(id).value; } else { for (i = 1; i < 30; i++) { var newid = id+i; if(document.getElementById(newid) !== null) { x = document.getElementById(newid).checked; if( x === true) cmd = cmd + document.getElementById(newid).value; } } } return cmd; } function myReloadFunction() { location.reload(); } async function copyImageToClipboard() { html2canvas(document.querySelector("#qrcode_txt")).then(canvas => canvas.toBlob(blob => navigator.clipboard.write([new ClipboardItem({'image/png': blob})]))); } async function copyTextToClipboard(text) { try { await navigator.clipboard.writeText(text); } catch(err) { alert('Error in copying text: ', err); } } function setupButtons() { document.getElementById("copyBtn").onclick = function() { copyTextToClipboard(clipcopy); }; document.getElementById("copyImg").onclick = function() { copyImageToClipboard(); }; } makeQR(); setupButtons(); startTime(); </script>