Portál AbcLinuxu, 5. května 2025 12:45
Autor článku popisuje způsob, jak zařídit, aby klávesnici podporoval X server bez jakýchkoliv pomocných programů.O tom nepochybuju a netvrdil jsem, že Lineak je lepší, nebo dokonce systémovější...
Problém nevyřeší?Ne. Pouze obejde.
CdromDevice = /dev/cdrom Display_align = center Display_color = 0aff00 Display_font = -adobe-helvetica-bold-r-normal-*-*-240-*-*-p-*-*-* Display_hoffset = 0 Display_plugin = xosd Display_pos = bottom Display_soffset = 1 Display_timeout = 3 Display_voffset = 50 KeyboardType = LTCDE-YRQ57 MixerDevice = /dev/mixer RAWCommands = Screensaver = conffilename = /home/tomas/.lineak/lineakd.conf keystate_capslock = keystate_numlock = keystate_scrolllock = AudioLowerVolume = "aumix -w -3" AudioMute = "~/.lineak/mute" AudioRaiseVolume = "aumix -w +3" Back = Calculator = "kcalc" Mail = "kmail" WWW = "firefox"
lineakd --create typ-klavesnice
(viz man) a potom jsem připsal akce k jednotlivým tlačítkům.
Nehledě na to, že v článku je odkaz na již dřívější článek, který je imho výstižnější.Oba články ale popisují jiný postup. Tentokrát jde o přidání definice nové klávesnice přímo do X, což je sice možná trochu namáhavější, ale taková definice pak už v systému zůstane budou ji moci použít i další uživatelé X.
pokračování "seriálu" Cesta do hlubin kompilace jádra ... už v plánu asi není, že?Zatím to nevypadá, že by mohlo vyjít další pokračování. Bohužel jsem se s autorem seriálu neshodl na důležitých věcech, takže jsme vydávání museli přerušit. Pokud by se však našel někdo, kdo by chtěl navázat, ať se mi ozve.
$ cat /etc/acpi/events/hotkey event=hotkey ATKD .* action=/etc/acpi/actions/hotkey.sh %e $ cat /etc/acpi/actions/hotkey.sh #!/bin/bash case "$3" in # Mute button 00000032) amixer sset Front,0 toggle amixer sset Surround,0 toggle amixer sset Center,0 toggle amixer sset LFE,0 toggle ;; # Volume up button 00000030) amixer sset PCM,0 15+ ;; # Volume down button 00000031) amixer sset PCM,0 15- ;; *) logger "ACPI hotkey $3 is not defined" ;; esac
Více viz např.: https://bugzilla.novell.com/show_bug.cgi?id=159807Access Denied You are not authorized to access bug #159807. To see this bug, you must first log in to an account with the appropriate permissions. novell sucks
The main part of the problem is now in Xorg. GNOME knows XF86RaiseVolume and XF86LowerVolume key IDs (if enabled), but Xorg does not understand extended keyboard kernel codes (kernel 2.6). Kernel has to emulate AT keyboard for X. Kernel tries hard to emulate Microsoft Multimedia Keyboard for X and X tries to interpret this emulation by a keyboard map in the /etc/X11/xkb/symbols/inet. It fails for many keyboards. This old design was optimized for AT keyboards only and kernel 2.4 and cannot work in 2.6 properly. In particular cases, definition of a new hot key in GNOME control center causes hang of keyboard due to keycode conflict. To fix this situation, X must accept keys with codes above 240 or, in the best case, directly use key names recognized by kernel.
/etc/X11/xkb/rules/xorg.xml
, ale stale nic.
Netusi niekto, ako Gnome presvedcit, ze tu klavesnicu pozna?
Relevantna sekcia z xorg.conf
:
Section "InputDevice" Identifier "Keyboard0" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "a4tech_2348rp" # Option "XkbLayout" "us,sk" # Option "XkbVariant" ",qwerty" # Option "XkbOptions" "grp:Alt_shift_toggle" EndSection(skusal som to s aj bez zakomentovnych riadkov)
inet
jsem zjistil, že je tato programovatelná klavesa nadefinovaná dvakrát:
xkb_symbols "logitech_base" { ... key <I2F> { [ XF86AudioRaiseVolume ] }; key <I30> { [ XF86AudioRaiseVolume ] }; ... }V mém připadě je ten správný key I30 a ten nesprávný jsem zakomentoval.
partial alphanumeric_keys xkb_symbols "geniusns" { // This USB mouse uses HID mapping for some keys on it // as keyboard keys. With use of ExplorerPS/2 driver you // can have most buttons working. There is one // not sending keycode nor mouse button - desktop showing // made by Petr Mensik pihhan(at)cipis.net. name[Group1]= "Genius NetScrool+ Superior Mouse"; key <I2E> { [ XF86AudioRaiseVolume ] }; key <I30> { [ XF86AudioLowerVolume ] }; key <I02> { [ XF86WWW, XF86Mail ] }; key <I22> { [ XF86AudioPlay, XF86AudioPause ] }; };Ty co to obsahuje jsou stejné jako uvedené v článku u klávesnice. Akorát moc nechápu, proč samotný Genius nemůže mít jednotné kódy. Momentálně už jsem natrefil na 3. druh rozložení, a to mám na svojí myši jenom 4 funkční čudly s keykódy, takže by se to mělo obvykle shodovat. I02 ten mail jsem si přidal jako extra, ne že bych to někdy využil. Máte někdo další myš s multimediálními tlačítky? funguje vám to nějak? Musím říct že aspoň ve WMP to fungovalo bez instalace driveru, v Debianu to rozchodit byl celkem porod. Hlavně už blbé je to, že většinou to nikde není předvoleno. Nevíte jak moc jsou linuxy schopné detekovat automaticky USB myši i s jejich rozšířeními? Mám sice debian, který není tak moc zaměřený na desktop, ale stejně mám za to, že to je s automatickou detekcí myši i s využitím případných featur špatné.
// Labtec Internet Keyboard partial alphanumeric_keys xkb_symbols "labtecinternet" { key <I5F> { [ XF86Sleep ] }; key <I22> { [ XF86AudioPlay, XF86AudioPause ] }; key <I24> { [ XF86AudioStop ] }; key <I10> { [ XF86AudioPrev ] }; key <I19> { [ XF86AudioNext ] }; key <I20> { [ XF86AudioMute ] }; key <I2E> { [ XF86AudioLowerVolume ] }; key <I30> { [ XF86AudioRaiseVolume ] }; key <I32> { [ XF86WWW ] }; key <I6C> { [ XF86Mail ] }; key <I65> { [ XF86Search ] }; key <I66> { [ XF86MyComputer ] }; };Je to celkem slušná a levná klávesnice (voděodolná :D)
// Genius SlimStar, USB partial alphanumeric_keys xkb_symbols "geniusslimstar" { key <I5F> { [ XF86Standby ] }; key <XFER> { [ XF86AudioMedia ] }; key <I22> { [ XF86AudioPlay, XF86AudioPause ] }; key <I24> { [ XF86AudioStop ] }; key <I2E> { [ XF86AudioLowerVolume ] }; key <I30> { [ XF86AudioRaiseVolume ] }; key <I6A> { [ XF86Back ] }; key <I02> { [ XF86WWW ] }; key <I69> { [ XF86Forward ] }; key <I6C> { [ XF86Mail ] }; key <I21> { [ XF86Calculator ] }; key <K67> { [ XF86MyComputer ] }; }btw. nemohl by sem nekdo hodit email na nekoho kompetentniho z X.Org, komu poslat konfiguraci?
/etc/X11/xkb/*
, ale v /usr/share/X11/xkb/*
, coz je podle meho logictejsi=)
// Labtec // Labtec Ultra-flat Wireless Desktop (model Y-RAE68) partial alphanumeric_keys xkb_symbols "labtecufwd" { key <MENU> { [ Menu ] }; key <I22> { [ XF86AudioPlay, XF86AudioPause ] }; key <I24> { [ XF86AudioStop ] }; key <I10> { [ XF86AudioPrev ] }; key <I19> { [ XF86AudioNext ] }; key <I20> { [ XF86AudioMute ] }; key <I2E> { [ XF86AudioLowerVolume ] }; key <I30> { [ XF86AudioRaiseVolume ] }; key <I6C> { [ XF86Mail ] }; key <I32> { [ XF86HomePage ] }; key <I66> { [ XF86Favorites ] }; key <I67> { [ XF86Refresh ] }; key <I65> { [ XF86Search ] }; key <I6B> { [ XF86MyComputer ] }; key <I6D> { [ XF86AudioMedia ] }; };
// Eurocase Waterproof KB-8101 Multimedia Keyboard
partial alphanumeric_keys
xkb_symbols "eurocasemk" {
key <I5E> { [ XF86PowerOff ] };
key <I5F> { [ XF86Sleep ] };
key <I5F> { [ XF86AudioMedia ] };
key <I22> { [ XF86AudioPlay, XF86AudioPause ] };
key <I24> { [ XF86AudioStop ] };
key <I10> { [ XF86AudioPrev ] };
key <I19> { [ XF86AudioNext ] };
key <I2E> { [ XF86AudioLowerVolume ] };
key <I30> { [ XF86AudioRaiseVolume ] };
key <I20> { [ XF86AudioMute ] };
key <I6D> { [ XF86AudioMedia ] };
key <I32> { [ XF86MyComputer ] };
key <I6C> { [ XF86Mail ] };
};
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.