[13:52:29] <vm03>  привет всем!
 [13:53:12] <vm03>  https://wikidevi.com/wiki/MQmaker_WiTi_Board
 [14:18:32] <zombah>  добрый день всем
 [14:32:34] <stuw>  vm03: заманчивая штука )
 [14:32:49] <stuw>  zombah: ну че как? :) будем пилить эвенты дальше?
 [14:33:22] <vm03>  zombah‎, привет!
 [14:33:58] <zombah>  stuw: vm03: привет
 [14:34:03] <zombah>  stuw: конечно будем
 [14:34:31] <vm03>  stuw‎, вот только не нашел sata насколько быстрый там, а так очень интересно и вроде как все драйвера открыты
 [14:34:35] <zombah>  stuw: я вчера пытался вспомнить что там андроиду нужно вообще чтобы их обрабатывать, но уверенной инфо не нашел
 [14:34:58] <stuw>  zombah: powerbtnd - судя по коду, он слушает максимум 3 девайса, имя которых начинается с "power key" (или NVEC power button)
 [14:35:57] <stuw>  когда получает событие отпускания KEY_POWER, то эмулирует нажатие KEY_POWER, паузу 2 сек, отпускание KEY_POWER. Шлет новые события в /dev/uinput
 [14:36:28] <stuw>  можно в конфиге настроить, чтобы по двойному клику, а не одинарному, эмулировал событие
 [14:36:33] <zombah>  stuw: ну powerbtnd нормально вызивает меню выключения
 [14:36:44] <stuw>  что такое /dev/uinput - хз
 [14:36:55] <zombah>  stuw: но если можно без него обоитись такой вариант предпочтительней
 [14:37:08] <stuw>  а откуда powerbtnd взялся ?
 [14:37:30] <zombah>  stuw: я его добавил когда с 3.1 не было вариантов долгое нажатие сделать
 [14:37:47] <zombah>  stuw: он из android-x86 т.к. там писюки
 [14:39:47] <zombah>  сейчас я его отключил пока чтобы попробовать без него
 [14:40:22] <stuw>  у нас на нажатие и быстрое отпускание кнопки питания генерится одно событие
 [14:40:50] <stuw>  поэтому нам скорее всего понадобится этот демон (по крайней мере на первый парах), ибо в ядре слипы вставлять не хочется
 [14:40:55] <zombah>  stuw: быстро нажатие это сон, powerbtnd это не делает он только меню выключения
 [14:41:40] <zombah>  stuw: аутентичное поведение андроида, короткое нажатие - сон, длинное - меню выключения.
 [14:42:21] <zombah>  stuw: раньше у нас с 3.1 было только короткое, powerbtnd из него эмулировал длинное для вызова меню
 [14:42:41] <stuw>  на долгое нажатие у нас тоже одно событие (это событие в тестовом ядре в драйвере клавы) - можно судить по количеству сообщение "kbd varsize msg" на нажатие
 [14:43:08] <zombah>  хм
 [14:43:14] <stuw>  ага
 [14:43:24] <zombah>  надо найти код от другого девайса посмотреть как там это сделано
 [14:43:26] <stuw>  у нас нет отдельных событий на нажатие и отпускание этой кнопки
 [14:43:37] <zombah>  я вроде у grouper находил, надо вспомнить
 [14:44:07] <zombah>  нехсус 7 который
 [14:44:16] <stuw>  на короткое нажате-отпускание единичное событие, на длинное - другое единичное событие
 [14:45:24] <stuw>  мы в драйвере сами шлем сначала нажатие кнопки, потом сразу отпускание кнопки. Для длинного нажатия мы можем слать KEY_POWER, для короткого KEY_SLEEP
 [14:45:26] <zombah>  stuw: а можно их разнести на разные input/event девайсы? тогда powerbtnd может перехватывать только длинное
 [14:45:49] <stuw>  zombah: да, сейчас это на разных девайсах сделано
 [14:46:11] <stuw>  только я, возможно, накосячил с объявлением девайса для короткого нажатия
 [14:46:17] <zombah>  stuw: я просто в getevent не вижу на длинное ничего только в дмесг
 [14:46:43] <stuw>  да, я такое допускаю из-за моего косяка )
 [14:46:45] <zombah>  stuw: короткое норм видно в getevent, я тебе сбрасывал лог там два ивента
 [14:46:50] <stuw>  угу
 [14:50:42] <stuw>  zombah: "NVEC power button" и "NVEC sleep button" - я думаю, что по короткому можно слать KEY_SLEEP на "NVEC sleep button"
 [14:55:39] <stuw>  zombah: запушил
 [14:56:13] <stuw>  надо сейчас еще в исходниках андроида поискать, как и где он KEY_SLEEP и KEY_POWER обрабатывает
 [15:25:01] <zombah>  там некий eventhub должен быть, надо найти его
 [15:25:15] <zombah>  он вроде все ивенты в андроиде обработывает
 [15:49:26] <stuw>  zombah: https://android.googlesource.com/platform/frameworks/base/+/d922ae01ca99a2b6d39a9393f86776a1d10ebd14/services/input/EventHub.cpp - вот такое есть
 [15:54:04] <zombah>  stuw: похоже по виду
 [15:54:40] <stuw>  KEYCODE_POWER onKeyLongPress - еще это можно искать
 [15:55:13] <stuw>  zombah: adb shell input keyevent 26
 [15:55:22] <stuw>  такая команда что-нибудь делает ?
 [16:02:16] <zombah>  stuw: счас гляну
 [16:05:43] <stuw>  блин, еще хрен загуглишь ведь, все про приложения для андроида пишут :(
 [16:05:52] <zombah>  stuw: экран вырубился, слип сигнал похоже
 [16:06:11] <stuw>  а в логе есть что ?
 [16:06:44] <zombah>  stuw: в дмесг есть, [ 69.269069] pm_request_early_suspend_state: sleep (0->3) at 68761287000 (2016-04-08 01:14:23.447526000 UTC)
 [16:07:24] <stuw>  а в logcat'е ?
 [16:07:31] <zombah>  счас гляну
 [16:07:37] <stuw>  в ядре то более-менее ясно что и где искать
 [16:07:43] <stuw>  вопрос в самом андроиде
 [16:09:05] <zombah>  ничего интересного в логах, все говорят что мол уходим в слип и все
 [16:09:21] <stuw>  а кто говорит? какие подсистемы ?
 [16:09:35] <stuw>  кто первый сказал, с того и начинать
 [16:09:46] <zombah>  I/Input ( 1983): InjectKeyEvent: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_POWER, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=257343, downTime=257343, deviceId=-1, source=0x101 }
 [16:09:50] <zombah>  I/Input ( 1983): InjectKeyEvent: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_POWER, scanCode=0, metaState=0, flags=0x0, repeatCount=0, eventTime=257343, downTime=257343, deviceId=-1, source=0x101 }
 [16:09:55] <zombah>  счас гляну что за процесс это
 [16:10:17] <zombah>  блин форкнулся уже
 [16:10:21] <zombah>  нет его больше
 [16:11:21] <zombah>  процесс system server говорит power sleep requested
 [16:11:55] <zombah>  I/power_sleep_requested( 1316): 0
 [16:11:55] <zombah>  I/power_screen_state( 1316): [0,2,0,0]
 [16:11:55] <zombah>  I/power_screen_broadcast_send( 1316): 1
 [16:12:14] <zombah>  ps |grep 1316
 [16:12:14] <zombah>  system 1316 1197 370776 65940 ffffffff b6e90bc4 S system_server
 [16:13:54] <zombah>  а Input хз кто говорит, процесс исчезает сразу как скажет это про KeyEvent
 [16:14:45] <zombah>  пересобралось с последним патчем, счас попробую накатить
 [16:28:19] <stuw>  zombah: https://github.com/android/platform_frameworks_base/blob/master/services/core/java/com/android/server/power/PowerManagerService.java#L1140
 [16:30:14] <stuw>  https://android.googlesource.com/platform/frameworks/base/+/c12035cd40d01b032013f515cb509e6c8791cf65/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#837
 [16:30:39] <stuw>  com.android.internal.R.integer.config_shortPressOnPowerBehavior
 [16:30:56] <zombah>  ага
 [16:31:51] <stuw>  https://android.googlesource.com/platform/frameworks/base/+/c12035cd40d01b032013f515cb509e6c8791cf65/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#153
 [16:34:38] <stuw>  https://github.com/haosp/android_frameworks_base/blob/a263e19c36dba92b9f1456ca7257f3a490f38818/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#L4454
 [16:34:48] <stuw>  PhoneWindowManager.java
 [16:35:58] <zombah>  ты понимаешь что это значит?
 [16:46:03] <zombah>  уехал на совещание
 [16:48:34] <stuw>  обработка KeyEvent.KEYCODE_POWER происходит в PhoneWindowManager.java. По этому событию зовется powerShortPress. Внутри powerShortPress в зависимости от значения config_shortPressOnPowerBehavior происходит действие.
 [16:49:46] <stuw>  config_shortPressOnPowerBehavior - число. SHORT_PRESS_POWER_NOTHING = 0 - ничего не делать, SHORT_PRESS_POWER_GO_TO_SLEEP = 1 - спать, SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP = 2 - тоже вроде спать (отличия не разбирал),
 [16:50:41] <stuw>  SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME = 3 - то же, что и 2, но + вызов launchHomeFromHotKey()
 [16:51:47] <stuw>  KeyEvent.KEYCODE_SLEEP - тупо пошлет в сон (примерно то же, что и SHORT_PRESS_POWER_GO_TO_SLEEP = 1)
 [16:54:23] <stuw>  начинается кутерьма в dispatchUnhandledKey (в этом же файле). Кто зовет dispatchUnhandledKey пока не знаю
 [16:57:54] <stuw>  Для длинного нажатия действия тоже настраиваются (ключ - LONG_PRESS_POWER_GLOBAL_ACTIONS)
 [23:22:30] <zombah>  а во -lt ключ у getevent есть https://source.android.com/devices/input/getevent.html#showing-live-events
 [23:22:50] <zombah>  можно смотреть не input а event интерфейс
 [23:38:18] <stuw_>  прикольно
 [23:57:34] <stuw_>  что на последнем ядре показывает ?