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

не получается заставить работать на Mac OS 10.10.2 #17

Open
ghost355 opened this issue Mar 19, 2015 · 35 comments

Comments

@ghost355
Copy link

установил Input Source Switcher - проверил, работает - issw в терминале переключает язык.
прописал в .vimrc
let g:XkbSwitchEnabled = 1
let g:XkbSwitchLib = '/usr/local/lib/libInputSourceSwitcher.dylib'

запустил vim - не работает авто переключение на US раскладку.
Из всех протестированных вариантов сработало только
let g:XkbSwitchILayout = 'ru'
При входе в vim в инсерт режим - включался русский, при выходе по Esc включался английский, при входе обратно в инсерт - опять русский.
Убираю эту строчку, и ничего не работает - автопереключение не срабатывает.

если оставляю вышесказанную строчку и добавляю
let g:XkbSwitchNLayout = 'us'
то при переключении в инсерт - русский переключается, и при выходе остается. Если включить принудительно английский, то при следующем заходе в инсерт на русский уже не переключается.

Хотелось бы, чтобы заработало так - при нормал режиме всегда был английский, при инсерт режиме, тот язык, который был включен последним в этом режиме.

Спасибо.

@lyokha
Copy link
Owner

lyokha commented Mar 19, 2015

Я, к сожалению, вряд ли смогу вам помочь, у меня нет мака и я не смогу все это проверить. Попробуйте обратиться к автору http://github.com/vovkasm/input-source-switcher

@ghost355
Copy link
Author

Спасибо.
Так вроде input-source-switcher как раз таки и работает :)

Отправлено с iPhone

19 марта 2015 г., в 12:57, Alexey Radkov notifications@github.com написал(а):

Я, к сожалению, вряд ли смогу вам помочь, у меня нет мака и я не смогу все это проверить. Попробуйте обратиться к автору http://github.com/vovkasm/input-source-switcher


Reply to this email directly or view it on GitHub.

@lyokha
Copy link
Owner

lyokha commented Mar 19, 2015

Я понимаю, но может он что-нибудь подскажет, я то не могу это воспроизвести.

@abcdw
Copy link

abcdw commented Mar 19, 2015

Мне тоже интересно, если получится заставить работать под маком, то отпишитесь пожалуйста как.

@lyokha
Copy link
Owner

lyokha commented Mar 19, 2015

@ghost355 проверьте также, что issw не просто правильно переключает раскладку, но и правильно репортит текущую

@abcdw
Copy link

abcdw commented Mar 19, 2015

Взял у @myshov xkbswitch скомпиленный под мак и положил в /usr/local/bin/ Все работает.

@lyokha
Copy link
Owner

lyokha commented Mar 19, 2015

Круто, может тогда его реализацию упомянуть в доке? Я в этой ситуации действую вслепую - у меня не на чем проверить реализации, поэтому приходится доверять авторам.

@abcdw
Copy link

abcdw commented Mar 19, 2015

Давайте, если автор в ближайшие пару дней не откликнется, то форкну его репозитории, допишу нормальное README и отпишусь в местное README.

@lyokha
Copy link
Owner

lyokha commented Mar 19, 2015

Кстати, его сишный интерфейс надо будет поправить: он течет из-за malloc(). Там вполне статического буфера хватит.

@ghost355
Copy link
Author

спасибо, xkbswitch нормально работает- потестирую в процессе работы, пока основную задачу выполняет
единственно, переключение не моментально, а слегка задержка, причем при вход в инсерт моментально, а при выходе по Esc - задержка почти секунда

@lyokha
Copy link
Owner

lyokha commented Mar 21, 2015

@ghost355 Возможно это задержка отрисовки в трее, у меня тоже как бы медленно переключает в linux/xneur - флаг перерисовывается через почти секунду, а на самом деле переключение раскладки происходит мгновенно

@ghost355
Copy link
Author

