+
+ sub keyDown{
+ my $s = shift;
+ my $text = <<'EndScript';
+ var cursMode = true;
+ function matrix_keyDown(e){
+ let id = e.srcElement.id;
+ let res = id.match(/(_i_)(\d+)_(\d+)/);
+ let y = 0;
+ let x = 0;
+ if(res[1] === '_i_'){
+ y = Number(res[2]);
+ x = Number(res[3]);
+ }
+ document.getElementById('item1').innerText = id + " " + e.keyCode;
+ if (cursMode && e.keyCode == 39) {
+ x += 1;
+ }else if (cursMode && e.keyCode == 37) {
+ x -= 1;
+ }else if (e.keyCode == 40) {
+ y += 1;
+ cursMode = true;
+ }else if (e.keyCode == 38) {
+ y -= 1;
+ cursMode = true;
+ }else if (e.keyCode == 13) { // Enter
+ x = 1;
+ y += 1;
+ cursMode = true;
+ }else if (e.keyCode == 36) { // Home
+ y = 2;
+ cursMode = true;
+ }else if (e.keyCode == 35) { // End
+ y = 99;
+ cursMode = true;
+ }else if (e.keyCode == 9) { // Tab
+ cursMode = true;
+ }else{
+ cursMode = false;
+ }
+ if(res[1] === '_i_' && y > 1 && x > 0 && cursMode){
+ id = res[1] + y + "_" + x;
+ document.getElementById(id).focus();
+ document.getElementById(id).scrollIntoView({block: 'center',inline: 'center'});
+ }
+ }
+ EndScript
+ return $text;
+ }