I had less than a day to put together a webpage which used a querty keyboard to type into some textboxes. I managed to find a keyboard online and copied it over but it wasnt exactly fit for what i needed so i had to modify it quite a bit to fit within the webpage.
The keyboard was designed to type into a single textbox (in the example case it was a password box) where as i needed it to type into multiple fluidly.
I managed to get a passable solution to this through trial and error but 1 important bug remains and i cant seem to figure it out. Im pretty new to jQuery so i appologis if i dont quite understand a lot of things.
The bug is when i mis-click (or touch as this is on a touchscreen) the textbox becomes unslected and the keys dont work anymore.
The original keyboard post here.
My code Edits:
<script type="text/javascript">
var obj = '';
$('body').click(function(event) {
if (event.target.id != "") {
    obj = $("#" + event.target.id);
}
});
$(document).ready(function(){
var shifton = false;
var hotkeyon = false;
$('#row_hotkey').hide();
// makes the keyboard draggable 
//$("#keyboard").draggable();   
// toggles between the normal and the "SHIFT keys" on the keyboard
function onShift(e) {
    var i;
    if(e==1) {
        for(i=0;i<4;i++) {
            var rowid = "#row" + i;
            $(rowid).hide();
            $(rowid+"_shift").show();
            $('#row_hotkey').hide();
        }
    }
    else if(e==0) {
        for(i=0;i<4;i++) {
            var rowid = "#row" + i;
            $(rowid).show();
            $(rowid+"_shift").hide();
            $('#row_hotkey').hide();
        }
    }
    else if(e==3) {
        for(i=0;i<4;i++) {
            var rowid = "#row" + i;
            $(rowid).hide();
            $(rowid+"_shift").hide();
            $('#spacebar').hide();
            $('#loginform').hide();
            $('#row_hotkey').show();
        }
    }
    else if(e==4) {
        for(i=0;i<4;i++) {
            var rowid = "#row" + i;
            $(rowid).show();
            $('#spacebar').show();
            $('#row_hotkey').hide();
            $('#spacebar').show();
            $('#loginform').show();
        }
    }
}
// function thats called when any of the keys on the keyboard are pressed
$("#keyboard input").bind("click", function(e) {
    if( $(this).val() == 'Backspace' ) {
        $(obj).replaceSelection("", true);
    }
    else if( $(this).val() == "Shift" ) {
        if(shifton == false) {
            onShift(1); 
            shifton = true;
        }
        else {
            onShift(0);
            shifton = false;
        }
    }
    else if( $(this).val() == "hotkeys" ) {
        if(hotkeyon == false) {
            onShift(3); 
            hotkeyon = true;
        }
        else {
            onShift(4);
            hotkeyon = false;
        } 
    }
    else {
        $(obj).replaceSelection($(this).val(), true);
        if(shifton == true) {
            onShift(0);
            shifton = false;
        }
    }
});
});
</script>
I added an additional button to the keyboard which lets me switch between qwerty and hotkey mode.
im looking for a way to keep the textbox selected (obj) even if i accidently hit an additional div (like the keyboard div or the background) or if i dont hit anything at all (which happenes a lot)
As an additional question, on the touch screen the cursor will be disabled, when i tried earlier there was an issue with not being able to press the keyboard buttons, not sure if this is an issue with the way the code works or with a few of the other bugs i worked through but if anyone can let me know if this will still work with hidden cursors and non highlightable objects id appreciate it.
 
     
    