Выделение текста

Столкнулись с проблемой в использовании Far? Здесь можно получить помощь.
Post Reply
droll
Posts: 2
Joined: Sun 03 Aug, 2008 14:34

Выделение текста

Post by droll »

Странно работает выделение, поиском похожих проблем не нашел.

Странность заключается в том, что зажав Shift и зажав стрелку (например вправо), выделяется ~30 символов, после чего выделение снимается и начинается с нового места (~30 символа). Потом выделяется еще ~30 и опять выделении снимается, и так далее. Одно такое выделении занимает примерно одну секунду.
Также, в связи с этим, невозможно зажав Shift и стрелку выделить строку, потом нажать влево. Выделение начинается заново с места курсора.

OS: Windows XP SP3
Far: 1.70 build 2087, из плагинов только Colorer, но его отключение не помогает.
Проблема не связана с постоянными блоками и т.д., проявляется только в FAR, в остальных программах такого нет.
User avatar
HaRT
Moderator
Posts: 10529
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 201 times
Been thanked: 334 times

Re: Выделение текста

Post by HaRT »

droll
Во-первых, надо бы проверить на свежей общедоступной версии, например, 2411+.
Во-вторых, очень похоже, что какая-то внешняя прога гадит во входную очередь событий консольного окна.
Фар есть инструмент, а не нянька. © 2009 DrKnS
droll
Posts: 2
Joined: Sun 03 Aug, 2008 14:34

Re: Выделение текста

Post by droll »

HaRT wrote:Во-вторых, очень похоже, что какая-то внешняя прога гадит во входную очередь событий консольного окна.
Спасибо, именно так, только не прога - а сам ноут посылал E00D каждую секунду. :shock:
Сбило с толку что это только в Far происходило.
evs
Posts: 1
Joined: Sun 21 Sep, 2014 13:31

Выделение блоков в редакторе

Post by evs »

Не могу понять, что изменилось в новых версиях с выделением блоков с в редакторе с помощью клавиш Shift-Arrows. При нажатии Shift-стрелка вправо выделяется один символ, при повторном нажатии этой комбинации, выделяется следующий символ, но выделение с предыдущего символа пропадает. То же самое с выделением строк: возможно выделить только одну строку, потому, что при попытке выделить следующую строку нажатием Shift-стрелка вниз, предыдущее выделение исчезает.
User avatar
zg
zero-gravity
Posts: 5971
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 175 times
Contact:

Re: Выделение блоков в редакторе

Post by zg »

вам сюда.
Decker
Posts: 5
Joined: Sun 06 Dec, 2015 00:00
Been thanked: 1 time

Выделение текста

Post by Decker »

Добрый день всем. Аналогичная ситуация на одном из ноутбуков (сборки Far'а пробовал разные и стабильные и night), при попытке выделения текста в редакторе с помощью Shift + стрелки выделение сбрасывается. Т.е. выделяется только определенное количество символов, которые следуют за курсором, т.е. ровно то, что и описывал топикстартер. В связи с чем вопрос - как / чем отследить что посылается в очередь консольного окна и как избавиться от этого? Советы, предложения, комментарии приветствуются ... При этом на другом ПК в тех же сборках Far подобная проблема не наблюдается.
Decker
Posts: 5
Joined: Sun 06 Dec, 2015 00:00
Been thanked: 1 time

Выделение текста

Post by Decker »

p.s. Заметил интересную особенность, если при выделении использовать Shift + стрелки основной клавиатуры ноутбука - то нормально выделить текст не получается. Однако, если нажать Num Lock и использовать стрелки на дополнительной клавиатуре - все работает. Т.е. Shift + стрелки на доп. клавиатуре работают превосходно. Может быть данную проблему можно как-то исправить программно? Например поставив какой-нибудь дополнительный плагин, или пересобрав один из модулей, чтобы Far игнорировал "лишние сообщения". Единственное надо правда разобраться что именно посылается в окно в моем случае (как, я пока не придумал).
Maximus5
Posts: 3295
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 10 times
Contact:

Выделение текста

Post by Maximus5 »

Например, с помощью KeyEvents.
Decker
Posts: 5
Joined: Sun 06 Dec, 2015 00:00
Been thanked: 1 time

Выделение текста

Post by Decker »

Maximus5 wrote: Например, с помощью KeyEvents.
Спасибо за быстрый ответ, честно говоря не ожидал. Итак, что удалось выяснить. Вот так выглядит нажатие и отпускание стрелки "Вниз":
Здесь все нормально. Аналогичную ситуацию имеем и когда нажимаем стрелку "Внизу" на дополнительной клавиатуре. Однако, при одновременном нажатии Shift + Стрелка "Вниз" на основной клавиатуре в событиях виден какой-то мусор:

Как будто мы нажали и не отпустили Vk="VK_????" [255/0x00FF]. Видимо на это так и реагирует Far, не давая выделить текст. Теперь назревает другой вопрос, каким образом можно заставить редактор Far'а игнорировать это событие.

p.s. Спасибо за помощь ...
Decker
Posts: 5
Joined: Sun 06 Dec, 2015 00:00
Been thanked: 1 time

Выделение текста

Post by Decker »

Никогда не думал что буду собирать Far из исходников ... однако сейчас ради интереса взял последнюю версию из SVN'а и к моему удивлению все достаточно быстро собралось (отдельное спасибо команде разработчиков за build.bat и сборку в 1 клик), теперь осталось разобраться где начинается разбор очереди сообщений и сделать маленький фикс для игнорирования [255/0x00FF]. Если кто-то подскажет в какую сторону смотреть - буду крайне признателен. До этого исходников Far'а не видел в глаза, поэтому сам я видимо искать буду долго.
Decker
Posts: 5
Joined: Sun 06 Dec, 2015 00:00
Been thanked: 1 time

Выделение текста

Post by Decker »

Всё. Разобрался. Возможно кому-то будет полезным. "Корень" проблемы крылся в keyboard.cpp ... было:

Code: Select all

		if (!rec->Event.KeyEvent.bKeyDown && (CtrlState&(ENHANCED_KEY|NUMLOCK_ON)))
			return Modif|(KEY_VK_0xFF_BEGIN+ScanCode); 
		return KEY_IDLE;
Стало:

Code: Select all

	        if (!(CtrlState & SHIFT_PRESSED)) { // [+] Decker
		if (!rec->Event.KeyEvent.bKeyDown && (CtrlState&(ENHANCED_KEY|NUMLOCK_ON)))
			return Modif|(KEY_VK_0xFF_BEGIN+ScanCode); } 

		return KEY_IDLE;
Т.е. при нажатом Shift'е мы просто игнорируем поступающее непонятное нажатие. Насколько это решение корректно - другой вопрос, но оно рабочее.
Post Reply

Return to “Нужна помощь”