LINUX.ORG.RU

некоторые клавиатурные клавишы только нажимаются, но не отжимаются

 , i8042, ,


2

1

добрый день, друзья!

такая странность — купил ноутбук (dell inspiron 3179) , снёс Windows в первые 30 секунд использования. поставил Arch.

всё работает нормально...

...кроме следущей странности с клавиатурой!

все клавиши работают как надо (корректно) кроме этих четырёх: HOME, END, PGUP, PGDN .. а именно эти клавиши тоже работают, но создают лишь событие для нажатия (key-press) , а вот собятия отжатия — нет (key-release).

странно именно то что это только с этими 4 клавишами.

замечу что физически этих клавиш нет — приходится нажимать FN+LEFT, FN+RIGHT, FN+UP, FN+DOWN..

однако другие FN+ЧТОТО — отрабатывают правильно (и нажатие и отжатие.. либо сразу посылаются одновременно два события: событие нажатия и тут же событие отжатия)

утилита /usr/bin/showkey показывает следущее (я понажимал в ней несколько разных клавиш.. обратите внимание на: 102 107 104 109 )

kb mode was UNICODE
[ if you are trying this under X, it might not work
since the X server is also reading /dev/console ]

press any key (program terminates 10s after last keypress)...
keycode  28 release
keycode  28 press
keycode  28 release
keycode  28 press
keycode  28 release
keycode  28 press
keycode  28 release
keycode 102 press
keycode 107 press
keycode 104 press
keycode 109 press
keycode 102 press
keycode 107 press
keycode 104 press
keycode 109 press
keycode 102 press
keycode 107 press
keycode 104 press
keycode 109 press
keycode 127 press
keycode 127 release
keycode 127 press
keycode 127 release
keycode 127 press
keycode 127 release
keycode 127 press
keycode 127 release
keycode   2 press
keycode   2 release
keycode   3 press
keycode   3 release
keycode   4 press
keycode   4 release
keycode   5 press
keycode   5 release
keycode   6 press
keycode   6 release
keycode   7 press
keycode   7 release
keycode   8 press
keycode   8 release
keycode   9 press
keycode   9 release
keycode  10 press
keycode  10 release
keycode  11 press
keycode  11 release

понятное дело что такое поведение кнопок — у Xorg — вызывает совершенно некорректное поведение .. иксы думают будто я как идиот зажимаю клавиши и не отпускаю их.

первое что мне приходит на мой скромный ум — это будто бы банальный дефект в клавиатуре (или прошивке ноутбука).. наверное так и есть. но вотже ещё одна странность — тут я вдруг решил загрузить через внешний накопитель Windows — и в Windows эти клавиши как выяснилось отрабатывают корректно (и событие нажатия , и событие отжатия)...

получется одна и таже физическая клавиатура — в случае загрузки Linux-ядра отрабатывает не корректно (для четырёх клавиш) , а в случае загрузки Windows отрабатывает корректно (для этих же четырёх клавиш) ?

как чёрт-возьми такое возможно? {поправка — некоторые клавиатурные клавишы только нажимаются, но не отжимаются (комментарий) }

в какую сторону копать дальше? клавиатура работает через модуль ядра i8042

*** UPD_2017_01_08 решение проблемы ***

простое решение через hwdb — некоторые клавиатурные клавишы только нажимаются, но не отжимаются (комментарий)

★★★★★

Последнее исправление: user_id_68054 (всего исправлений: 11)

уважаемые модераторы, переместите пожалуйста тему в Hardware. наверно это ближе туда чем Desktop

user_id_68054 ★★★★★
() автор топика

Попробуй включить опции ядра i8042.debug и i8042.unmask_kbd_data, посмотри в логи, что происходит при нажатии и отжатии. Если прерывания на отпускание клавиш приходят, но обрабатываются неправильно, можно запилить фикс в драйвере.

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

спасиб за совет! это более правильно чем смотреть через /usr/bin/showkey!

