Ten opis dotyczy systemu operacyjnego Debian GNU/Linux, ale po niewielkich modyfikacjach powinen sprawdzić się również w innych dystrybucjach GNU/Linuksowych.
Sposób przedstawiony w niniejszym wpisie jest opcją dla bardziej zaawansowanych użytkowników. Jeśli chcesz uzyskać ten efekt prostszym sposobem, bez modyfikowania map klawiszy, wypróbuj ComposeKey lub CharacterMap.
Dodawanie własnych skrótów klawiaturowych do znaków nie jest banalne, ponieważ będziemy musieli pogrzebać nieco w plikach, ale bardzo się przydaje :) Nie wykorzystamy do tego żadnego magicznego programu, żadnych pierdółkowatych GUI-śmieci czy innego dodatkowego oprogramowania. Skorzystamy z X Keyboard Extension (XKB), które powinno domyślnie znajdować się w większości dystrybucji. Jeśli jakimś cudem go nie macie to radzę zainstalować, bo bez niego obsługa więcej niż jednego układu klawiatury będzie raczej niemożliwa.
Załóżmy, że chcemy dodać znak em dash (U+2014), czyli —. Zacznijmy od znalezienia wygodnego skrótu, który będziemy mogli podmienić. Osobiście polecam ALT+Q, ponieważ domyślnie znajduje się tam znak @ jako zapychacz (nie będzie nam szkoda go tracić). Żeby ustawić w XKB dany skrót musimy znać jego nazwę wewnątrz modułu. Znajdziemy ją w pliku keysymdef.h. Jeśli tak się zdarzyło, że przypadkowo nie mamy go na dysku, możemy go szybko wygooglać. Jest to plik, w którym znajdują się definicje stałych w C. Mają one format XK_NAZWA, gdzie NAZWA jest tym czego tak naprawdę szukamy. Chwilka przewijania i mamy - to czego szukamy nazywa się po prostu emdash .
Dobrze, mamy już nazwę, teraz zajmimy się modyfikowaniem plików jężykowych. Moglibyśmy stworzyć osobny plik z naszymi modyfikacjami, nazwać go pl_mod i bawić się w głupoty, ale nie ma to większego sensu - prościej jest na żywca modyfikować co trzeba tym zajmiemy się w innym wpisie - tutaj chcę pokazać tylko podstawowy sposób. Definicje map klawiszy (keymap) znajdują się w /usr/share/X11/xkb/symbols/ . Nas interesują dwa pliki: latin i pl. O tym drugim powiemy sobie za chwilę - pierwszy zawiera wszystkie domyślne klawisze dla klawiatur łacińskich. Potrzebujemy stamtąd definicję klawisza Q, żeby nie zamazać tego co już mamy. Znajdujemy odpowiednią linijkę, u mnie wygląda tak:
key <AD01> { [ q, Q, at, Greek_OMEGA ] };
i chwilowo kopiujemy ją sobie do schowka. Teraz otwieramy plik pl i analizujemy jego zawartość: znajduje się tam opis pliku, odmiany klawiatur itp. Interesuje nas basic (chyba, że ktoś korzysta np. z DVORAKa, wtedy łatwo się domyślić co zmieniać). W środku znajduje się polecenie include, które łatow się domyślić co robi. Poniżej nazwa grupy (Poland) i definicje 'ogonków'. Zaraz pod nimi kolejne include, które nas już nie interesują. My zajmujemy się miejscem pomiędzy ogonkami, a drugim include - tam umieścimy naszą modyfikację (żeby była widoczna w późniejszych modyfikacjach). Kopiujemy tam powyższą linjkę i zmieniamy at na emdash:
key <AD01> { [ q, Q, emdash, Greek_OMEGA ] };
Zapisujemy, resetujemy Xy (ale tak porządnie, najlepiej z zabiciem procesu) wywołujemy xkbset (dzięki M.Górny) i cieszymy się efektami działania ;)
Reklamy: sklep komputerowy ,
A to nie można skorzystać z Xmodmap?
Dwa, definicje kodów klawiszy używanych w Xorg znajdują się także w pliku
/usr/share/X11/XKeysymDB
Minio – xmodmap wyszło z użycia wieki i trochę temu, lepiej go nie używać, bo nawet jeśli działa to średnio.
A co do tego drugiego to nie do końca masz rację.
D4: u mnie działa świetnie, ale powiedzmy że mam dość specyficzny desktop.
Ale dalej stoję na tym samym stanowisku co Michał, twierdząc że modyfikowanie standardowych map dostarczanych przez dystrybucję nie jest najlepszym rozwiązaniem.
A słyszałeś o czymś takim jak ComposeKey?
https://help.ubuntu.com/community/ComposeKey
Nie trzeba się bawić w żadne przemapowywanie klawiszy, można wprowadzać praktycznie dowolne znaki (za pomocą wspomnianego ComposeKey + odpowiednich sekwencji).
Np. „em dash” to domyślnie:
<Compose_key> <minus> <minus> <minus>
Nie rozumiem, czemu moja dygresja na temat ComposeKey miała zmusić mnie, do przeczytania całego Twojego wpisu na temat XKB i zmian w definicji map klawiszy. Mógłbyś rozwinąć?
Eluź – „Nie wykorzystamy do tego żadnego magicznego programu, żadnych pierdółkowatych GUI-śmieci czy innego dodatkowego oprogramowania.”
No i bardzo dobrze. Miałem to na uwadze pisząc swój pierwszy komentarz. Naprawdę. Nie bardzo rozumiem co prawda znaczenie terminu „pierdółkowate GUI-śmieci”, ale nie będę się specjalnie czepiał.
Mój komentarz to dygresja, że da się to zrobić inaczej. Niekoniecznie przy założeniach, które podałeś. A do wprowadzania polskich znaków typograficznych i interpunkcyjnych (jak pauzy, półpauzy, polskie i francuskie cudzysłowy) nie trzeba — w większości przypadków — przemapowywać skrótów klawiaturowych.
http://blog.wasacz.net/2008/02/07/dodatkowe-znaki-pod-x11-z-klawiatury-akcent/
Co do compose key:
„Nie wykorzystamy do tego żadnego magicznego programu”
I nie wykorzystujemy. Czyste X-y.
„żadnych pierdółkowatych GUI-śmieci”
Rozumiem, że siedzisz cały czas na konsoli i X-ów w ogóle nie włączasz? To czemu wpis dotyczy właśnie ich?
„czy innego dodatkowego oprogramowania”
…i też tego nie wykorzystujemy. Słowem – argumenty anty- niecelne.
Eluś: Jak gdzieś opisują jak zrobić zupę, to też komentujesz, że można też kupić w paczce?
Proponuję Michale małą zabawę – przeanalizuj niniejszy wpis pod kątem pewnych słów kluczowych. Zastanów się, czy może trafić tu osoba, która szuka (np. za pomocą google) rozwiązania następującego problemu – jak wprowadzić w systemie GNU/Linux za pomocą klawiatury znak pauzy (ang. em dash).
Po lekturze niniejszego wpisu można odnieść mylne wrażenie, że jednym sposobem na znaki, których nie można wprowadzić bezpośrednio (w połączeniu z AltGr) jest przemapowanie skrótów klawiaturowych.
Mój komentarz nie jest informacją o zupie w paczce pod instrukcją gotowania zupy. To odpowiedź o alternatywnych rozwiązaniach w przypadku gdy ktoś zada pytanie: „Co mam zrobić, jeśli chcę zjeść zupę?”.
Eluś – proponuję małą zabawę – ściągnij i zainstaluj sobie ComposeKey i ciesz się jego używaniem. Wpis zostaw w spokoju, ponieważ zakłada on z góry, że NIE CHCESZ dodatkowych, GNOME-owych narzędzi (a co jeśli ktoś używa KDE? XFCE? IceWM?). Zaraz zrobię co do tego stosowną adnotację, tymczasem proszę cię, żebyś przestał tutaj podburzać, bo twoje komentarze to czysty Flamebait.
D4rky:
1. Nie nie wiem o jakim Flamebait piszesz.
2. ComposeKey to nie jest rozwiązaniem charakterystycznym dla Gnome. Jakbyś się zapoznał, z podanym przeze mnie wcześniej linkiem, to byś o tym widział.
3. Oczywiście zastosuję się do Twojej prośby. Nie będę się więcej wtrącał – ani do tego, ani do żadnego innego Twojego wpisu. Gdybym wiedział, że jedyną odpowiedzią na mój komentarz będą okrzyki urażonych linuksowych funboy’ów to bym się nie wtrącał (i przy okazji nie tracił czasu). No offence.
„ściągnij i zainstaluj sobie ComposeKey”
O my ROTFL. D4rky, wiesz że tego nie trzeba ściągać i instalować? Wystarczy dopisać na standardowych X-ach w pliku xorg.conf małą linijkę:
Option „XkbOptions” „compose:[cośtam]”
Chociaż nie, nie standardowych – to też wymaga XKB.
19-letni geek-webdesigner uczęszczający do ZSE w Bydgoszczy. więcej...
Michał Górny
Po cholerę resetować? Wystarczy ‘setxkbmap’. To raz.
A dwa, że modyfikowanie standardowych map klawiatury to głupi pomysł. Przy pierwszej aktualizacji standardowa mapa nadpisze zmiany. Znacznie lepiej stworzyć własną mapę, zainclude’ować standardową i nadpisać co trzeba.
Zauważ też, że powstrzymałem się od uwagi, że w Debianie pewno aktualizacje są tak rzadkie, że nie bierze się tego pod uwagę < ;.