Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

issue with Progrommer Dvorak layout #2

Closed
vbauerster opened this issue May 16, 2015 · 7 comments
Closed

issue with Progrommer Dvorak layout #2

vbauerster opened this issue May 16, 2015 · 7 comments
Assignees

Comments

@vbauerster
Copy link

Собрал по инструкции под Mac OS 10.10.3
Пользуюсь раскладкой Programmer Dvorak
При текущей раскладке pd выдает следующий id:
❯ issw
com.apple.keyboardlayout.Programmer Dvorak.keylayout.ProgrammerDvorak

При листинге:
❯ issw -l
com.apple.keylayout.RussianWin
com.apple.CharacterPaletteIM
com.apple.KeyboardViewer
com.apple.PressAndHold
com.apple.keylayout.US
com.apple.keyboardlayout.Programmer Dvorak

Как видно id для раскладки pd отличаются.
Подозреваю, что из-за этого не переключается раскладка в терминальной версии vim с установленным плагином Vim-xkbswitch
С графическим MacVim все работает

@vovkasm
Copy link
Owner

vovkasm commented May 17, 2015

@wbauer, вы можете выбрать этот layout в терминале? К примеру, что в вашей системе вернут команды:

issw 'com.apple.keyboardlayout.Programmer Dvorak'
issw 'com.apple.keyboardlayout.Programmer Dvorak.keylayout.ProgrammerDvorak'

?

Дело в том, что вся эта история с раскладками клавиатуры не такая простая. Программа пытается эмулировать простейшую модель, на которую рассчитывает vim-xkbswitch. В OS X, есть понятие метода ввода и это совсем не раскладка. Как пример, вот, что может получаться:

$ ./Debug/issw -l
com.apple.keylayout.US
com.apple.keylayout.Russian
com.apple.CharacterPaletteIM
com.apple.KeyboardViewer
com.apple.PressAndHold
com.apple.50onPaletteIM
$ ./Debug/issw
com.apple.keylayout.US
$ ./Debug/issw com.apple.KeyboardViewer
com.apple.keylayout.US # <-- выбрали 'com.apple.KeyboardViewer' но показывается экранная клавиатура, а текущая раскладка не меняется

Теоретически это не должно мешать плагину xkbswitch правильно работать, тем более, что как вы говорите, в GUI-версии всё работает корректно. Скорее больше похоже на проблему квотинга (т.к. в ID метода ввода присутствует пробел, кстати, ни в одной родной раскладке на MacOS X я пробелов в ID не обнаружил).

Попробуйте выбрать вашу раскладку с консоли как описано выше. Это может помочь понять в чём именно проблема.

@vovkasm
Copy link
Owner

vovkasm commented May 19, 2015

@wbauer, судя по всему проблема в устройстве MacVim. Дальше теория, точно проверю в выходные когда время появится. Чтобы работало MacOS X API для получения текущего метода ввода, программа должна гонять стандартный цикл GUI приложения и получать оповещение от системы о сменах раскладки, иначе API (TISCopyCurrentKeyboardInputSource) возвращает инициализированное при старте приложения значение.
При работе в GUI-режиме, MacVim этот цикл запускает. При работе в консольном режиме, похоже, что нет... Поэтому возвращается всё время один и тот-же метод ввода.
Это объясняет всё, что происходит:

  • Неправильная работа плагина с issw
  • Переключение c заданными в конфиге языками
  • Работа с библиотекой от @myshov (т.к. эта библиотека просто вызывает консольную утилиту каждый раз)

Так же, вот немного на StackOverflow: http://stackoverflow.com/questions/26024400/osx-cocoa-input-source-detect-change

@vovkasm
Copy link
Owner

vovkasm commented May 24, 2015

@wbauer, проверьте пожалуйста версию 0.3, проблема должна исправиться.

@vovkasm vovkasm self-assigned this May 24, 2015
@vovkasm
Copy link
Owner

vovkasm commented May 30, 2015

I will close the task because the problem should be fixed now and no further responses occur.

@vovkasm vovkasm closed this as completed May 30, 2015
@vbauerster
Copy link
Author

Отвечаю на вопрос от 17 мая:

~/tmp/input-source-switcher/build master
❯ ./issw 'com.apple.keyboardlayout.Programmer Dvorak'
Error: Cant find input source with id=com.apple.keyboardlayout.Programmer Dvorak
Usage: issw [-hlV] []

~/tmp/input-source-switcher/build master
❯ ./issw 'com.apple.keyboardlayout.Programmer Dvorak.keylayout.ProgrammerDvorak'
com.apple.keyboardlayout.Programmer Dvorak.keylayout.ProgrammerDvorak

@vbauerster
Copy link
Author

Подтверждаю с версией 0.3, работает и с консольной версией MacVim

@vovkasm
Copy link
Owner

vovkasm commented Jun 14, 2015

@wbauer

Подтверждаю с версией 0.3, работает и с консольной версией MacVim

Спасибо! Значит баг действительно состоял в особенностях работы API выбора источников ввода от Apple.

И из предидущего комментария следует, что выбор работает, раскладка Programmer Dvorak выбирается по id=com.apple.keyboardlayout.Programmer Dvorak.keylayout.ProgrammerDvorak

Большое спасибо за то, что потратили время на описание ошибки и проверку!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants