Клуб Punto Switcher

Проблемы с переключением в Google Chrome

8 июня 2011, 14:40

Здравствуйте! 

Иногда (подчеркиваю, иногда) в момент переключения раскладок Хром зависает. После перезапуска Хрома, переключение срабатывает нормально. Конкретной закономерности, когда возникает проблема, не выявил. Возникает только в Хроме. В других приложениях не замечал. 

У меня установлена Windows 7 32-битная, Punto Switcher Версия 3.2.2 сборка 45, Google Chrome 11.0.696.71, KIS 11.0.1.400

19 комментариев
Подписаться на комментарии к посту

У меня такая же фигня в  64-разрядной Win7

 

На самом деле таких программ как минимум 3:

1. Outlook:

http://clubs.ya.ru/punto/replies.xml?item_no=6908

2. TrueLaunchBar (TLB) в функции поиска по меню

3. В Хроме

В Хроме я ещё не сталкивался, но думаю, что закономерность уже уловил.

Дело в том, что зависание происходит, если есть дополнительный поток обрабатывающий ввод. Например в оутглюке поток синхронизирует заголовок окна с темой письма.

В TLB дополнительный поток выполняет поиск введёного текста.

В Хроме уже месяца 4 аналогичный поток отвечает за функцию "Живой поиск" в адресной строке (у меня он выключен). Но даже когда он выключен, происходит поиск ранее посещенных страниц, избранного и т.п.

Каким-то образом хук Пунто Свитчера блокирует работу дополнительного потока, который к тому времени уже заблокировал данные связанные с полем ввода. В результате основной поток висит в ожидании своих данных.

Возможно я не прав, но очень похоже на правду.

 

Забыл добавить, зависание происходит в тот момент, когда удаляется последний символ из поля ввода.

Спасибо Наиль! Важная подсказка, насчет последнего символа.

 

У меня Хром не зависает, но нет возможности переключить язык(не реайгирует на переключение). В трее указанно, что сейчас русский набираю при этом на английском. Глюк этот только в текстовых полях на страничках, т.е. в адрессной строке такого нет. За-то намертво зависает skype при любой попытке переключения языка, раньше  точно такое же поведение было у Yahoo messanger.

 Windows 7 64;  punto 3.2.3; Хром  последня бэта, skype последная стабильная и бета.

 

у меня макбук установлена MacOSX 10.6.7

Punto Switcher 1.1.0 сборка 350

Google Chrome 12.0.742.91 beta

 

раскладка EN начинаю печатать по русски, в итоге автоматическая раскладка срабатывает, но постоянно ошибается, а именно, получается:

круг = гкру

программа = опрграмма

издевается = пробел издевается

проблема =  опрблема

Подскажите, пожалуйста, воспроизводится ли проблема в Safari?

Уточните.

Происходит это в адресной строке или в любом поле ввода?

Включен ли "Живой поиск"? Если его поменять (вкл на выкл и наоборот), сохраняется ли проблема?

Да про эту проблему отдельную ветку создавали разработчики дружно проигнорировали! В итоге все пользователи хрома на мак оси уже вечность мучаются с этим. Отвечая на вопрос: глючит только в хроме разных версий под мак ось и не важно включин ли живой поиск или нет. Как пользователь уже не надеюсь что пофиксят этот баг, да и вообще обновлений уже помня пунто.

Про "только в хроме" это сразу было понятно.

А вот происходит это на странице или только в строке адреса - не ясно.

везде, и в адресной строке и в любых полях для ввода сайтов

 

К сожалению не знаком c работой Пунто в макоси.

Могу только предпологать.

Хром - особенная программа. За получение нажатых клавиш отвечает один процесс, а за обработку полученых от пользователя нажатий отвечает другой. И у каждого из этих процессов имеется хук Punto.

Исходя из этого этого, получаем две возможные причины ошибки.

Первая. Если вторичный процесс получает от родительского процесса информацию о нажатой клавиши через тот же механизм, через который получает родительский от ОС, то каждое нажатие обрабатывается дважды. А при автопереключении каждый из процессов пытается эмитировать нажатие клавиш. Этим можно было бы объяснить, что буквы перемешываются. Такую ошибку исправить крайне сложно, т.к. пришлось бы учитывать кто в Хроме главный, т.е. затачивать работу конкретно под Хром.

Вероятность, что эта причина ошибки мала, т.к. при таком сценарии буквы не только перемешывались бы, но и дублировались.

Есть вторая возможная причина. Я склоняюсь к ней.

Эмуляция нажатия проходит такой путь:

Punto ->1-> ОС ->2-> Родительский процесс Хрома ->3-> Дочерний процесс Хрома.

На участках "->1->" и "->2->" ошибки быть не может, иначе это проявлялось бы во всех программах. Чем отличается нажатие клавиш пользователем и "эмулятором пользователя"? Только скоростью - эмулятор "жмёт" клавиши мгновенно. Отсюда я делаю вывод, что передача информации о нажатиях передаются ассинхронно. Т.е. каждая следующая клавиша передаётся до того, как будет обработана предыдущая. По сути это баг Хрома. У разработчиков Punto есть два пути либо подправить межпроцессорное взаимодействие в исходниках Хромиума, что в принципе не реально, либо добавить возможность замедления эмуляции нажатий в программах исключениях, а это можно сделать за 1 день.

 

 

Учитывая, что все разработчики браузеров (кроме Microsoft) признали, что выделение каждой страницы в отдельный процесс в Хром – интересно и сказали, что со временем реализуют в своих продуктах. Думаю, что проблема будет становиться всё актуальнее.

Насколько я помню, IE раньше чем Хром стал многопроцессным. Просто родительский процесс в ИЕ является менеджером окон. Дочерние процессы рисуют свои окна на поверхности родительского. Поэтому события клавиатуры попадают напрямую окну дочернего процесса минуя посредников. С точки зрения Punto ни чего не поменялось.

Думаю, что выделение отдельного окна в отдельный процесс в технологиях вроде MDI возможен на уровне операционных систем. И тогда проблема может встать остро. Но пока нужно учесть хотя бы браузеры.

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

C Хромом еще другая проблема наблюдается: в адресной строке, когда начинаю набирать адрес "pr" в русской раскладке он автоматически конвертируется в "зpr". После набора буквы "з" всплывает подсказка поиска (в моем случае - "за рулем") нажимаю следующую букву "к" - срабатывает пунто и в адресной строке получается три символа - "зpr"

Глючит так не только в хроме - в Опере тоже. Начиная с 10х версий и до последней 11.50 (раньше не знаю - не использовал Punto Switcher).
OSX 10.6.0 - 10.6.8

Та же ерунда. Win7 32

Google Chrome 39.0.2171.71 m

Punto Switcher 3.3.1

При попытке исправить напечатанное в неверной раскладке сразу же зависает.

 

Ничего не поменялось:

Win7 64

Punto 3.4.9

Chrome 43.0.2357.134