flipper-zero-tutorials/js/flipboard/scripts/badusb_textbox_fb.js
2024-04-19 18:00:58 -05:00

56 lines
2.0 KiB
JavaScript

({
title: "BadUSB Textbox",
primaryAction: function (buttonNumber) {
// Do an action based on the button number.
if (buttonNumber === 1) {
this.api.badusb.println("https://www.youtube.com/@MrDerekJamison/playlists", 10);
} else if (buttonNumber === 2) {
this.api.badusb.print("Flipper Name: ", 10);
this.api.require("flipper");
this.api.badusb.println(this.api.flipper.getName(), 10);
} else if (buttonNumber === 4) {
this.api.badusb.println("I TYPE SLOW!", 250);
} else if (buttonNumber === 8) {
this.api.badusb.altPrintln("This was printed with Alt+Numpad method!");
}
},
init: function (api) {
this.api = api;
// Initialize access to the Flipper Zero speaker
this.api.initSpeaker();
// Initialize access to the BadUSB (virtual keyboard) device
this.api.initBadusb("/ext/badusb/assets/layouts/en-US.kl");
this.initTextbox();
},
initTextbox: function () {
this.api.textbox.addText(this.title + "\n");
this.api.textbox.addText("Press a button.\n");
this.api.textbox.show();
},
updateTextbox: function (buttonNumber, pressedArray) {
let text = "Button " + to_string(buttonNumber) + " pressed: ";
for (let i = 0; i < 4; i++) {
text += pressedArray[i] ? "X" : "_";
}
text += "\n";
this.api.textbox.addText(text);
},
buttonPressed: function (buttonNumber, pressedArray) {
// Redraw the textbox to show the button press.
this.updateTextbox(buttonNumber, pressedArray);
// A button press of 0 means the user released all of the buttons.
if (buttonNumber === 0) {
return;
}
// Play a tone for 100ms when button pressed.
this.api.speaker.play(440 + 100 * buttonNumber, 1.00, 100);
// Perform the primary action.
this.primaryAction(buttonNumber);
}
})