рдХреНрд░реЛрдо / рдХреНрд░реЛрдорд┐рдпрдо рдФрд░ рдХреАрдмреЛрд░реНрдб

рдЕрджреНрднреБрдд рдХреНрд░реЛрдорд┐рдпрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Google Chrome рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ), рдХреАрдмреЛрд░реНрдб рдЗрд╡реЗрдВрдЯ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП, рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдЗрд╕рдХреА рджреЛ рджрд┐рд▓рдЪрд╕реНрдк рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВ:



1. onkeyup рдШрдЯрдирд╛ onkeydown рдШрдЯрдирд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдХреБрдВрдЬреА "рдХреНрд▓реИрдореНрдкреЗрдб" рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдЬреЛрдбрд╝реА рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ 25 рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб рдХреА рдПрдирд╡рд┐рдПрдмрд▓ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрдиреНрди рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдореЗрдВ рдард╣рд░рд╛рд╡ рдХреЗ рд╕рд╛рдеред

2. рдпрджрд┐, рдПрдХ рдХреБрдВрдЬреА рджрдмрд╛рдиреЗ рдФрд░ рд░рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдЧрд▓реЗ рдПрдХ рдХреЛ рджрдмрд╛рдПрдВ, рддреЛ ~ 500ms рдХрд╛ рдард╣рд░рд╛рд╡ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирдИ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА onkeydown / onkeyup рдпреБрдЧреНрдо рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред



рдиреАрдЪреЗ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдкреНрдпрд╛рд░рд╛" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдЧ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рджреВрдВрдЧрд╛ред

рдЪреЗрддрд╛рд╡рдиреА! рд╡рд┐рдзрд┐ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдЧрдВрджрд╛ рд╣реИрдХ рд╣реИред







рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред



рдЪрд░рдг 1. рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ 25 рдПрдордПрд╕ (рд▓рдЧрднрдЧ рдЗрд╕реЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдкрд░ onkeydown / onkeyup рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдкрд╣рд▓реЗ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдСрдирдбреЛрдорд░реЗрдбреНрдбреА рдЗрд╡реЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддрд╛ рд╣реВрдВред



OnDomReady рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ jQuery рд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



KeyHandler = { <br/>

// <br/>

keyDown : function ( e ) { <br/>

} , <br/>

<br/>

// "" <br/>

keyUp : function ( e ) { <br/>

} , <br/>

<br/>

// , onDomReady . <br/>

init : function ( ) { <br/>

document. onkeydown = KeyHandler. keyDown ; <br/>

document. onkeyup = KeyHandler. keyUp ; <br/>

} <br/>

} <br/>

<br/>

$ ( document ) . ready ( function ( ) { <br/>

KeyHandler. init ( ) ; <br/>

} )






рдЪрд░рдг 2. рдШрдЯрдирд╛рдУрдВ рдХреА "рд╣рд╛рдирд┐" рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдХрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрдВрдЬреА рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред



рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдПрдХ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рд╡рд┐рдзрд┐ рд╕реЗ рд╕рднреА рдХреАрдмреЛрд░реНрдб рдИрд╡реЗрдВрдЯ рднреА рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреА рд╢реБрд░реБрдЖрдд рдСрдирдХреАрдбрд╛рдЙрди рдЗрд╡реЗрдВрдЯ рдХреЗ рджреМрд░рд╛рди рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рдЬреЛ рдХрд┐ рдХрддрд╛рд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдИрд╡реЗрдВрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЦреБрдж рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдЧрд╛ред



рд╣рдорд╛рд░реЗ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдмрджрд▓реЗрдВ рддрд╛рдХрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рдХрд░реЗрдВ рдФрд░ рдПрдХ "рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ" рдЬреЛрдбрд╝реЗрдВ:

KeyHandler = { <br/>

<br/>

// KeyHandler , , <br/>

// "" . <br/>

pressed : { } , <br/>

// , , , <br/>

observed : false , <br/>

<br/>

// , , <br/>

observe : function ( ) { <br/>

<br/>

// , , . <br/>

var count = 0 ; <br/>

<br/>

// ,, , "". <br/>

// .. , . <br/>

for ( a in KeyHandler. pressed ) { <br/>

// <br/>

// - <br/>

// <br/>

count ++; <br/>

} <br/>

<br/>

// onkeyup - 25 . <br/>

// , , . <br/>

if ( count > 0 ) { <br/>

setTimeout ( KeyHandler. observe , 25 ) ; <br/>

} else { <br/>

KeyHandler. observed = false ; <br/>

} <br/>

} , <br/>

<br/>

// , onkeydown <br/>

startObserve : function ( ) { <br/>

// , observe <br/>

if ( KeyHandler. observed == false ) { <br/>

// , <br/>

KeyHandler. observed = true ; <br/>

// , <br/>

// ( ) 25 <br/>

setTimeout ( KeyHandler. observe , 25 ) ; <br/>

} <br/>

} , <br/>

<br/>

keyDown : function ( e ) { <br/>

// "". <br/>

KeyHandler. pressed [ e. keyCode ] = true ; <br/>

// . <br/>

KeyHandler. startObserve ( ) ; <br/>

} , <br/>

<br/>

keyUp : function ( e ) { <br/>

// "" <br/>

delete KeyHandler. pressed [ e. keyCode ] ; <br/>

} , <br/>

}






рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрдЧ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкреВрд░реНрдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╣рдо рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЗрдирдкреБрдЯ рдкрд░ рдХреЛрдИ рдХреБрдВрдЬреА рдШрдЯрдирд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╣рд░ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рдЕрдирдВрдд рдХрд╛рд▓ рд╣реИрдВрдбрд▓рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред



рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрддрд╛рд░ рд╕реЗ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЕрдирдВрдд рддрдХ рдирд╣реАрдВ рдЬрд╛ рдкрд╛рдПрдВрдЧреЗред рдЙрд╕реА рд╕рдордп, рд╣рдореЗрдВ рдПрдХ рдЕрдореВрд▓реНрдп рдкреНрд▓рд╕ рдорд┐рд▓рддрд╛ рд╣реИ - рджреВрд╕рд░реА рдХреБрдВрдЬреА рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдХреНрдпреЛрдВрдХрд┐ рджреВрд╕рд░реА рдХреБрдВрдЬреА рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдСрдирдХреАрдк рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛), рдЕрд░реНрдерд╛рддреНред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдСрдирдХреАрдб / рдСрдирдХреАрдЕрдк рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реА рдХреБрдВрдЬреА рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдЙрд╕реА рддрд░рд╣, рд╣рдо рджреВрд╕рд░реА рдХреБрдВрдЬреА рджрдмрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрд▓ рдХреЗ рдмреАрдЪ рдХреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдард╣рд░рд╛рд╡ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдХреБрдЦреНрдпрд╛рдд onkeydown / onkeyup рдЬреЛрдбрд╝реЗ рдХреЛ рд╣рд░ ~ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рд╣реЛрддреА рд╣реИред



