LINUX.ORG.RU

Кнопка громкости не повышает громкость при длительном нажатии

 , ,


0

1

Приходится отпускать кнопку и нажимать повторно. На другой клаве такого не нужно - громкость нарастает при зажимании. Как исправить? Вот что говорит xev.

Это проблемная клава:

KeyRelease event, serial 37, synthetic NO, window 0x2200001,
    root 0x16a, subw 0x0, time 7635644, (-200,555), root:(2684,575),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False
Это нормальная клава:
KeyRelease event, serial 34, synthetic NO, window 0x2200001,
    root 0x16a, subw 0x0, time 7662032, (-200,555), root:(2684,575),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

Deleted

А если зажимать, то поведение одинаковое или у нормальной клава есть встроенный автоповтор?

mky ★★★★★
()
Ответ на: комментарий от annulen

да, прессы прилетают. не вижу разницы между клавами(

проблемная клава:

KeyPress event, serial 34, synthetic NO, window 0x2e00001,    
    root 0x16a, subw 0x0, time 7654654, (175,295), root:(3059,315),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:                                                      
    XmbLookupString gives 0 bytes:                                                    
    XFilterEvent returns: False                                                       
                                                              
KeyRelease event, serial 34, synthetic NO, window 0x2e00001,      
    root 0x16a, subw 0x0, time 7654694, (175,295), root:(3059,315),
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:                                                      
    XFilterEvent returns: False                                 

нормальная клава:

KeyPress event, serial 34, synthetic NO, window 0x2e00001,                            
    root 0x16a, subw 0x0, time 7736244, (63,896), root:(2947,916),                    
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:                                                      
    XmbLookupString gives 0 bytes:                                                    
    XFilterEvent returns: False                                                       
                                                                                      
KeyRelease event, serial 34, synthetic NO, window 0x2e00001,                          
    root 0x16a, subw 0x0, time 7736284, (63,896), root:(2947,916),                    
    state 0x0, keycode 123 (keysym 0x1008ff13, XF86AudioRaiseVolume), same_screen YES,
    XLookupString gives 0 bytes:                                                      
    XFilterEvent returns: False              

Deleted
()
Ответ на: комментарий от mky

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

Deleted
()
Ответ на: комментарий от Deleted

и обе определяются одинаково (к примеру «стандартная 105-клавишная клавиатура»)?

anymouze ★★
()
Ответ на: комментарий от Deleted

А какой софт XF86AudioRaiseVolume обрабатывает? Попробуй тупо скрипт на нее повесить и громкость повышать на каждый пресс

annulen ★★★★★
()
Ответ на: комментарий от Deleted

На всякий случай уточню. Для обоих клавиатур автоповтор работает и при нажатии и удержании клавиши громкости для обоих клавиатур xev показывает много событий KeyPress/KeyRelease? Если это так, то нужно разбираться, почему не отрабатывает скрипт. Можно засунуть в начало скрипта вывод чего-нибудь в какой-нибудь файл в /tmp (на дозапись), тогда будет понятно, вызывается ли скрипт при зажатии клавиши или нет.

mky ★★★★★
()
3 февраля 2019 г.
Ответ на: комментарий от mky

Да, именно так. Дело не в конкретном демоне или скрипте. Пробовал actkbd, пробовал acpid. На событие просто висит изменение громкости через amixer. Для встроенной в ноут клавы все работает. Для внешней - нет.

Deleted
()
Ответ на: комментарий от Deleted

acpid
xev

Зачем ты acpi события смотришь xev? Есть acpi_listen (но это не точно, тк я давно не пользуюсь acpid).
У клавишь есть 3 события: нажатие, отпускание и удерживание. Разные клавиатуры для не совсем стандартных клавиш (power, sndvol, brightness) по разному генерируют «удерживание»: могут генерировать удерживание, могут зациклить нажатие/отпускание на время удерживания. Зависит от левой пятки индуса, руководящего китайцами, или наоборот.
Умеет ли acpid различать удерживание, я не знаю.

anonymous
()
Ответ на: комментарий от anonymous

Это не acpi события. Просто acpid умеет в некоторые клавиши (яркость, звук). Более корректная альтернатива - actkbd, но с ним все те же проблемы. Визуально события в xev ничем не отличаются для встроенной и для внешней клавы. Возможно не нравится delay.

Deleted
()
Ответ на: комментарий от Deleted

Визуально события в xev ничем не отличаются

Еще раз. Зачем ты смотришь xev, если эти клавишы обрабатываешь не в X?
Смотри события тем же, чем будешь обрабатывать.
Еще раз.
Смотри события тем же, чем будешь обрабатывать.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за совет не смотреть через xev. Получается что ноутбучная клава шлёт repeat, а усбшная только однократно press, а затем release, уже когда отпускаешь клавишу. А системно такие вещи как-нибудь решаются? Ну там udev hwdb какой-нибудь

Deleted
()
Ответ на: комментарий от Deleted

усбшная

Вроде, у usb-клавиатур свои хитрые сканкоды. Возможно, драйвера/hwdb кривые. Посмотри-сравни showkey --scancodes/--keycodes у той и другой клавиатуры. Смотри dmesg смотри на ошибки неизвестных сканкодов.

anonymous
()
25 сентября 2020 г.

Ставь pulseaudio и в конфиг WM добавляй биндинги для XF86AudioRaiseVolume, XF86AudioLowerVolume. Других способов не вижу

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.