Ubuntu'da kalıcı xmodmap 13.04


72

Xmodmap'ın Ubuntu 13.04 ile giriş yaparken çalışmasını sağlayamam. Ben sorubuntu dahil olmak üzere, etrafta araştırdım ve bulduğum tüm cevaplar işe yaramadı.

İstenilen eşlemeleri içeren ana klasörümde .Xmodmap adlı bir dosyam var. Manuel olarak çalıştırırsam, iyi çalışıyor, bu yüzden orada bir hata yok. Başlangıçta çalışmasını sağlamak için denedim:

  1. .xinitrcAşağıdaki komutlardan birini içeren çeşitli kullanımı :

    • xmodmap .Xmodmap
    • xmodmap ~/.Xmodmap
    • /usr/bin/xmodmap /home/NAME/.Xmodmap
    • if [ -s ~/.Xmodmap ]; then
      xmodmap ~/.Xmodmap
      fi
  2. Aynı varyasyonlarla kullanmak .Xresourcesyerine .xinitrc.

  3. Başlangıç ​​uygulaması olarak ayarlama.

Yukarıdakilerin hiçbiri Ubuntu 13.04'te (64-bit) çalışmıyor. Ayrıca klavye eşlemelerini global olarak değiştirmekle ilgili birkaç fikir gördüm, ancak bunların çoğu Ubuntu 13.04'te geçerli değildi (yani ilgili dosyalar belirtildiği yerde mevcut değildi) ve yine de genel ayarlara dokunmamayı tercih ediyorum.

Yanıtlar:


81

Ubuntu artık kullanmıyor xmodmap, bunun yerine kullanıyor xkb(anladığım kadarıyla bu, pencere başına klavye düzenlerini kolaylaştırıyor).

Sistem genelinde harita dosyaları

/usr/share/X11/xkb/symbols/

Haritalar, hiyerarşik olarak yüklenir, pcharita kök olarak ve hangi dilden olursa olsun (örn en. Kök çocuk).

Özel durumumda, klavyemdeki Sayfa Yukarı ve Sayfa Aşağı ile Fiziksel olarak fiziksel olarak yer değiştirdim, bu yüzden sistem genelinde pcharita üzerinde kabaca değişiklikler yaptım :

 key <HOME> {    [  Prior        ]   };
 key <PGUP> {    [  Home         ]   };
 key  <END> {    [  Next         ]   };
 key <PGDN> {    [  End          ]   };

NOT: Xorg'u yeni klavye haritanızı kullanmaya zorlamak için mevcut önceden derlenmiş haritaları (* .xkm) kaldırmanız gerekebilir .

/var/lib/xkb/

ve sonra Xorg'u yeniden başlatın.

Üzerinde çeşitli kaynaklar var xkb, fakat bu Ubuntu ile ilgili.


9
Ubuntu 14.04 itibariyle, anahtarlar arasında geçiş yapmanın en kolay yolu bu ne yazık ki. Xmodmap'ı Başlangıç ​​Uygulamalarına ekleyerek oturum açma sırasında çalıştırabilirsiniz, ancak askıya alırsanız, hazırda bekletme modları vb., Elle başlatmanız veya başlangıç ​​cini komut dosyaları oluşturmanız gerekir.
holocronweaver

Ben değiştiricileri bağlı tuşları eşleştirmek: unmodified shift altgr* shift+altgr. Ama ne hakkında left altve super key?
Farzher

7
İlk cümlenin doğru olduğunu sanmıyorum. Bunun için herhangi bir kaynağınız var mı? Tuşlarınızı yeniden eşleştirmenin "Ubuntu yolu" nun klavye haritalarını düzenleyeceğine inanmakta zorlanıyorum xkb. Kriptik olmanın yanı sıra, bu özel haritalarınızın xkbgüncellendiğinde silinmesi sorunu da var .
Mateus Araújo

1
Bununla birlikte, bu Ubuntu’daki anahtarların yeniden eşleştirilmesinde bulduğum tek güvenilir yöntem.
Mateus Araújo

1
Daha iyi bir yol olmalı. Eşlemek istediğim anahtar kodunu tam olarak biliyorum, ancak 217 anahtar kodu bile xkb'de listelenmiyor. Yeni anahtar kod eklemenin bir yolunu bile görmüyorum.
Jonathan,

13

