constructor(x, y, scope = globalScope, bufferSize = 32) {
        super(x, y, scope, 'RIGHT', 1);
        /*
        this.scope['Keyboard'].push(this);
        */
        this.directionFixed = true;
        this.fixedBitWidth = true;

        this.bufferSize = bufferSize || parseInt(prompt('Enter buffer size:'));
        this.elementWidth = Math.max(80, Math.ceil(this.bufferSize / 2) * 20);
        this.elementHeight = 40; // Math.max(40,Math.ceil(this.rows*15/20)*20);
        this.setWidth(this.elementWidth / 2);
        this.setHeight(this.elementHeight / 2);

        this.clockInp = new Node(-this.elementWidth / 2, this.elementHeight / 2 - 10, 0, this, 1, 'Clock');
        this.asciiOutput = new Node(30, this.elementHeight / 2, 1, this, 7, 'Ascii Output');
        this.available = new Node(10, this.elementHeight / 2, 1, this, 1, 'Available');
        this.reset = new Node(-10, this.elementHeight / 2, 0, this, 1, 'Reset');
        this.en = new Node(-30, this.elementHeight / 2, 0, this, 1, 'Enable');
        this.prevClockState = 0;
        this.buffer = '';
        this.bufferOutValue = undefined;
    }
@class
Keyboard
KeyBoard - We can give 3 inputs: clock, enable and available.
An output of 7 bits is given out when clockInp = 1.
@extends CircuitElement
@param {number} x - x coord of element
@param {number} y - y coord of element
@param {Scope=} scope - the ciruit in which we want the Element
@param {string=} dir - direcion in which element has to drawn
@category sequential