Dec 08 13:21:08 plm-notebook kernel: i8042: [49458] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:08 plm-notebook kernel: i8042: [49459] 47 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49544] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49545] 4f <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49633] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49634] 49 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49694] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:09 plm-notebook kernel: i8042: [49695] 51 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49814] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49814] 47 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49890] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49891] 4f <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49973] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [49973] 49 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [50031] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:10 plm-notebook kernel: i8042: [50031] 51 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50142] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50142] 47 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50216] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50217] 4f <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50305] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50306] 49 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50362] e0 <- i8042 (interrupt, 0, 1)
Dec 08 13:21:11 plm-notebook kernel: i8042: [50362] 51 <- i8042 (interrupt, 0, 1)

(по факту видим что приходят опять-таки только события нажатия :-D)

user_id_68054 ★★★★★
() автор топика

понятно (наверно?)...

не поверив самому себе в этот эпический бред (как такое возможно? не могут же клавиши клавиатуры по разному работать в Linux и Win)...

...решил ещё разок (более тщательно) перепроверить как оно в Windows.

ну и вроде как в Windows — тоже нет этого события на отжатие (именно у этих четырёх клавишь)

только программы Windows более лояльно к этому относятся (Windows не сходит с ума) — но получается брак есть брак :-D

user_id_68054 ★★★★★
() автор топика

не отжимаются

это потому что ты на гопника не похож

anonymous
()

попробуй обновить биос, у меня на latitude была проблема с залипанием, после обновления все решилось

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

да, я так и сделал, безспешно.. только модель ноутбука свежая (ей наверно только полтора месяца исполнилось :))

но вобщем надежда есть, если были прецеденты что после обновления прошивки это у кого-то исправлялось :-)..

ппц конечно что на кривой Венде этот дефект довольно сложно заметить (и похоже производители — только на Венде и тестировали свои ноуты).. в GNU/Linux же вообще сразу бросилось в глаза :-D

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

Можно добавить хак в драйвер, чтобы он эти коды воспринимал как «нажали и сразу отпустили». Для этих клавиш юзкейс «зажать и держать» относительно редко случается, так что мешать сильно не будет. Всяко лучше, чем текущее поведение.

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

Для этих клавиш юзкейс «зажать и держать» относительно редко случается

Да, это был бы идеальный хак .. (Жалко только не видать мне его в мейнстриме ..)

А ешё как я понял — «отжимание» нужно только для Xorg (и Wayland), и вобшем не влияет на работу консольных программ..

Можно ли через какой-нибудь хитрый маппинг — настроить Иксы чтобы они сами-для-себя бы «допридумывали» бы это отжимание (сразу после нажатия)?

То есть поредоктировать не модуль ядра, а настроить Иксы?

user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от kiotoze

попробуй обновить биос, у меня на latitude была проблема с залипанием, после обновления все решилось

напиши пожалуйста подробностей :-) ..

какая модель ноутбука (по конкретнее)?

что подразумевается под заливанием? вот прям как в моей теме (только событие нажатия но нет события отжатия? да?)?

какие клавиши были подвержены этому?

user_id_68054 ★★★★★
() автор топика
Ответ на: понятно (наверно?)... от user_id_68054

А почему бы тогда не сдать его по гарантии? Я понимаю, что продавцы начнут упираться, типа операционка не та, но ведь это реальный брак и можно это доказать на обеих операционках. Хотя поскандалить, скорее всего, придётся. И успех, конечно, после сноса Windows не гарантирован.

И если пытаться сдавать, то ничего перепрошивать ни в коем случае не надо.

aureliano15 ★★
()

какая система то? у меня так на westone было в ubuntu пока xwayland не откатил, тоже раскладка через раз переключалась, индикатор не пойми как отрабатывал, клавиши залипали будто залипали даже в консоли. откатил xserver-common до версии 1.7.2 и xwayland все норм стало теперь до 1.8.4 не обновляюсь долго очень. может поможет. понл так там что то с этим системдем и еще чем то нестыковки