Benim için, xkb yapılandırması, Sistem Ayarlarında bulunmayan bir şekilde 1 veya 2 anahtarı yeniden eşlemek istiyorsanız çok karmaşıktır. Ayrıca, çözüm '/ usr / share / X11 / xkb / symbols /' vb. Düzenlemeden kullanıcı tarafında kalmalıdır. Başlangıç ​​Uygulamalarını kullanarak 'xmodmap ~ / .Xmodmap' yükünü zorlayın. veya klavye düzenini değiştirin. Bu yüzden, holocronweaver'ın önerdiği gibi, bulduğum kod parçacıkları ile oturum başlangıcında yüklenecek bir python betiği yaptım, gerektiğinde '~ / .Xmodmap' dosyasını yeniden yükledim.

Hata raporunu # 1243642 (yorum # 6) kontrol edin ve buradan indirin .


1
Hala 15.10'dan beri çalışıyor :-) Teşekkürler!
lalomartins

Bu efsanevi senaryo ile bağlantı kopmuş gibi görünüyor. Biri onu github'a koyabilir mi?
Epigene,

Harika - ve sadece uygun cevap! 16.04'te çalışıyor. Python3'te çalışmasını sağlamak için değiştirildi: gi.repository import GObject'i gobject olarak "to gobject" to "".
Craig Hicks

1
@Epigene - Bağlantı şu anda orada
Craig Hicks,

Övgü olmak! Etrafında bir dahi çalışması var.
dmanexe

6

Ubuntu 14.04'te bu problemi yaşadım ve çözümü burada buldum . Görünüşe göre, Ubuntu giriş yaptıktan hemen sonra klavyeyi yapılandıramıyor ancak biraz sonra. Yani bir komut eklerseniz

sleep 4 && xmodmap ~/.Xmodmap &

için ~/.bash_profileo zaman (benim için yapar) çalışmalıdır.

EDIT: Bu sadece giriş yaptıktan sonra, işe başladıktan sonra değil gibi görünüyor. Bunu sonra araştıracağım.


1
Askıya alma / hazırda bekletme modundan sonra çalıştırılacak herhangi bir şansınız var mı?
Jonathan,