@lyokha проверил если сразу после Esc нажать команду то первое нажатие не срабатывает, только второе, ну или чуть подождать.. есть какая то пауза, это не критично, но при быстрой работе может и будет раздражать, пока вроде все ок

@ghost355
Copy link
Author

а как-то можно заставить работать, например для замены - клавиши 'r' - при этом же режим Insert не включается?

@abcdw
Copy link

abcdw commented Mar 22, 2015

Почему то был уверен, что создал ишью на эту тему. Да, было бы очень круто, если в Replace mode расскалдка была как и в insert mode. Но давайте обсуждение этого все же вынесем в отдельное ишью.

@lyokha
Copy link
Owner

lyokha commented Mar 22, 2015

Режим Replace Mode (который включается большой R) поддерживается, замена символов, которая включается маленькой r - нет. Во втором случае трудно поймать соответствующее событие: если переходы между Insert / Normal / Replace режимами являются событиями с точки зрения API vim, то включение замены символа - нет. Причем, с помощью маппинга еще можно заставить язык переключиться после нажатия r, а вот как вернуть его обратно после введенной замены - неясно.

@lyokha
Copy link
Owner

lyokha commented Mar 22, 2015

@ghost355 Может у вас какой-нибудь insert mapping установлен, начинающийся с <Esc> или, что то же самое, с <C-[>, проверить это можно введя команду :imap <Esc>. Если это действительно так, то у вас будет задержка выхода из режима ввода вообще (а не только переключения раскладки), равная timeoutlen (по умолчанию одна секунда, см. :help timeoutlen). И, если это так, то вам лучше избавиться от такого маппинга, он вреден сам по себе.

@ghost355
Copy link
Author

:map сообщает- "no imap found'

@vbauerster
Copy link
Contributor

У меня не работает только под терминальной версией vim, c MacVim все переключается.
MacVim устанавливал через Homebrew с ключем --override-system-vim
Так же заметил что issw выдает разные id для раскладки Programmer Dvorak. Проблема описана здесь

@abcdw
Copy link

abcdw commented May 16, 2015

@ghost355 Задержка с Escape может быть из-за tmux'a.
Вот решение: set -s escape-time 0

@wbauer Попробуй https://github.com/myshov/libxkbswitch-macosx работает вроде неплохо.

@vbauerster
Copy link
Contributor

Да с Xkbswitch-macosx все работает!

@vbauerster
Copy link
Contributor

Предлагаю Лёхе упомянуть об альтернативе в README.

@lyokha
Copy link
Owner

lyokha commented May 16, 2015

@wbauer Я уже предлагал сделать ссылку на эту реализацию, только ребята собирались его немного улучшить (устранить утечки памяти и т.п.), пока от них нет вестей. В любом случае я сделаю это, если решение действительно рабочее, и, похоже, это действительно так.

@myshov
Copy link
Contributor

myshov commented May 17, 2015

@wbauer Пофиксил интерфейс. Проверил работает в vim 7.4.712, Mac OS X 10.10. Советую обновиться :)
@lyokha В моей реализации, конечно, есть что улучшить, например, вынести проект в brew и перейти на cmake, но так как и без этого все ок можно уже добавлять в Readme. Все улучшения это по сути usability features так сказать ими займусь позже :)

@lyokha
Copy link
Owner

lyokha commented May 18, 2015

@myshov Ок, тогда я добавлю ссылку на твою реализацию сегодня-завтра.

lyokha added a commit that referenced this issue May 18, 2015
@myshov
Copy link
Contributor

myshov commented May 18, 2015

@lyokha ok, я переписал readme, поставил ссылку на vim-xkbswitch

@vovkasm
Copy link
Contributor

vovkasm commented May 24, 2015

Всем привет!
@ghost355, если можете, проверьте пожалуйста версию input-source-switcher 0.3, теперь должно работать и в консольной версии MacVim.

Проблема была в том, что MacOS X обновляет источники ввода для процесса внутри CFRunLoop из CoreFoundation, а поскольку не-GUI версия vim никаких циклов из оси не запускает, то и источники ввода не обновлялись.