dima1981
()
Последнее исправление: dima1981 (всего исправлений: 4)
Ответ на: комментарий от dima1981

какая система то?

Archlinux .. ubuntu (livedvd) тоже посмотрел, так как ноутбук сертифицирован под убунту — https://certification.ubuntu.com/hardware/201605-22333/

но как видишь — от системы не важно (не влияет)

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

Хм. У меня подобная проблема была (залипание и отсутствие key_release), решалось откатом к старой версии биоса.

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

может usb клаву подрубить если есть, может с самим железом что, а вообще я фик зннает, больше вариков не имею вроде решения

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

Почитай про xset -r

можно выполнить

xset -r

прям вот так — даже без указания кодов — убрать auto-repeat для всех клавиш! (а не только для «больных»)

и в этом случае оно *почти* работает :-) — автоповтор убирается (пусть у всех. сойдёт для эксперимента)

однако это не лечит проблему (не обходит проблему), так как если на «больной» клавише нет события key-release то клавиша хоть и не «залипнет», но однако второй и третий раз её нажатие уже не сработает (не сработает до тех пор пока не будет события key-release. а события key-release не будет ни когда :))

наверно нужен какой-то другой маппинг

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

нет, там я нажимал 1 раз, а печаталось 10 символов. Глюк был периодично
Вот темы
http://en.community.dell.com/support-forums/laptop/f/3518/t/19593360
http://en.community.dell.com/support-forums/laptop/f/3518/t/19593360?pi41097=22

Dell Latitude E6540

Бекап оригинальной винды предустановленной, хотя бы остался? Можно было бы проверить там ли работает, вдруг это действительно баг клавиатуры. У меня сразу шел с убунту, так там залипания были ну очень редкими, но я перешел сразу на арч и там стало почаще. Но мне повезло, где-то через пару дней как раз выпустили новый биос и он мне помог :)

kiotoze ★★★★
()
Последнее исправление: kiotoze (всего исправлений: 1)
Ответ на: комментарий от user_id_68054

Блин, как все непросто :)

Вот тут есть пример, как можно создать виртуальную клавиатуру и запустить простенькую программку, которая слушает события на реальной клавиатуре и передает виртуальной:

https://stackoverflow.com/questions/27581500/hook-into-linux-key-event-handli...

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

ddos3
()

А не пробовал перемапить клавиши? Еще не факт, что это аппаратная проблема. Или попробовать тупо подрубить внешнюю клаву.

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

Вот тут есть пример, как можно создать виртуальную клавиатуру и
запустить простенькую программку, которая слушает события на
реальной клавиатуре и передает виртуальной:

[ссылка]

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

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

Вышеозначенные клавиши. Например на место F8-F11, временно для проверки. Впринципе внешняя клава покажет тот же результат. Вообще это явно аппаратный глюк, но проверить надо.

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

Проверяли выше: драйвер не получает прерывания на отпускание этих клавиш.

ddos3
()

События развивались следущим образом...

Поговорил с горячей линией Dell по телефону, затем отнёс ноутбук в сервисный центр (один из тех что аккредетован Dell)..

На приёмке мой ноутбук — приняли сразу без вопросов — проверили его своим софтом, загружаемым с флешки (msdos там какойто или freedos) и там сразу выяснилось (программой для теста клавиаиуры) что клавиши «залипают», эти Home, End, PgUp, PgDn. То есть дефект очевиден был..

Это было чуть больше недели назад.

Ждал диагностики.

Сегодня позвонил мужик из этого сервисного центра — и сказал что можно забирать ноутбук домой, мол дефект не подтвердиося.

Спрашиваю «как так?» а он начал говорить про то что мол на Windows всё работает якобы замечательно.

Спрашиваю его «и как же вы проверяли на Windows? Какой программой?»

Говорит проверял через Блакнот (ну правильно — на виндовом блакноте этот дефект и не проявляется, так как блакнот не ожидает события опускания и поэтому клавиша не может залипнуть там)..