рдЪрд░рдг 3 рдЕрдм рд╣рдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдХрд┐рд╕ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЗрддрдиреА рдореЗрд╣рдирдд рдХреА рд╣реИ - рд╕реАрдзреЗ рдЙрди рддрд░реАрдХреЛрдВ рдХреЛ, рдЬрд┐рдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рджрдмрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рдХреНрд▓реИрдВрдк рдХрд┐рдпрд╛ рдЧрдпрд╛)ред



KeyHandler = { <br/>

<br/>

// , <br/>

keyBinds : { <br/>

// <br/>

// - Chromium'a <br/>

40 : function ( ) { // DOWN <br/>

console. log ( "DOWN key fired" ) ; <br/>

} , <br/>

38 : function ( ) { // UP <br/>

console. log ( "UP key fired" ) ; <br/>

} , <br/>

39 : function ( ) { // RIGHT <br/>

console. log ( "RIGHT key fired" ) ; <br/>

} , <br/>

37 : function ( ) { // LEFT <br/>

console. log ( "LEFT key fired" ) ; <br/>

} <br/>

} , <br/>

<br/>

observe : function ( ) { <br/>

<br/>

var count = 0 ; <br/>

for ( a in KeyHandler. pressed ) { <br/>

<br/>

// <br/>

// <br/>

// <br/>

// <br/>

if ( typeof KeyHandler. keyBinds [ a ] == "function" ) { <br/>

setTimeout ( KeyHandler. keyBinds [ a ] , 0 ) ; <br/>

} <br/>

count ++; <br/>

} <br/>

<br/>

if ( count > 0 ) { <br/>

setTimeout ( KeyHandler. observe , 25 ) ; <br/>

} else { <br/>

KeyHandler. observed = false ; <br/>

} <br/>

} , <br/>

}






рдЦреИрд░, рдХреБрдЫ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ред рд╣рдорд╛рд░рд╛ рд╣реИрдВрдбрд▓рд░ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдЯрдХ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдЕрдЪрд╛рдирдХ рдЦрд┐рдбрд╝рдХреА рдХреА рдЪрд╛рдмреА рджрдмрд╛рдиреЗ рдкрд░ рдлреЛрдХрд╕ рдЦреЛ рдЧрдпрд╛ рд╣реЛред рдпрд╣ рдПрдХ рдХреБрдВрдЬреА рджрдмрд╛рдП рдмрд┐рдирд╛ рджреВрд╕рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЯреИрдм рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ onblur рдЗрд╡реЗрдВрдЯ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрддрд╛рд░ рдХреЛ рд╕рд╛рдл рдХрд░реЗрдВрдЧреЗ, рдпрджрд┐ рдХреЛрдИ рд╣реЛред



KeyHandler = { <br/>

// <br/>

blur : function ( ) { <br/>

for ( a in KeyHandler. pressed ) { <br/>

delete KeyHandler. pressed [ a ] ; <br/>

} <br/>

} , <br/>

<br/>

init : function ( ) { <br/>

window. onkeydown = KeyHandler. keyDown ; <br/>

window. onkeyup = KeyHandler. keyUp ; <br/>

window. onblur = KeyHandler. blur ; <br/>

} , <br/>

}






рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред рдЕрдм рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рд╕рднреА рдПрдХ рд╕рд╛рдеред рдПрдХ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рджрдмрд╛рдиреЗ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛ред



PS рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдпрд╣рд╛рдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: http://elhsmart.net.ru/chrome-keyboard.html

рдкреАрдкреАрдПрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╡рд▓ рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг 7.0.505.0 рд╣реИред рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реИ - рд▓рд┐рдЦреЛ, рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред



All Articles