How to automatically change keyboard layout on switch to vim normal-mode?

keyboard-layout, vim

Solution

Looks like, that cross-platform solution doesn't exist... So, under KDE I use the following:

function! SetUsLayout()
  silent !qdbus org.kde.keyboard /Layouts setLayout us > /dev/null
endfunction

autocmd InsertLeave * call SetUsLayout()

Problem

Sometimes I use vim to write non-US text, and when I wanna use any command in normal mode, I need to change layout to US. It's possible to do that automatically? PS. I can do mapping like this, but in this case command looks like :ц instead :w - not pretty and typo-risk. Update I don't want to use keymap option, because I prefer switch languages by CapsLock. I've try to write autocmd for InsertLeave event, but failed... Update 2 Probably anybody know, why the following not work? ``` function SetUsLayout() !setxkbmap us,ru endfunction autocmd InsertLeave * call SetUsLayout() ```

Original source

Related problems