1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | //public/js/main.js class Typing{ constructor(){ $( ".keyboard-base .key" ).on({ keypress: function (event){ if (event.which != 32) var key = String.fromCharCode(event.which).toUpperCase(); else if (event.which == 32) var key = "Space" ; typing.checkKey(key) } }); this .letters = [[ 'A' , 'កូនដៃ' , 'ា' ],[ 'S' , 'នាងដៃ' , 'ស' ],[ 'D' , 'ចង្អុលកណ្តាល' , 'ដ' ],[ 'F' , 'ចង្អុលដៃ' , 'ថ' ],[ 'G' , 'ចង្អុលដៃ' , 'ង' ], [ 'H' , 'ចង្អុលដៃស្តាំ' , 'ហ' ],[ 'J' , 'ចង្អុលដៃស្តាំ' , 'ដាក់ជើង' ],[ 'K' , 'ចង្អុលកណ្តាល' , 'ក' ],[ 'L' , 'នាងដៃ' , 'ល' ],[ ';' , 'កូនដៃ' , 'ើ' ], [ "'" ,'កូនដៃ ',' ់ '],[' Space ',' មេដៃស្តាំ ',' ដកឃ្លាមើលមិនឃើញ ']]; this.counter = 0; this.nextKey = this.letters[0][0]; this.setBackground(this.nextKey); } setBackground(nextKey){ var keys = $(".keyboard-base").children(); for(var index in keys){ if(keys[index].innerHTML == nextKey){ keys[index].focus(); $(keys[index]).css({' background ':' teal '}); } if(this.pressedKey && (keys[index].innerHTML == this.pressedKey)){ $(keys[index]).css({' background ':' rgb(243, 243, 243) '}); } } $(' #finger').html(this.letters[this.counter][1]); $(' #letter').html(this.letters[this.counter][2]); } checkKey(key){ if (key == this .nextKey){ if ( this .counter < ( this .letters).length - 1) this .counter += 1; else if ( this .counter == ( this .letters).length - 1) this .counter = 0; this .pressedKey = this .nextKey; this .nextKey = this .letters[ this .counter][0]; this .setBackground( this .nextKey); } } } //end of class |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | /*public/css/main.css*/ a{ text-decoration : none ; color : rgb ( 6 , 100 , 138 ) } a:hover{ color : rgb ( 35 , 118 , 226 ); } a img:hover{ opacity: . 7 ; } .region{ max-width : 1100px ; margin : 0 auto ; } body{ margin : 0 ; padding : 0 ; font : 14px / 1.5 Arial , OdorMeanChey; } #blog-header{ background : teal ; } .blog-title{ padding : 5px 0 ; display : grid; grid-template-columns: 55px 350px auto 100px ; align-items: center ; } .blog-title .logo{ margin-right : 10px ; } .blog-title img{ width : 100% ; } .blog-title a{ font : 30px / 1.5 Moul, Anton; color : white ; } .blog-title a:first-child{ margin-left : 0 ; } .blog-title a:hover, .blog-title .login a:hover, .blog-title #menu a:hover{ color : lavender; } .blog-title .login{ text-align : right ; } .blog-title .login a{ font : 15px / 1.5 OdorMeanChey; color : white ; } .blog-title #menu ul{ padding : 0 ; margin : 0 ; } .blog-title #menu li{ list-style-type : none ; display : inline- block ; padding : 0 10px ; } .blog-title #menu li a{ font : 15px / 1.5 OdorMeanChey; color : white ; list-style : none ; } #content #panel{ min-height : 170px ; background : rgb ( 197 , 197 , 197 ); margin : 10px 8px 5px ; box-sizing: border-box; border-radius: 4px ; padding : 20px ; } body * { margin : 0 ; padding : 0 ; box-sizing: border-box; font-family : Arial , Helvetica , sans-serif , OdorMeanChey; } .keyboard-base { margin : 0 auto ; max-width : 1085px ; padding : 20px ; background-color : rgb ( 197 , 197 , 197 ); border-radius: 4px ; display : grid; grid-template-columns: repeat ( 30 , 30px ); grid-template-rows: repeat ( 5 , 60px ); grid-gap: 5px ; } .key { background-color : rgb ( 243 , 243 , 243 ); border : 2px solid black ; border-radius: 5px ; grid-column: span 2 ; font-size : 20px ; text-align : center ; padding-top : 17px ; } .key:hover { border : 1px solid #eeeeee ; } .delete { grid-column: span 4 ; } .tab { grid-column: span 3 ; } .backslash { grid-column: span 3 ; } .capslock { grid-column: span 4 ; } .return { grid-column: span 4 ; } .leftshift { grid-column: span 5 ; } .rightshift { grid-column: span 5 ; } .leftctrl { grid-column: span 3 ; } .command { grid-column: span 3 ; font-size : 14px ; } .space { grid-column: span 13 ; } #content #panel{ text-align : center ; display : grid; grid-template-columns: 100% ; align-items: center ; } #content #finger{ font : 14px / 1.5 OdorMeanChey; } #content #letter{ font : 30px / 1.5 OdorMeanChey; } footer{ background : rgb ( 165 , 165 , 165 ); } .footer{ text-align : center ; padding : 40px ; margin-top : 30px ; font-weight : bold ; } |
GitHub: https://khmerweb-typing.herokuapp.com
Heroku: https://khmerweb-typing.herokuapp.com/