@ghost355
Copy link
Author

проверил input-source-switcher 0.3 - вроде работает :)
при выходе из i-режима русский на английский - задержка секунды две, но, если выход двойным ESC - то переключение сразу же

set timeoutlen=1000 ttimeoutlen=0 вот это сработало - переключение из i-режима моментальное

не понятно почему, но set -s escape-time 0 не воспринимается vim 'ом - говорит неизвестная опция Версия 7.4.826

Спасибо!

@abcdw
Copy link

abcdw commented Aug 30, 2015

set -s escape-time 0 - это конфигурация для tmux, а не для vim.

сб, 29 авг. 2015, 22:52, ghost355 notifications@github.com:

проверил input-source-switcher 0.3 - вроде работает :)
при выходе из i-режима русский на английский - задержка секунды две, но,
если выход двойным ESC - то переключение сразу же

set timeoutlen=1000 ttimeoutlen=0 вот это сработало - переключение из
i-режима моментальное

не понятно почему, но set -s escape-time 0 не воспринимается vim 'ом -
говорит неизвестная опция Версия 7.4.826

Спасибо!


Reply to this email directly or view it on GitHub
#17 (comment)
.

@ghost355
Copy link
Author

ghost355 commented Sep 3, 2015

<--set -s escape-time 0 - это конфигурация для tmux, а не для vim.-->

кто ж знал то :) теперь буду знать

@vlad2135
Copy link

Парни, есть кто живой? У меня сейчас, в 2021м, на big sur, не работает это автопереключение на английский ни с libInputSourceSwitcher.dylib ни с libxkbswitch.dylib :(

@vovkasm
Copy link
Contributor

vovkasm commented May 24, 2021

@vlad2135 Я не копался подробно, но предполагаю, что Apple окончательно выпилили/доломали Carbon api и больше внешние приложения не могут сами управлять текущей раскладкой, только система. Если это не так и есть альтернативные api, то буду рад услышать про них и обязательно переведу на них input source switcher ;-)

@vlad2135
Copy link

@vovkasm хм. Из консоли и issw и xkbswitch раскладку переключают. А вот в виме никакой реакции у меня не происходит. В vim 8.2.2029 и в MacVim 8.2.2681.

Что это означает? Что Carbon API работает успешно, а я как-то накосячил со сборкой либ и/или их настройкой в виме?

@vovkasm
Copy link
Contributor

vovkasm commented May 24, 2021

@vlad2135 Это означает, что Carbon API ещё работают, да. Проблема где-то в способе подключения плагинов. Надо смотреть и изучать.

А правильно я понял, что не работает даже vim, запущенный в консоли в текстовом режиме?

@vlad2135
Copy link

vlad2135 commented May 24, 2021

Да, даже в консоли в текстовом режиме.
Настройка такая. Весь файл ~/.vimrc:

let g:XkbSwitchEnabled = 1
let g:XkbSwitchLib = '/usr/local/lib/libInputSourceSwitcher.dylib'

терминал iterm2, zsh.
редактирую test.txt, в input mode включаю русский, нажимаю esc - раскладка остаётся русской.

Комментарии топикстартера про tmux я не понял, т.к. у меня этой софтины вообще нет на маке.

@mario-amazing
Copy link

Работает с таким конфигом:

  # vim-xkbswitch
  curl -fLOo /usr/local/bin https://raw.githubusercontent.com/myshov/libxkbswitch-macosx/master/bin/libxkbswitch.dylib
  curl -fLOo /usr/local/bin https://raw.githubusercontent.com/myshov/xkbswitch-macosx/master/bin/xkbswitch
  chmod +x /usr/local/bin/xkbswitch

Первая ссылка описана в README.
vimrc :

let g:XkbSwitchEnabled = 1
let g:XkbSwitchLib = '/usr/local/bin/libxkbswitch.dylib' 

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

No branches or pull requests

8 participants