Hayır, ne yazık ki önyüklemeden sonra hala çalışamıyorum. Bu yüzden her açılışta bir terminal açıp şunu yazın xmodmap ~/.Xmodmap:(
dremodaris

ubuntu 16.04’de .profile
Vitor Abella

5

Dönüştürme Caps Lockiçine Esciçin vimkullanılmak

İşte benim anahtar haritalama başlangıç ​​betiği varyantı Bu dönüştürür Caps Lockiçine Esckullanılmak üzere her türlü klavyede vi, vimya gvim.

Q4w56'nın cevabından farklı olarak , bu cevap herhangi bir sonsuz while; dodöngü kullanmaz . Aksi takdirde, çift çekirdekli işlemcimin bir çekirdeği her 5 saniyede bir% 42'ye vararak dizüstü bilgisayarın pil şarjını ciddi şekilde azaltabilirdi.

#!/usr/bin/env bash
sleep 4
xmodmap -e "clear Lock"
xmodmap -e "keysym Caps_Lock = Escape"

Bir komut dosyası olarak kaydedin. Dosyayı çalıştırılabilir duruma getirin chmod +x. Komut dosyası adını ve konumunu Session and Startup → Application Autostart(Xubuntu'da) ekleyin .

Bu kullanıcının klavye davranışı, yeniden başlatma ve kapatmayla kalıcı kalır, ancak askıya alınmaz. Askıya alma yoluyla kalıcılık elde edilebilir , ancak ne yazık ki, kullanıcı düzeyinde kolayca değil, yalnızca sistem düzeyinde.

Bu klavyenin yeniden eşleşmesi için gerekçe

Günümüzün bilgi işlem dünyasında, Caps Lockanahtar için çok az kullanım kalmıştır . Genel olarak, her ikisi de netiquette ve sunum ve içerik ayırma nedeniyle ALL CAPS kullanmaktan kaçınmalıdır . Üstelik, metnin düzenlenmesi sırasında tuşa yanlışlıkla basılması her zaman hemen not edilmez, fakat her zaman daha da can sıkıcı davranışlarla sonuçlanır . Anahtarı birlikte devre dışı bırakmak ve kullanımı kolay bir sonuçta elde etmek için anahtar sonuçlara kolayca erişilebilecek şekilde yeniden düzenlemek .Caps LockvimvimCaps LockEscvim


Fonksiyonunu değiştirme Caps Lockanahtarı için gerçek bir hayat kurtarıcı olabilir vimkullanıcılara bir olmadan Apple MacBook Esctuşu .
Serge Stroobandt

3
Bu yeniden eşleştirmek daha iyi capslockiçin ctrl. Bu, birçok problemi daha çözer ve Vim'de, karışıklık için üzgünüm için capslock+ kullanabilirsiniz. Fakat bunu önermek zorunda kaldım. [Esc
user907860

Tam olarak ne askıya alınır? Dizüstü bilgisayarınızın kapağını mı kapatıyor? Ondan sonra çözümün işe yaramıyor mu? Dizüstü bilgisayarınızın kapağını kapattıktan sonra vim nasıl kullanılır?
Marko Avlijaš

@ MarkoAvlijaš How do you use vim after you close the lid on your laptop?Elbette kapağını açarak!
Serge Stroobandt

Haha bunu asla tahmin edemezdim. Büyük harf kilidi bundan sonra esc ile eşlenmemiş demek?
Marko Avlijaš

3

Ben de fcitx ile Ubuntu 16.04'te sorun yaşadım ve fcitx wiki üzerinde bir çözüm buldum , ancak fcitx'in 4.2.7 ya da daha yenisine ihtiyacı var

  • touch ~/.Xmodmap
  • config yaz
  • yeniden başlat ve fcitx otomatik olarak yüklemeyi deneyecek

Ayrıca sebebi ile ilgili bazı açıklamalar var.


1
Bu soruyu teorik olarak cevaplayabilse de , cevabın temel kısımlarını buraya eklemek ve referans için bağlantıyı sağlamak tercih edilir.
Videonauth

@Videonauth Cevabımı değiştirdim
Bluethon

Çok teşekkürler :) Yorumumu hala burada bırakarak inceleme ipucundaki kişilerin bir şeyleri değiştirdiğini görebilmelerini sağlıyorum.
Videonauth

@Videonauth bu benim ilk cevabım ve İngilizce konusunda yetersizim, bu yüzden bazı hatalar yaptım. ve tavsiyen için teşekkürler. : P
Bluethon

Rica ederim. Cevapları sağlamak topluma katkıda bulunmak için iyi bir yoldur.
Videonauth

3

@ Daniel'ın cevabı bana doğru yolu işaret etti, ama bunun üzerine genişletmek istiyorum.

Linux Mint 17.2 ve Ubuntu 16.04'te benim için çalışıyor.

Kullanmaya devam edebileceğimi düşündüğüm bütün çevirileri denedim xmodmap, ancak sistem uyku moduna girdiğinde hepsi başarısız oldu. Aynı şey setxkbmap, * settings-daemon'un (benim için xfce4'tir) betiğinden daha sonra çalıştığı durumlarda kullanılan başlatma komut dosyaları için de geçerlidir --- ve düzen gerçekten etkilenemez.

Sonunda bulduğum şey şu malzemeleri içeriyor:

1) En az klavye eşleme dosyası yazın /usr/share/X11/xkb/symbols. Dosyayı arayalım mylayoutBu kadar basit olabilir

xkb_symbols "basic" {
  name[Group1] = "My Layout";
  include "us"
  key <AE03> { [ 3, numbersign, sterling, sterling] };
  include "level3(ralt_switch)"
}
  • basic sadece bir isim, daha sonra tekrar görüşeceğiz.
  • name[Group1]Benzer sadece görünen bir isimdir, ancak daha sonra hiçbir rol oynayacaktır.
  • include "us"düz bize klavyeyi içerir. Aslında usaynı dizinde başka bir dosyadır. Bu uyarladığımız klavye düzeni. Gerektiği gibi farklı bir tane seçin. Not: Bu satırı sonlandırmak için noktalı virgül yok.
  • keyHat klavyenin bir uyarlamasıdır, daha takip edebilirsiniz. Bu <AE03>altındaki dosyalarda bulunabilir /usr/share/X11/xkb/keycodes. Kullanım xevanlamaya programı o "3" tuşlu anahtar kodu 12 sahiptir ve tekrarların dosyasını Xfree86o eşleştirilir <AE03>.
  • Sonunda başka includebir klavye seçeneğini etkinleştirmek için başka bir yönerge, bu durumda seviye-3 shift tuşu olmak için doğru Alt-tuşuna, yani sterlingyukarıda tanımladığım işarete erişim sağlayan bir tuşa sahip olmak istiyorum. level3sadece bir ralt_switchbölümü ile aynı klasörde bir dosya adıdır . Etrafınıza bir göz atın ve eklemeniz gerekenleri seçin.

