DN_CONTROLINPUT

Место, где разработчики плагинов могут поделиться своим опытом.
Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DN_CONTROLINPUT

Post by Shmuel » Fri 20 Mar, 2015 14:57

Latest post of the previous page:

zg wrote:
Shmuel wrote:Если вызывается DN_CONTROLINPUT, то, по идее, far.InputRecordToName() не должен возвращать nil.
почему?
Фар сообщает плагину, что поступил ключ, и в то же время не может преобразовать этот ключ в строку? На мой взгляд, это неправильно. Это же не искуственно заполненный мусором INPUT_RECORD, а реальный ключ, он должен иметь текстовое представление.

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Fri 20 Mar, 2015 15:09

фар присылает плагинам много не мусорных INPUT_RECORD'ов, которые не может преобразовать в строку. с чего вдруг именно сейчас это стало какой-то проблемой?

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

DN_CONTROLINPUT

Post by Shmuel » Fri 20 Mar, 2015 15:12

Не проблема, так не проблема.

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Fri 20 Mar, 2015 15:15

zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Вот же:
zg wrote: исправлять эту магию можно по разному, давайте обсудим.

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Fri 20 Mar, 2015 15:19

John Doe wrote:
zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Вот же:
zg wrote: исправлять эту магию можно по разному, давайте обсудим.
как связана магия для обработки нажатия cas и преобразование input_record в строку?

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Fri 20 Mar, 2015 15:26

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

Тогда отвечу иначе:
zg wrote: с чего вдруг именно сейчас это стало какой-то проблемой?
Потому что до сих пор можно было при анализе DN_CONTROLINPUT ограничиваться использованием InputRecordToFarName

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Fri 20 Mar, 2015 15:43

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

ps: т.е. в первом посте вы хотите, чтобы приходили события, которые не преобразуются в строку, а теперь это для вас проблема.

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Fri 20 Mar, 2015 15:50

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

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

Shmuel высказал пожелание об усовершенствовании InputRecordToFarName, мне кажется резонное. Но зачем вы пытаетесь связать это с первым постом темы?

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

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

Post by John Doe » Thu 23 Apr, 2015 09:12

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: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

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

Post by zg » Thu 23 Apr, 2015 09:25

John Doe wrote:Подводя итоги: в актуальной версии фара для для обоих записей FarInputRecordToName возвращает "Shift".
а можно код для воспроизведения? а то не должен вроде.

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 09:28

Code: Select all

 far.InputRecordToName {
  
  EventType         = 1,
  KeyDown           = false,
  RepeatCount       = 1,
  VirtualKeyCode    = 16,
  VirtualScanCode   = 42,
  ControlKeyState   = 32
}

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 09:33

это для второй, для первой-то не возвращает.
и это не пример. пример это:
  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: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 09:45

zg wrote: это для второй, для первой-то не возвращает.
Разве?
zg wrote: и это не пример.
Зато нагляднее вашего.
Для выполнения же достаточно скопировать в буфер, и вставить в командную строку после lua:=
zg wrote: ControlKeyState у вас для отжатия, в принципе, неправильный.
Это почему же?

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 09:54

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: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 09:57

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

User avatar
zg
zero-gravity
Posts: 5261
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 43 times
Contact:

DN_CONTROLINPUT

Post by zg » Thu 23 Apr, 2015 10:01

да, флаги перепутал. работа по нажатию в любом случае — ошибка.

User avatar
John Doe
Бюрократ
Posts: 11215
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 14 times
Been thanked: 80 times

DN_CONTROLINPUT

Post by John Doe » Thu 23 Apr, 2015 10:05

zg wrote: работа по нажатию в любом случае — ошибка.
Не понял.
В обсуждаемых примерах ошибки не вижу.

Post Reply

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