Я конечно в недоумении, мол как же так — блакнот это ппц и совсем не интерактивная программа , и проверяли ли они на венде игрушки например?

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

Ну вобщем мужык начал мне лечить что мол эти клавиши ноутбука они типа дополнительные и не обязательны к той работе , которую я от них ожидаю..

Короче шляпа..

Чёж, придётся писать офицальную претензию о том что сервисный центр не смог провести качественную диагностику (а вместо диагностики — приплёл зачемто Блакнот Windows, когда ноктбук заявлен как официально поддерживающим Ubuntu Linux (на которой понятное дело ни одна программа не может с этими клавишами работать))

Позвонил я потом опять в горячую линюю Dell — мужик на трубке выслушал всю эту дущещипательную историю и сказал что вероятнее всего Dell-разработчики знают об этой проблеме и вероятнее всего выпустят патч к прошивке биоса прям следущим релизом.. Я поинтересовался а как именно они могут знать, если этим разработчикам ни кто не сказал о проблеме? И может ли этот господин написать Dell-разработчикам тикет (или письмо) о том что есть такая проблема.. Мужик ответил что мопед не мой^W^W^W что он только в техподержке Dell работает и связи с Dell-разработчиками нет (ну короче всё ясно — разрабы наверно и не в курсе об этой проблеме.. А мне успокоительную лапшу вешает зачем-то)

user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 2)

и итоге — ни какую «офицальную претензию» я не писал.. юрист из меня так-себе (оператор ПК — быть может тоже :)).

но зато сделал патч к ядру (к модулю ядра — dell-laptop)..

патч — пока-что получился такой (может в будущем что-то улучшу — но пока-что вроде работает нормально)

diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c
index 2c2f02b2e0..579cd27075 100644
--- a/drivers/platform/x86/dell-laptop.c
+++ b/drivers/platform/x86/dell-laptop.c
@@ -28,6 +28,7 @@
 #include <linux/acpi.h>
 #include <linux/mm.h>
 #include <linux/i8042.h>
+#include <linux/serio.h>
 #include <linux/debugfs.h>
 #include <linux/seq_file.h>
 #include <acpi/video.h>
@@ -46,6 +47,14 @@
 struct quirk_entry {
 	u8 touchpad_led;
 
+	/*
+	 * kbd_missing_release_interrupts=1 means bug in keyboard controller for additional keys:
+	 * Home, End, PgUp, PgDn. These four keys only -- from all keyboard.
+	 * These keys does not send key-release interrupts (send key-press interrupts only).
+	 * kbd_missing_release_interrupts=<...> (!=0) -- for other variations of similar issues
+	 */
+	int kbd_missing_release_interrupts;
+
 	int needs_kbd_timeouts;
 	/*
 	 * Ordered list of timeouts expressed in seconds.
@@ -60,6 +69,10 @@ static struct quirk_entry quirk_dell_vostro_v130 = {
 	.touchpad_led = 1,
 };
 
+static struct quirk_entry quirk_dell_inspiron_3179 = {
+	.kbd_missing_release_interrupts = 1,
+};
+
 static int __init dmi_matched(const struct dmi_system_id *dmi)
 {
 	quirks = dmi->driver_data;
@@ -263,6 +276,15 @@ static const struct dmi_system_id dell_quirks[] __initconst = {
 	},
 	{
 		.callback = dmi_matched,
+		.ident = "Dell Inspiron 3179",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_MATCH(DMI_PRODUCT_NAME, "Inspiron 3179"),
+		},
+		.driver_data = &quirk_dell_inspiron_3179,
+	},
+	{
+		.callback = dmi_matched,
 		.ident = "Dell XPS13 9333",
 		.matches = {
 			DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
@@ -646,30 +668,107 @@ static void dell_update_rfkill(struct work_struct *ignored)
 }
 static DECLARE_DELAYED_WORK(dell_rfkill_work, dell_update_rfkill);
 
-static bool dell_laptop_i8042_filter(unsigned char data, unsigned char str,
-			      struct serio *port)
+static bool use_i8042_filter_for_rfkill;
+
+static bool i8042_filter_for_missing_release(unsigned char prev_data, unsigned char prev_str,
+		unsigned char data, unsigned char str,
+		struct serio *port)
 {
-	static bool extended;
+	bool append_release = false;
+	bool ignore = false;
 
-	if (str & I8042_STR_AUXDATA)
-		return false;
+	if (unlikely(
+			prev_data == 0xe0 &&
+			quirks &&
+			quirks->kbd_missing_release_interrupts == 1)) {
+		switch (data) {
+		case 0x47: /* Home (key-press) */
+		case 0x4f: /* End (key-press) */
+		case 0x49: /* PgUp (key-press) */
+		case 0x51: /* PgDn (key-press) */
+			/* key-release interrupt imitation */
+			append_release = true;
+			break;
+		case 0x47 | 0x80: /* Home (key-release) */
+		case 0x4f | 0x80: /* End (key-release) */
+		case 0x49 | 0x80: /* PgUp (key-release) */
+		case 0x51 | 0x80: /* PgDn (key-release) */
+			/*
+			 * key-release interrupt -- if bug of keyboard controller will be fixed
+			 * in next revisions of laptop (or in next revisions motherboard firmware).
+			 * in this case we must prevent for double key-release interrupts
+			 */
+			ignore = true;
+			break;
+		}
+	}
 
