No power button and lid events from nvec
Перейти к навигации
Перейти к поиску
Events
https://github.com/ac100-ru/picasso-kernel/tree/3.18-paz00-nvec-events
NVEC
Short press is a SYSTEM event.
04:18 zombah: вот что в дмесг по короткому 04:18 zombah: [ 756.692073] ec system event c5 04 01 00 80 00 04:18 zombah: [ 756.700307] evt - sys varsize msg: c5 04 01 00 80 00
Long press is a KEYBOARD event.
[ 745.238531] kbd varsize msg: c0 04 e0 5e e0 de
Hardware
zombah: когда держу нажатой для долгого клика вывалиет сразу UP и DOWN хотя я еще не отпустил, правда это может мелочь
14:40 stuw: у нас на нажатие и быстрое отпускание кнопки питания генерится одно событие 14:40 stuw: поэтому нам скорее всего понадобится этот демон !речь о powerbtnd! (по крайней мере на первый парах), ибо в ядре слипы вставлять не хочется 14:42 stuw: на долгое нажатие у нас тоже одно событие (это событие в тестовом ядре в драйвере клавы) - можно судить по количеству сообщение "kbd varsize msg" на нажатие
14:10 stuw: сразу приходит нажатие и отпускание при долгом нажатии, потому что нам приходит только одно событие, для которого в драйвере мы и шлем нажатие и отпускание. Я про это вчера уже упоминал. 14:10 zombah: ааа 14:10 stuw: железо генерирует одно событие, по которому ядро генерирует два :)
Android
14:41 zombah: stuw: аутентичное поведение андроида, короткое нажатие - сон, длинное - меню выключения.
Android goes to sleep
16:09 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 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:11 zombah: процесс system server говорит power sleep requested 16:11 zombah: I/power_sleep_requested( 1316): 0 16:11 zombah: I/power_screen_state( 1316): [0,2,0,0] 16:11 zombah: I/power_screen_broadcast_send( 1316): 1 16:11 zombah: ps |grep 1316 16:11 zombah: system 1316 1197 370776 65940 ffffffff b6e90bc4 S system_server 16:13 zombah: а Input хз кто говорит, процесс исчезает сразу как скажет это про KeyEvent
16:28 stuw: zombah: https://github.com/android/platform_frameworks_base/blob/master/services/core/java/com/android/server/power/PowerManagerService.java#L1140 16:29 stuw: https://android.googlesource.com/platform/frameworks/base/+/c12035cd40d01b032013f515cb509e6c8791cf65/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#837 16:30 stuw: com.android.internal.R.integer.config_shortPressOnPowerBehavior 16:30 zombah: ага 16:31 stuw: https://android.googlesource.com/platform/frameworks/base/+/c12035cd40d01b032013f515cb509e6c8791cf65/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#153 16:34 stuw: https://github.com/haosp/android_frameworks_base/blob/a263e19c36dba92b9f1456ca7257f3a490f38818/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#L4454 16:34 stuw: PhoneWindowManager.java ... 16:48 stuw: обработка KeyEvent.KEYCODE_POWER происходит в PhoneWindowManager.java. По этому событию зовется powerShortPress. Внутри powerShortPress в зависимости от значения config_shortPressOnPowerBehavior происходит действие. 16:49 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 stuw: SHORT_PRESS_POWER_REALLY_GO_TO_SLEEP_AND_GO_HOME = 3 - то же, что и 2, но + вызов launchHomeFromHotKey() 16:51 stuw: KeyEvent.KEYCODE_SLEEP - тупо пошлет в сон (примерно то же, что и SHORT_PRESS_POWER_GO_TO_SLEEP = 1) 16:54 stuw: начинается кутерьма в dispatchUnhandledKey (в этом же файле). Кто зовет dispatchUnhandledKey пока не знаю 16:57 stuw: Для длинного нажатия действия тоже настраиваются (ключ - LONG_PRESS_POWER_GLOBAL_ACTIONS)
powerbtnd
14:34 stuw: zombah: powerbtnd - судя по коду, он слушает максимум 3 девайса, имя которых начинается с "power key" (или NVEC power button) 14:35 stuw: когда получает событие отпускания KEY_POWER, то эмулирует нажатие KEY_POWER, паузу 2 сек, отпускание KEY_POWER. Шлет новые события в /dev/uinput 14:36 stuw: можно в конфиге настроить, чтобы по двойному клику, а не одинарному, эмулировал событие 14:36 stuw: что такое /dev/uinput - хз
Emulation
KEYCODE_POWER
adb shell input keyevent 26
KEYCODE_SLEEP (didn't check it)
adb shell input keyevent 223