Skip to navigation
How to switch keyboard layout between Russian and English using JavaScript
04.08.23
```javascript 'use strict'; var map = { ru: [ "й", "ц", "у", "к", "е", "н", "г", "ш", "щ", "з", "х", "ъ", "ф", "ы", "в", "а", "п", "р", "о", "л", "д", "ж", "э", "я", "ч", "с", "м", "и", "т", "ь", "б", "ю" ], en: [ "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "[", "]", "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "z", "x", "c", "v", "b", "n", "m", ",", "." ] }; var ru = document.getElementById( 'ru' ); var en = document.getElementById( 'en' ); ru.__lang = [ 'ru', 'en' ]; en.__lang = [ 'en', 'ru' ]; ru.addEventListener( 'keydown', setInputText ); en.addEventListener( 'keydown', setInputText ); function setInputText ( e ) { var i, k = e.key, start = this.selectionStart, end = this.selectionEnd; if ( ( i = map[this.__lang[1]].indexOf( k ) ) !== -1 ) { e.preventDefault(); this.setRangeText( map[this.__lang[0]][i], start, end ); this.setSelectionRange( start + 1, start + 1 ); } else if ( ( i = map[this.__lang[1]].indexOf( k.toLowerCase() ) ) !== -1 ) { e.preventDefault(); this.setRangeText( map[this.__lang[0]][i].toUpperCase(), start, end ); this.setSelectionRange( start + 1, start + 1 ); } } ``` ```html
keyboard-layout
Keyboard layout
ru
en
```
https://ru.stackoverflow.com/questions/948326
Reply
Anonymous
Information Epoch 1745452057
Use software leverage to your advantage.
Home
Notebook
Contact us