-	if (unlikely(data == 0xe0)) {
-		extended = true;
-		return false;
-	} else if (unlikely(extended)) {
+	/*
+	 * scan codes must be *consistently* relative to each other:
+	 * all-or-nothing elements of sequence (e.c. we want to ignore one).
+	 * so we must use filter for other scan codes (even for regular keyboard keys,
+	 * that without problems)
+	 */
+
+	if (unlikely(data == 0xe0 || ignore)) {
+		return true;
+	}
+
+	if (unlikely(prev_data == 0xe0)) {
+		serio_interrupt(port, 0xe0, 0);
+	}
+	serio_interrupt(port, data, 0);
+
+	if (unlikely(append_release)) {
+		if (unlikely(prev_data == 0xe0)) {
+			serio_interrupt(port, 0xe0, 0);
+		}
+		serio_interrupt(port, data | 0x80, 0);
+	}
+
+	return true;
+}
+
+static bool i8042_filter_for_rfkill(unsigned char prev_data, unsigned char prev_str,
+		unsigned char data, unsigned char str,
+		struct serio *port)
+{
+	if (unlikely(prev_data == 0xe0)) {
 		switch (data) {
 		case 0x8:
 			schedule_delayed_work(&dell_rfkill_work,
 					      round_jiffies_relative(HZ / 4));
 			break;
 		}
-		extended = false;
 	}
 
 	return false;
 }
 
+static bool dell_laptop_i8042_filter(unsigned char data, unsigned char str,
+			      struct serio *port)
+{
+	bool rv = false;
+	static unsigned char prev_data;
+	static unsigned char prev_str;
+
+	if (str & I8042_STR_AUXDATA)
+		return false;
+
+	if (unlikely(quirks && quirks->kbd_missing_release_interrupts)) {
+		rv = i8042_filter_for_missing_release(prev_data, prev_str, data, str, port) || rv;
+	}
+
+	if (unlikely(use_i8042_filter_for_rfkill)) {
+		rv = i8042_filter_for_rfkill(prev_data, prev_str, data, str, port) || rv;
+	}
+
+	prev_data = data;
+	prev_str = str;
+
+	return rv;
+}
+
 static int (*dell_rbtn_notifier_register_func)(struct notifier_block *);
 static int (*dell_rbtn_notifier_unregister_func)(struct notifier_block *);
 
