change keyboard layout with javascript

19,246

Solution 1

You won't be able to change the keyboard layout using JS, but you can capture the keydown event and replace the character with something like this:

http://jsfiddle.net/SxdKZ/

$('textarea').on('keydown', function(e){

   console.log(e.keyCode); 
    if( e.keyCode == 90 ){
      e.preventDefault();
      $(this).append('y').focus();
    }
    if( e.keyCode == 89 ){
      e.preventDefault();
      $(this).append('z').focus();
    }

});​

Solution 2

I have made the default language of all the input text fields to Arabic. If you want to use English language for any text field, you will have to assign a class "en" to that particular text field.

Just copy the following code and also download the js file from http://farsitype.ir/FarsiType.js

/******** Make all the input text fields arabic ******/
$('input[type=text]').each(function(index, value){
 if (value.className != 'en') {
  $(this).attr('Lang','fa');
 }
});
Share:
19,246
hd.
Author by

hd.

Updated on June 15, 2022

Comments

  • hd.
    hd. almost 2 years

    I have a html form. Users can fill in the form in both english and persian languages. but I have a captcha input that users should fill it in english.

    If the user's keyboard layout is persian what is typed in this field should change to english so I need some coded that change the keyboard layout on focusing on this input text.

    Is it possbile to change keyboard layout with javascript??

    • Andreas Wong
      Andreas Wong almost 12 years
      Yes you can, capture each keypress and check e.which then replace the characters to correspond to the new keyboard layout you are targetting.
    • Ramesh
      Ramesh almost 12 years
      You cannot detect / change the key board layout through javascript.
    • hd.
      hd. almost 12 years
      I have a big problem, there are some different persian keyboard layout in windows and in linux and this complicates character replacement. :(
    • nnnnnn
      nnnnnn almost 12 years
      I'm curious: what do Persian users usually do with English language websites that use captchas? I would think it is up to the individual user to switch as needed (in Windows this can be done easily via the language bar that can be displayed on the side of the taskbar).
    • hd.
      hd. almost 12 years
      They press Alt+Shift to change the system keyboard layout to english and then enter captcha,but I want to do this switch by sript not by hand !
  • hd.
    hd. almost 12 years
    thank you but there are some different persian keyboard layout in windows and in linux so the keyCodes aren't the same in windows and linux to replace theme easily like your code :(
  • gherkins
    gherkins almost 12 years
    well... you could detect the OS with navigator.platform:) if it's just for a capture, something like mottie.github.com/Keyboard might a an easier solution?
  • BarryCap
    BarryCap almost 3 years
    e.keyCode is now deprecated. Other KeyboardEvent properties like KeyboardEvent.code replaced it. Check this link for more information.