2) did not koymak mylayoutsistem klasörüne. Aksine, sadece bu stok yazılımı olmadığını görmek için sadece sistem klasöründen sevdiğim bir klasöre yumuşak bir bağlantı yaptı.

3) Daha ben yaptım değil düzeltmek evdev.xmlgüncelleme sorunlarını önlemek için tekrar. Ancak bu, klavye konfigürasyon düzenleyicisindeki yerleşimi bulmak için gerekli olacaktır (xfce4 için xfce4-keyboard-settings). Bunun yerine kullanılan xfce4-settings-editorve değişmiş keyboard-layout->XkbLayoutiçin mylayout(dosya adı) ve XkbVariantkarşı basic(yukarıya bakınız). Daha sonra, mylayout/basicklavye ayarları editöründe de görüntülenir. Bir giriş evdev.xmlsadece düzeni seçebilmek için gerekli görünüyor.

Bu şekilde, klavye ayarları şimdi uyku kipinde kalır ve yeniden başlatılır.

Daha fazla arka planı burada bulabilirsiniz: http://www.charvolant.org/~doug/xkb/html/node5.html .

Uyku modu sorununu gidermeye yönelik başka bir yaklaşım (kendim denemedim), burada bulunabilir: https://www.vinc17.net/unix/xkb.en.html .

GÜNCELLEME: Aynı anda Mint 18.3 ile çalıştı, ayarları yukarıda açıklandığı gibi xfce4-settings-editor'de değiştirdim.

GÜNCELLEME: .Xmodmap tekrar okunur ve ayarları ~ / sanki 18.04 ile pencere yöneticisi olarak ekran yöneticisi ve Xfce4 olarak GDM3, görünüşe görünmek bir askıya hayatta kalmak için. (Çok nadiren askıya alma kullanıyorum ve dizüstü bilgisayarın hangi modda olduğundan emin değilim.)


2

REVİZYON

2018’in başındaki bir güncelleme devam etti - bekletme veya hazırda bekletme modundan sonra anahtar haritanın otomatik olarak yeniden yüklenmesi. /Etc/pm/sleep.d scriptlerini kullanan yöntemler çalışmayı durdurduğundan (kullanımdan kaldırıldı mı?), Bu sadece / daha yeni bir yol bıraktı, / lib / systemd / system-sleep ve biraz farklı komut dosyaları (keymaps üzerinde çalışmaya başladı!).

Bu nedenle, bu yayın kalıcılık için yeni bir yöntemle güncellenir ve çalışmaya başlayan normal ilk keymap yüklemesini de içerir. Bir .Xmodmap dosyasını .xkbmap dosyasına dönüştürme yordamı değişmeden kalır.

Bunun kullanıcı başına bir çözüm olduğuna dikkat edin. Cihaz başına cevap için, tek bir aygıta nasıl anahtar harita uygulanacağına bakın . Bu yöntem burada kullanılmak üzere uyarlanabilir.

İlk önce, .Xmodmap dosyasını istediğiniz gibi değiştirin. Bunlar doğrudan düzenlemek için .xkbmap dosyalarından daha kolaydır. Yüklendiğinde:

xmodmap .Xmodmap

sonra bir .xkb dosyasına dönüştürün:

xkbcomp $ DISPLAY $ HOME / .xkbmap

Başlangıçta otomatik yüklemek için, Başlangıç ​​Uygulamaları'nı açın, Ekle'yi tıklatın ve Komut satırına şunu girin:

xkbcomp /home/user/.xkbmap ": 0"

("kullanıcı", gerçek kullanıcı adıyla değiştirilir.) Ad için, Belki de Klavye Haritasını Yükle'ye girin. İsterseniz yorum ekleyin ve Kaydet'e basın.

Ana harita şimdi sistem önyüklendiğinde yüklenecek, ancak askıya alınma veya hazırda bekletme modundan çıkamayacak. Bunun için / lib / systemd / system-sleep adlı, belki de 60_xkbmap adlı yeni bir dosya oluşturun:

