Button event down (#1189)
* support for button_down events * support for AB button
This commit is contained in:
		@@ -62,6 +62,13 @@ namespace pxsim.control {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    export function onEvent(id: number, evid: number, handler: RefAction) {
 | 
					    export function onEvent(id: number, evid: number, handler: RefAction) {
 | 
				
			||||||
 | 
					        if (id == DAL.MICROBIT_ID_BUTTON_AB) {
 | 
				
			||||||
 | 
					            const b = board().buttonPairState;
 | 
				
			||||||
 | 
					            if (!b.usesButtonAB) {
 | 
				
			||||||
 | 
					                b.usesButtonAB = true;
 | 
				
			||||||
 | 
					                runtime.queueDisplayUpdate();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        pxtcore.registerWithDal(id, evid, handler)
 | 
					        pxtcore.registerWithDal(id, evid, handler)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -966,6 +966,7 @@ path.sim-board {
 | 
				
			|||||||
                    let state = this.board;
 | 
					                    let state = this.board;
 | 
				
			||||||
                    state.edgeConnectorState.pins[index].touched = true;
 | 
					                    state.edgeConnectorState.pins[index].touched = true;
 | 
				
			||||||
                    this.updatePin(state.edgeConnectorState.pins[index], index);
 | 
					                    this.updatePin(state.edgeConnectorState.pins[index], index);
 | 
				
			||||||
 | 
					                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
                }));
 | 
					                }));
 | 
				
			||||||
                btn.addEventListener(pointerEvents.leave, ev => {
 | 
					                btn.addEventListener(pointerEvents.leave, ev => {
 | 
				
			||||||
                    let state = this.board;
 | 
					                    let state = this.board;
 | 
				
			||||||
@@ -981,6 +982,7 @@ path.sim-board {
 | 
				
			|||||||
                })
 | 
					                })
 | 
				
			||||||
                accessibility.enableKeyboardInteraction(btn, undefined, () => {
 | 
					                accessibility.enableKeyboardInteraction(btn, undefined, () => {
 | 
				
			||||||
                    let state = this.board;
 | 
					                    let state = this.board;
 | 
				
			||||||
 | 
					                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
					                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
				
			||||||
                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
					                    this.board.bus.queue(state.edgeConnectorState.pins[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
@@ -993,6 +995,7 @@ path.sim-board {
 | 
				
			|||||||
                    let state = this.board;
 | 
					                    let state = this.board;
 | 
				
			||||||
                    stateButtons[index].pressed = true;
 | 
					                    stateButtons[index].pressed = true;
 | 
				
			||||||
                    svg.fill(this.buttons[index], this.props.theme.buttonDown);
 | 
					                    svg.fill(this.buttons[index], this.props.theme.buttonDown);
 | 
				
			||||||
 | 
					                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
                }));
 | 
					                }));
 | 
				
			||||||
                btn.addEventListener(pointerEvents.leave, ev => {
 | 
					                btn.addEventListener(pointerEvents.leave, ev => {
 | 
				
			||||||
                    let state = this.board;
 | 
					                    let state = this.board;
 | 
				
			||||||
@@ -1007,6 +1010,7 @@ path.sim-board {
 | 
				
			|||||||
                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
					                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
				
			||||||
                })
 | 
					                })
 | 
				
			||||||
                accessibility.enableKeyboardInteraction(btn, undefined, () => {
 | 
					                accessibility.enableKeyboardInteraction(btn, undefined, () => {
 | 
				
			||||||
 | 
					                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
					                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
				
			||||||
                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
					                    this.board.bus.queue(stateButtons[index].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
@@ -1019,6 +1023,7 @@ path.sim-board {
 | 
				
			|||||||
                svg.fill(this.buttons[0], this.props.theme.buttonDown);
 | 
					                svg.fill(this.buttons[0], this.props.theme.buttonDown);
 | 
				
			||||||
                svg.fill(this.buttons[1], this.props.theme.buttonDown);
 | 
					                svg.fill(this.buttons[1], this.props.theme.buttonDown);
 | 
				
			||||||
                svg.fill(this.buttons[2], this.props.theme.buttonDown);
 | 
					                svg.fill(this.buttons[2], this.props.theme.buttonDown);
 | 
				
			||||||
 | 
					                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
            }));
 | 
					            }));
 | 
				
			||||||
            this.buttonsOuter[2].addEventListener(pointerEvents.leave, ev => {
 | 
					            this.buttonsOuter[2].addEventListener(pointerEvents.leave, ev => {
 | 
				
			||||||
                let state = this.board;
 | 
					                let state = this.board;
 | 
				
			||||||
@@ -1042,6 +1047,7 @@ path.sim-board {
 | 
				
			|||||||
                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
					                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
				
			||||||
            })
 | 
					            })
 | 
				
			||||||
            accessibility.enableKeyboardInteraction(this.buttonsOuter[2], undefined, () => {
 | 
					            accessibility.enableKeyboardInteraction(this.buttonsOuter[2], undefined, () => {
 | 
				
			||||||
 | 
					                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_DOWN);
 | 
				
			||||||
                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
					                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_UP);
 | 
				
			||||||
                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
					                this.board.bus.queue(stateButtons[2].id, DAL.MICROBIT_BUTTON_EVT_CLICK);
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user