Steve has some good suggestions.
Here is what I was thinking if you decide to soldier on...
Is Button1 checked in the designer as Enabled?
Do you set it's Enabled to false anywhere?
I don't see any problem with the blocks you have shown that would prevent the speech recognizer from opening.
If you reduce the number of blocks that set visibility to only one which sets the outermost screen arrangement visible or not visible you may not need the clock timer (see below) at all.
Debugging:
If you need to test values inside your procedures, you can use the Do It tool.
Suppose you wanted to know what the result value returned to the when SpeechRecognizer1.AfterGettingText block is. You could do something like the following:
Create a global variable named debug.
insert a 'set global debug to result' blocks pair at the top of 'when SpeechRecognizer.AfterGettingText' event block before the 'if' block.
On the Blocks Viewer canvas, place a 'get global debug' variable block by itself.
Connect your device for testing and connect to your device with the Companion app.
Touch Button1 on the device screen, speak your text.
After speech recognizer returns it's result you can right-click on the 'get global debug' variable block and choose 'Do It'.
The result should display in a comment callout.
--
Another method to stitch digits together in the calculator display is to just use the Text join block to join the new digit to the previous digit.
---
With as many updates as you have to the screen display it may be necessary to place your blocks from the Screen1.Initialize event block inside a Clock Timer block to give the screen time to update.
Create Clock1 and uncheck it's TimerEnabled checkbox.
You can set it's Interval value to 0 for the minimum delay, but that should allow your BackgroundColor block time to update the display.
If it doesn't, try increasing the Interval value.
So all you would have inside Screen1.Initialize would be:
Clock1.TimerEnabled to true
Then your blocks in the Clock1.Timer:
Clock1.Timer
<blocks from Screen1.Initialize>
Clock1.TimerEnabled to false
---
If all of your calculator buttons are inside screen arrangements then you will only need to set the outermost screen arrangement to visible false or visible true to hide or show your custom numeric keypad.
I recommend that you consider organizing your buttons similar to the following:
Vertical screen arrangement
horizontal screen arrangement (contains top row of buttons)
horizontal screen arrangement (contains second row of buttons)
etc.
---
sf