DN_CONTROLINPUT

Место, где разработчики плагинов могут поделиться своим опытом.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

Latest post of the previous page:

Shmuel wrote:Если вызывается DN_CONTROLINPUT, то, по идее, far.InputRecordToName() не должен возвращать nil.
почему?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DN_CONTROLINPUT

Post by Shmuel »

zg wrote:
Shmuel wrote:Если вызывается DN_CONTROLINPUT, то, по идее, far.InputRecordToName() не должен возвращать nil.
почему?
Фар сообщает плагину, что поступил ключ, и в то же время не может преобразовать этот ключ в строку? На мой взгляд, это неправильно. Это же не искуственно заполненный мусором INPUT_RECORD, а реальный ключ, он должен иметь текстовое представление.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DN_CONTROLINPUT

Post by zg »

фар присылает плагинам много не мусорных INPUT_RECORD'ов, которые не может преобразовать в строку. с чего вдруг именно сейчас это стало какой-то проблемой?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DN_CONTROLINPUT

Post by Shmuel »

Не проблема, так не проблема.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Вот же:
zg wrote: исправлять эту магию можно по разному, давайте обсудим.
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DN_CONTROLINPUT

Post by zg »

John Doe wrote:
zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Вот же:
zg wrote: исправлять эту магию можно по разному, давайте обсудим.
как связана магия для обработки нажатия cas и преобразование input_record в строку?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

zg wrote: как связана магия для обработки нажатия cas
А, вот как...
Я почему-то подумал что под магией вы имеете в виду посылку любой ненастоящей записи.

Тогда отвечу иначе:
zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Потому что до сих пор можно было при анализе DN_CONTROLINPUT ограничиваться использованием InputRecordToFarName
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DN_CONTROLINPUT

Post by zg »

John Doe wrote:Потому что до сих пор можно было при анализе DN_CONTROLINPUT ограничиваться использованием InputRecordToFarName
а ProcessEditorInputW никогда нельзя было ограничиваться, и что? вернее ограничиваться и там, и там можно, нужно просто корректно обрабатывать ошибки. то что сейчас есть проблемы с модификаторами, это следствие кривой реализации кривой фичи, призванной в своё время закостылить кривую реализацию другой фичи.

ps: т.е. в первом посте вы хотите, чтобы приходили события, которые не преобразуются в строку, а теперь это для вас проблема.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

zg wrote: а теперь это для вас проблема.
Не проблема, а закономерное пожелание, причём не моё.

P.S.
zg wrote: события, которые не преобразуются в строку
Кому надо (в том числе я) может и без InputRecordToFarName проанализировать. А кому не надо могут просто игнорировать такие события.

Shmuel высказал пожелание об усовершенствовании InputRecordToFarName, мне кажется резонное. Но зачем вы пытаетесь связать это с первым постом темы?
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by John Doe »

Shmuel wrote:В 4319 (по сравнению с 4316) при нажатии одиночных модификаторов (например, Shift) в диалоге, FarInputRecordToName при обработке DN_CONTROLINPUT возвращает FALSE (то-есть, невозможность преобразования).

Code: Select all

                             4316    4319
  ----------------------------------------
  InputRecordToName(param2)│ Shift │ nil  
  param2.EventType         │ 1     │ 1    
  param2.KeyDown           │ true  │ false
  param2.RepeatCount       │ 1     │ 1    
  param2.VirtualKeyCode    │ 16    │ 16   
  param2.VirtualScanCode   │ 42    │ 42   
  param2.UnicodeChar       │       │      
  param2.ControlKeyState   │ 16    │ 32   
Подводя итоги: в актуальной версии фара для для обоих записей FarInputRecordToName возвращает "Shift".
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

Глюки и баги, появившиеся в «ночных сборках»

Post by zg »

John Doe wrote:Подводя итоги: в актуальной версии фара для для обоих записей FarInputRecordToName возвращает "Shift".
а можно код для воспроизведения? а то не должен вроде.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

Code: Select all

 far.InputRecordToName {
  
  EventType         = 1,
  KeyDown           = false,
  RepeatCount       = 1,
  VirtualKeyCode    = 16,
  VirtualScanCode   = 42,
  ControlKeyState   = 32
}
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DN_CONTROLINPUT

Post by zg »

это для второй, для первой-то не возвращает.
и это не пример. пример это:
  1. lua:far.Show(far.InputRecordToName ({EventType=far.Flags.KEY_EVENT,KeyDown=false,RepeatCount=1,VirtualKeyCode=16,VirtualScanCode=42,UnicodeChar=0,ControlKeyState=0}))
и ControlKeyState у вас для отжатия, в принципе, неправильный.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

zg wrote: это для второй, для первой-то не возвращает.
Разве?
zg wrote: и это не пример.
Зато нагляднее вашего.
Для выполнения же достаточно скопировать в буфер, и вставить в командную строку после lua:=
zg wrote: ControlKeyState у вас для отжатия, в принципе, неправильный.
Это почему же?
User avatar
zg
zero-gravity
Posts: 6016
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 185 times
Contact:

DN_CONTROLINPUT

Post by zg »

John Doe wrote:Разве?
я поэтому конкретный пример и просил.
John Doe wrote:Это почему же?
потому:

Code: Select all

11:30:38 KEY_EVENT_RECORD: Up, 1, Vk="VK_SHIFT" [16/0x0010], Scan=0x002A uChar=[U=' ' (0x0000): A=' ' (0x00)]
         Ctrl=0x00000000 (casac - ecns) (Windowed)
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

DN_CONTROLINPUT

Post by John Doe »

zg wrote: потому:
Не понял, что вы хотите этим сказать.
А в примере Shmuel ControlKeyState = 32 обозначает включённый NumLock.
Post Reply

Return to “Разработка плагинов”