{
  "ev3.beepNote": {
    "message": "beep note [NOTE] for [TIME] secs",
    "description": "play some note on EV3 for some time"
  },
  "ev3.buttonPressed": {
    "message": "button [PORT] pressed?",
    "description": "is a button on some port pressed?"
  },
  "ev3.getBrightness": {
    "message": "brightness",
    "description": "gets measured brightness"
  },
  "ev3.getDistance": {
    "message": "distance",
    "description": "gets measured distance"
  },
  "ev3.getMotorPosition": {
    "message": "motor [PORT] position",
    "description": "get the measured degrees a motor has turned"
  },
  "ev3.motorSetPower": {
    "message": "motor [PORT] set power [POWER] %",
    "description": "set a motor's power to some value"
  },
  "ev3.motorTurnClockwise": {
    "message": "motor [PORT] turn this way for [TIME] seconds",
    "description": "turn a motor clockwise for some time"
  },
  "ev3.motorTurnCounterClockwise": {
    "message": "motor [PORT] turn that way for [TIME] seconds",
    "description": "turn a motor counter-clockwise for some time"
  },
  "ev3.whenBrightnessLessThan": {
    "message": "when brightness < [DISTANCE]",
    "description": "when value measured by brightness sensor is less than some value"
  },
  "ev3.whenButtonPressed": {
    "message": "when button [PORT] pressed",
    "description": "when a button connected to a port is pressed"
  },
  "ev3.whenDistanceLessThan": {
    "message": "when distance < [DISTANCE]",
    "description": "when the value measured by the distance sensor is less than some value"
  },
  "microbit.buttonsMenu.any": {
    "message": "any",
    "description": "label for \"any\" element in button picker for micro:bit extension"
  },
  "microbit.clearDisplay": {
    "message": "clear display",
    "description": "display nothing on the micro:bit display"
  },
  "microbit.defaultTextToDisplay": {
    "message": "Hello!",
    "description": "default text to display.\n                                IMPORTANT - the micro:bit only supports letters a-z, A-Z.\n                                Please substitute a default word in your language\n                                that can be written with those characters,\n                                substitute non-accented characters or leave it as \"Hello!\".\n                                Check the micro:bit site documentation for details"
  },
  "microbit.displaySymbol": {
    "message": "display [MATRIX]",
    "description": "display a pattern on the micro:bit display"
  },
  "microbit.displayText": {
    "message": "display [TEXT]",
    "description": "display text on the micro:bit display"
  },
  "microbit.gesturesMenu.jumped": {
    "message": "jumped",
    "description": "label for jumped gesture in gesture picker for micro:bit extension"
  },
  "microbit.gesturesMenu.moved": {
    "message": "moved",
    "description": "label for moved gesture in gesture picker for micro:bit extension"
  },
  "microbit.gesturesMenu.shaken": {
    "message": "shaken",
    "description": "label for shaken gesture in gesture picker for micro:bit extension"
  },
  "microbit.isButtonPressed": {
    "message": "[BTN] button pressed?",
    "description": "is the selected button on the micro:bit pressed?"
  },
  "microbit.isTilted": {
    "message": "tilted [DIRECTION]?",
    "description": "is the micro:bit is tilted in a direction?"
  },
  "microbit.pinStateMenu.off": {
    "message": "off",
    "description": "label for off element in pin state picker for micro:bit extension"
  },
  "microbit.pinStateMenu.on": {
    "message": "on",
    "description": "label for on element in pin state picker for micro:bit extension"
  },
  "microbit.tiltAngle": {
    "message": "tilt angle [DIRECTION]",
    "description": "how much the micro:bit is tilted in a direction"
  },
  "microbit.tiltDirectionMenu.any": {
    "message": "any",
    "description": "label for any direction element in tilt direction picker for micro:bit extension"
  },
  "microbit.tiltDirectionMenu.back": {
    "message": "back",
    "description": "label for back element in tilt direction picker for micro:bit extension"
  },
  "microbit.tiltDirectionMenu.front": {
    "message": "front",
    "description": "label for front element in tilt direction picker for micro:bit extension"
  },
  "microbit.tiltDirectionMenu.left": {
    "message": "left",
    "description": "label for left element in tilt direction picker for micro:bit extension"
  },
  "microbit.tiltDirectionMenu.right": {
    "message": "right",
    "description": "label for right element in tilt direction picker for micro:bit extension"
  },
  "microbit.whenButtonPressed": {
    "message": "when [BTN] button pressed",
    "description": "when the selected button on the micro:bit is pressed"
  },
  "microbit.whenGesture": {
    "message": "when [GESTURE]",
    "description": "when the selected gesture is detected by the micro:bit"
  },
  "microbit.whenPinConnected": {
    "message": "when pin [PIN] connected test",
    "description": "when the pin detects a connection to Earth/Ground"
  },
  "microbit.whenTilted": {
    "message": "when tilted [DIRECTION]",
    "description": "when the micro:bit is tilted in a direction"
  },
  "music.categoryName": {
    "message": "Music",
    "description": "Label for the Music extension category"
  },
  "music.changeTempo": {
    "message": "change tempo by [TEMPO]",
    "description": "change tempo (speed) for notes, drums, and rests played"
  },
  "music.drumBass": {
    "message": "(2) Bass Drum",
    "description": "Sound of bass drum as used in a standard drum kit"
  },
  "music.drumBongo": {
    "message": "(13) Bongo",
    "description": "Sound of a bongo being struck"
  },
  "music.drumCabasa": {
    "message": "(15) Cabasa",
    "description": "Sound of a cabasa being shaken"
  },
  "music.drumClaves": {
    "message": "(9) Claves",
    "description": "Sound of claves being struck together"
  },
  "music.drumClosedHiHat": {
    "message": "(6) Closed Hi-Hat",
    "description": "Sound of a drum stick hitting a hi-hat while closed"
  },
  "music.drumConga": {
    "message": "(14) Conga",
    "description": "Sound of a conga being struck"
  },
  "music.drumCowbell": {
    "message": "(11) Cowbell",
    "description": "Sound of a cowbell being struck"
  },
  "music.drumCrashCymbal": {
    "message": "(4) Crash Cymbal",
    "description": "Sound of a drum stick hitting a crash cymbal"
  },
  "music.drumCuica": {
    "message": "(18) Cuica",
    "description": "Sound of a cuica being played"
  },
  "music.drumGuiro": {
    "message": "(16) Guiro",
    "description": "Sound of a guiro being played"
  },
  "music.drumHandClap": {
    "message": "(8) Hand Clap",
    "description": "Sound of two hands clapping together"
  },
  "music.drumOpenHiHat": {
    "message": "(5) Open Hi-Hat",
    "description": "Sound of a drum stick hitting a hi-hat while open"
  },
  "music.drumSideStick": {
    "message": "(3) Side Stick",
    "description": "Sound of a drum stick hitting the side of a drum (usually the snare)"
  },
  "music.drumSnare": {
    "message": "(1) Snare Drum",
    "description": "Sound of snare drum as used in a standard drum kit"
  },
  "music.drumTambourine": {
    "message": "(7) Tambourine",
    "description": "Sound of a tambourine being struck"
  },
  "music.drumTriangle": {
    "message": "(12) Triangle",
    "description": "Sound of a triangle (instrument) being struck"
  },
  "music.drumVibraslap": {
    "message": "(17) Vibraslap",
    "description": "Sound of a Vibraslap being played"
  },
  "music.drumWoodBlock": {
    "message": "(10) Wood Block",
    "description": "Sound of a wood block being struck"
  },
  "music.getTempo": {
    "message": "tempo",
    "description": "get the current tempo (speed) for notes, drums, and rests played"
  },
  "music.instrumentBass": {
    "message": "(6) Bass",
    "description": "Sound of an accoustic upright bass"
  },
  "music.instrumentBassoon": {
    "message": "(14) Bassoon",
    "description": "Sound of a bassoon being played"
  },
  "music.instrumentCello": {
    "message": "(8) Cello",
    "description": "Sound of a cello being played with a bow"
  },
  "music.instrumentChoir": {
    "message": "(15) Choir",
    "description": "Sound of a choir singing"
  },
  "music.instrumentClarinet": {
    "message": "(10) Clarinet",
    "description": "Sound of a clarinet being played"
  },
  "music.instrumentElectricGuitar": {
    "message": "(5) Electric Guitar",
    "description": "Sound of an electric guitar"
  },
  "music.instrumentElectricPiano": {
    "message": "(2) Electric Piano",
    "description": "Sound of an electric piano"
  },
  "music.instrumentFlute": {
    "message": "(12) Flute",
    "description": "Sound of a flute being played"
  },
  "music.instrumentGuitar": {
    "message": "(4) Guitar",
    "description": "Sound of an accoustic guitar"
  },
  "music.instrumentMarimba": {
    "message": "(19) Marimba",
    "description": "Sound of a marimba being struck"
  },
  "music.instrumentMusicBox": {
    "message": "(17) Music Box",
    "description": "Sound of a music box playing"
  },
  "music.instrumentOrgan": {
    "message": "(3) Organ",
    "description": "Sound of an organ"
  },
  "music.instrumentPiano": {
    "message": "(1) Piano",
    "description": "Sound of a piano"
  },
  "music.instrumentPizzicato": {
    "message": "(7) Pizzicato",
    "description": "Sound of a string instrument (e.g. violin) being plucked"
  },
  "music.instrumentSaxophone": {
    "message": "(11) Saxophone",
    "description": "Sound of a saxophone being played"
  },
  "music.instrumentSteelDrum": {
    "message": "(18) Steel Drum",
    "description": "Sound of a steel drum being struck"
  },
  "music.instrumentSynthLead": {
    "message": "(20) Synth Lead",
    "description": "Sound of a \"lead\" synthesizer being played"
  },
  "music.instrumentSynthPad": {
    "message": "(21) Synth Pad",
    "description": "Sound of a \"pad\" synthesizer being played"
  },
  "music.instrumentTrombone": {
    "message": "(9) Trombone",
    "description": "Sound of a trombone being played"
  },
  "music.instrumentVibraphone": {
    "message": "(16) Vibraphone",
    "description": "Sound of a vibraphone being struck"
  },
  "music.instrumentWoodenFlute": {
    "message": "(13) Wooden Flute",
    "description": "Sound of a wooden flute being played"
  },
  "music.playDrumForBeats": {
    "message": "play drum [DRUM] for [BEATS] beats",
    "description": "play drum sample for a number of beats"
  },
  "music.playNoteForBeats": {
    "message": "play note [NOTE] for [BEATS] beats",
    "description": "play a note for a number of beats"
  },
  "music.restForBeats": {
    "message": "rest for [BEATS] beats",
    "description": "rest (play no sound) for a number of beats"
  },
  "music.setInstrument": {
    "message": "set instrument to [INSTRUMENT]",
    "description": "set the instrument (e.g. piano, guitar, trombone) for notes played"
  },
  "music.setTempo": {
    "message": "set tempo to [TEMPO]",
    "description": "set tempo (speed) for notes, drums, and rests played"
  },
  "pen.categoryName": {
    "message": "Pen",
    "description": "Label for the pen extension category"
  },
  "pen.changeColorParam": {
    "message": "change pen [COLOR_PARAM] by [VALUE]",
    "description": "change the state of a pen color parameter"
  },
  "pen.changeHue": {
    "message": "change pen color by [HUE]",
    "description": "legacy pen blocks - change pen color"
  },
  "pen.changeShade": {
    "message": "change pen shade by [SHADE]",
    "description": "legacy pen blocks - change pen shade"
  },
  "pen.changeSize": {
    "message": "change pen size by [SIZE]",
    "description": "change the diameter of the trail left by a sprite"
  },
  "pen.clear": {
    "message": "erase all",
    "description": "erase all pen trails and stamps"
  },
  "pen.colorMenu.brightness": {
    "message": "brightness",
    "description": "label for brightness element in color picker for pen extension"
  },
  "pen.colorMenu.color": {
    "message": "color",
    "description": "label for color element in color picker for pen extension"
  },
  "pen.colorMenu.saturation": {
    "message": "saturation",
    "description": "label for saturation element in color picker for pen extension"
  },
  "pen.colorMenu.transparency": {
    "message": "transparency",
    "description": "label for transparency element in color picker for pen extension"
  },
  "pen.penDown": {
    "message": "pen down",
    "description": "start leaving a trail when the sprite moves"
  },
  "pen.penUp": {
    "message": "pen up",
    "description": "stop leaving a trail behind the sprite"
  },
  "pen.setColor": {
    "message": "set pen color to [COLOR]",
    "description": "set the pen color to a particular (RGB) value"
  },
  "pen.setColorParam": {
    "message": "set pen [COLOR_PARAM] to [VALUE]",
    "description": "set the state for a pen color parameter e.g. saturation"
  },
  "pen.setHue": {
    "message": "set pen color to [HUE]",
    "description": "legacy pen blocks - set pen color to number"
  },
  "pen.setShade": {
    "message": "set pen shade to [SHADE]",
    "description": "legacy pen blocks - set pen shade"
  },
  "pen.setSize": {
    "message": "set pen size to [SIZE]",
    "description": "set the diameter of a trail left by a sprite"
  },
  "pen.stamp": {
    "message": "stamp",
    "description": "render current costume on the background"
  },
  "speech.defaultWhenIHearValue": {
    "message": "let''s go",
    "description": "The default phrase/word that, when heard, triggers the event."
  },
  "speech.extensionName": {
    "message": "Google Speech",
    "description": "Name of extension that adds speech recognition blocks. Do Not translate Google."
  },
  "speech.listenAndWait": {
    "message": "listen and wait",
    "description": "Start listening to the microphone and wait for a result from the speech recognition system."
  },
  "speech.speechReporter": {
    "message": "speech",
    "description": "Get the text of spoken words transcribed by the speech recognition system."
  },
  "speech.whenIHear": {
    "message": "when I hear [PHRASE]",
    "description": "Event that triggers when the text entered on the block is recognized by the speech recognition system."
  },
  "text2speech.defaultTextToSpeak": {
    "message": "hello",
    "description": "hello: the default text to speak"
  },
  "text2speech.kitten": {
    "message": "kitten",
    "description": "A baby cat."
  },
  "text2speech.max": {
    "message": "max",
    "description": "Name for a voice with ambiguous gender."
  },
  "text2speech.monster": {
    "message": "monster",
    "description": "Name for a funny voice with a low pitch."
  },
  "text2speech.puppy": {
    "message": "puppy",
    "description": "A baby dog."
  },
  "text2speech.quinn": {
    "message": "quinn",
    "description": "Name for a voice with ambiguous gender."
  },
  "text2speech.setVoiceBlock": {
    "message": "set voice to [VOICE]",
    "description": "Set the voice for speech synthesis."
  },
  "text2speech.speakAndWaitBlock": {
    "message": "speak [WORDS]",
    "description": "Speak some words."
  },
  "text2speech.squeak": {
    "message": "squeak",
    "description": "Name for a funny voice with a high pitch."
  },
  "translate.categoryName": {
    "message": "Google Translate",
    "description": "Name of extension that adds translate blocks. Do Not translate Google"
  },
  "translate.defaultTextToTranslate": {
    "message": "hello",
    "description": "hello: the default text to translate"
  },
  "translate.translateBlock": {
    "message": "translate [WORDS] to [LANGUAGE]",
    "description": "translate some text to a different language"
  },
  "translate.viewerLanguage": {
    "message": "language",
    "description": "the languge of the project viewer"
  },
  "videoSensing.categoryName": {
    "message": "Video Sensing",
    "description": "Label for the video sensing extension category"
  },
  "videoSensing.direction": {
    "message": "direction",
    "description": "Attribute for the \"video [ATTRIBUTE] on [SUBJECT]\" block"
  },
  "videoSensing.motion": {
    "message": "motion",
    "description": "Attribute for the \"video [ATTRIBUTE] on [SUBJECT]\" block"
  },
  "videoSensing.off": {
    "message": "off",
    "description": "Option for the \"turn video [STATE]\" block"
  },
  "videoSensing.on": {
    "message": "on",
    "description": "Option for the \"turn video [STATE]\" block"
  },
  "videoSensing.onFlipped": {
    "message": "on flipped",
    "description": "Option for the \"turn video [STATE]\" block that causes the video to be flipped horizontally (reversed as in a mirror)"
  },
  "videoSensing.setVideoTransparency": {
    "message": "set video transparency to [TRANSPARENCY]",
    "description": "Controls transparency of the video preview layer"
  },
  "videoSensing.sprite": {
    "message": "sprite",
    "description": "Subject for the \"video [ATTRIBUTE] on [SUBJECT]\" block"
  },
  "videoSensing.stage": {
    "message": "stage",
    "description": "Subject for the \"video [ATTRIBUTE] on [SUBJECT]\" block"
  },
  "videoSensing.videoOn": {
    "message": "video [ATTRIBUTE] on [SUBJECT]",
    "description": "Reporter that returns the amount of [ATTRIBUTE] for the selected [SUBJECT]"
  },
  "videoSensing.videoToggle": {
    "message": "turn video [VIDEO_STATE]",
    "description": "Controls display of the video preview layer"
  },
  "videoSensing.whenMotionGreaterThan": {
    "message": "when video motion > [REFERENCE]",
    "description": "Event that triggers when the amount of motion is greater than [REFERENCE]"
  },
  "wedo2.getDistance": {
    "message": "distance",
    "description": "the value returned by the distance sensor"
  },
  "wedo2.getTiltAngle": {
    "message": "tilt angle [TILT_DIRECTION]",
    "description": "the angle returned by the tilt sensor"
  },
  "wedo2.isTilted": {
    "message": "tilted [TILT_DIRECTION_ANY]?",
    "description": "whether the tilt sensor is tilted"
  },
  "wedo2.motorOff": {
    "message": "turn [MOTOR_ID] off",
    "description": "turn a motor off"
  },
  "wedo2.motorOn": {
    "message": "turn [MOTOR_ID] on",
    "description": "turn a motor on indefinitely"
  },
  "wedo2.motorOnFor": {
    "message": "turn [MOTOR_ID] on for [DURATION] seconds",
    "description": "turn a motor on for some time"
  },
  "wedo2.playNoteFor": {
    "message": "play note [NOTE] for [DURATION] seconds",
    "description": "play a certain note for some time"
  },
  "wedo2.setLightHue": {
    "message": "set light color to [HUE]",
    "description": "set the LED color"
  },
  "wedo2.setMotorDirection": {
    "message": "set [MOTOR_ID] direction to [MOTOR_DIRECTION]",
    "description": "set the motor's turn direction"
  },
  "wedo2.startMotorPower": {
    "message": "set [MOTOR_ID] power to [POWER]",
    "description": "set the motor's power and turn it on"
  },
  "wedo2.whenDistance": {
    "message": "when distance [OP] [REFERENCE]",
    "description": "check for when distance is < or > than reference"
  },
  "wedo2.whenTilted": {
    "message": "when tilted [TILT_DIRECTION_ANY]",
    "description": "check when tilted in a certain direction"
  }
}