#!/bin/sh
case $1/$2 in
  pre/*)
    # Place pre-suspend commands here
    exit 0
    ;;
  post/*)
    # Place post-suspend commands here
    export DISPLAY=":0"
    export XAUTHORITY="/home/user/.Xauthority"
    su user -c "xkbcomp /home/user/.xkb/xkb-map $DISPLAY 2>/dev/null"
    ;;
esac

( Ref. ) Yukarıdaki gibi, gerçek kullanıcı adıyla "kullanıcı" değiştirin.

Tuş haritası şimdi otomatik olarak yüklenmeli ve kalıcı kalmalıdır. Not:

  • Geçerli LTS sürümü, 16.04 ve muhtemelen daha sonraki sürümleri için geçerlidir.
  • Yukarıdaki bağlantılı hata ipliğinin 14 numaralı postasından alınmıştır .
  • Daha önce orijinal yazıya uygulanan yorumlar.

Bu metodu şimdi çalışıyorum ve bir terminale başladığımda şöyle bir sürü mesaj alıyorum: Uyarı: <AB11> için hiçbir sembol tanımlanmadı (anahtar kodu 97) Uyarı: <JPCM> için hiçbir sembol tanımlanmadı (anahtar kod 103) Uyarı: <I120> (kod 120) için tanımlanmış bir sembol yok ...... birçokları bunun sonuçlarının ne olacağını tam olarak bilmiyor. Bilen var mı?
Kayıp bebek

Yukarıda belirtilen uyarılara rağmen bu yöntem çalışır, ancak geçici olarak çalışır - bir süre sonra haritalama bir şekilde unutulur ve süper anahtar varsayılan işlevine geri döner. Böylece diğer yoldan deneyeceğim - Mac'teki temel düzenleme kısayollarını Komut tuşu yerine Control tuşunu kullanarak yeniden açacağım ve çalışıp çalışmadığını göreceğim. Sadece kes-kopyala-yapıştır-geri al komutlarımın Mac ve Ubuntu'da aynı olmasını istiyorum. Bir şey kopyalamaya veya yapıştırmaya çalıştığımda, arama menüsü Ubuntu'da belirdiğinde çok sinirleniyorum.
Kayıp bebek

1

Ubuntu 12.04’ten 13.04’e yükselttiğimde bu da beni yanılttı.

Neyse ki bu ayara şimdi (veya belki de her zaman olmuştur) Klavye tercihlerinde kolayca erişilebilir ve farenin birkaç tıklamasıyla değiştirilebilir.

  1. Gidin Sistem Ayarları > Klavye Düzeni > Seçenekler ...
  2. Klavye Düzeni Seçeneklerinde key Ctrl tuşu konumu seçeneklerini ortaya çıkarmak için oku tıklayın .
  3. Onay işaretini Swap Ctrl ve Caps Lock'a yerleştirin .

İşte gidiyorsunuz: Sol Kontrol ve Büyük Harf Kilidi'nin açık konumları var.

~/.XmodmapDeğişikliği yaptıktan sonra silmeyi unutmayın .


Bu belki de reddedildi, çünkü xmodmap'a hitap etmiyordu, ama aslında Gnome Tweak kullanmanın bazı haritalarımın garip davranmasının nedeni olabileceğini keşfettim.
dragon788

Bunu 16.04'te görmüyorum, bu hala mümkün mü?
chrismarx

1
@ chrismarx Hayır, kaldırdılar. Günümüzde (16.04) belirlediğim XKBOPTIONS="ctrl:swapcaps"içinde /etc/default/keyboard.
saat

0

Başlangıçta bu betiği ekleyerek tatmin edici buluyorum:

while true;do 
    xmodmap -e "keycode 87=Prior"
    xmodmap -e "keycode 88=Next"
    sleep 5
done

Kullanmayı denedim xmodmap ./Xmodmap, ancak her çalıştırıldığında gözle görülür bir gecikme yaşanacak.


4
Herhangi bir sonsuz while; dodöngü kullanmaktan kaçınılmalıdır. Çift çekirdekli işlemcimin bir çekirdeğinin her 5 saniyede% 42 oranında çarpmasına neden oldu ve bu da dizüstü bilgisayar pilimin şarjını ciddi şekilde azalttı!
Serge Stroobandt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.