@@ -805,18 +904,14 @@ static int __init dell_setup_rfkill(void)
 		pr_info("Using dell-rbtn acpi driver for receiving events\n");
 	} else if (ret != -ENODEV) {
 		pr_warn("Unable to register dell rbtn notifier\n");
-		goto err_filter;
+		goto err_notifier;
 	} else {
-		ret = i8042_install_filter(dell_laptop_i8042_filter);
-		if (ret) {
-			pr_warn("Unable to install key filter\n");
-			goto err_filter;
-		}
+		use_i8042_filter_for_rfkill = true;
 		pr_info("Using i8042 filter function for receiving events\n");
 	}
 
 	return 0;
-err_filter:
+err_notifier:
 	if (wwan_rfkill)
 		rfkill_unregister(wwan_rfkill);
 err_wwan:
@@ -840,7 +935,7 @@ static void dell_cleanup_rfkill(void)
 		symbol_put(dell_rbtn_notifier_unregister);
 		dell_rbtn_notifier_unregister_func = NULL;
 	} else {
-		i8042_remove_filter(dell_laptop_i8042_filter);
+		use_i8042_filter_for_rfkill = false;
 	}
 	cancel_delayed_work_sync(&dell_rfkill_work);
 	if (wifi_rfkill) {
@@ -2003,6 +2098,13 @@ static int __init dell_init(void)
 		goto fail_rfkill;
 	}
 
+	ret = i8042_install_filter(dell_laptop_i8042_filter);
+
+	if (ret) {
+		pr_warn("Unable to install key filter\n");
+		goto fail_key_filter;
+	}
+
 	if (quirks && quirks->touchpad_led)
 		touchpad_led_init(&platform_device->dev);
 
@@ -2051,6 +2153,7 @@ static int __init dell_init(void)
 	return 0;
 
 fail_backlight:
+fail_key_filter:
 	dell_cleanup_rfkill();
 fail_rfkill:
 	platform_device_del(platform_device);
@@ -2069,6 +2172,7 @@ static void __exit dell_exit(void)
 		touchpad_led_exit();
 	kbd_led_exit();
 	backlight_device_unregister(dell_backlight_device);
+	i8042_remove_filter(dell_laptop_i8042_filter);
 	dell_cleanup_rfkill();
 	if (platform_device) {
 		platform_device_unregister(platform_device);
user_id_68054 ★★★★★
() автор топика
Ответ на: комментарий от user_id_68054

Мэтью Гаррет [(Matthew Garrett), известный разработчик ядра Linux и один из директоров Фонда Свободного ПО] — сказал что таким образом патчут ядро — только мудаки!

точнее говоря вслух он это не сказал (не написал) — но клянусь что подумал :-D..

а написал он вежлево — что нужно мол всего-то ничего — это использовать значёк восклицательного знака(!) внутри hwdb-файла..

ну то есть в итоге — я себе вернул ядро в ванильный непатченный вариант — и изготовил файл:

/etc/udev/hwdb.d/95-custom-keyboard.hwdb

# Dell Inspiron 3179
evdev:atkbd:dmi:bvn*:bvr*:bd*:svnDell*:pnInspiron*3179:pvr*
 KEYBOARD_KEY_c7=!home
 KEYBOARD_KEY_cf=!end
 KEYBOARD_KEY_c9=!pageup
 KEYBOARD_KEY_d1=!pagedown

в итоге — теперь всё работает супер (поставлю что задача решена)...

sudo evtest # вот тут можно поглядеть коды клавишь (которые вставлять в hwdb-файл)

# а после редактироваться hw-db-файла -- переиндексировать:
sudo udevadm hwdb --update
sudo sudo udevadm trigger
user_id_68054 ★★★★★
() автор топика
Последнее исправление: user_id_68054 (всего исправлений: 2)
Ответ на: комментарий от ddos3

Блин, как все непросто :)

офигеть конечно как в итоге оно оказалось просто :-D :-D

.. и тебе спасибо, товаришь merhalak.. можешь теперь снова обновлять на более высокую версию свой биос :-)

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