web-dev-qa-db-ja.com

Linuxでスーパーキー(Windowsキー)をCtrl / Alt / Shiftのように動作させるにはどうすればよいですか?

使用後 Ctrl + Xウィンドウで仮想デスクトップを切り替えるための13年間の「矢印キー」、私は最近、代わりにスーパーキー(私が再マップしたウィンドウキーとコンテキストメニューキー)を使用するように変更することを確信しました。これはほとんどの場合正常に機能します。ただし、これらのキーが送信しているキーイベントは、キーのような通常の英数字であるかのように、何かがまだ取得しています。

たとえば、Google Docsスプレッドシートで、セルの上でWindowsキーだけを押すと、そのセルの編集が開始されることに最初に気づきました。何も挿入せず、Firefoxがセルの編集を確認して開始するキーイベントを送信するだけです。これにより、Googleドキュメントの動作方法として作業していた共同ドキュメントで問題が発生し、何が起こっているのかを理解する前に、いくつかのフィールドのデータを誤って消去してしまいました。

私はスーパーキーを使うのが好きですが、スーパーキーをもっと Ctrl または Alt キーは修飾キーであり、2番目のキーが押されるまで何も送信しません。

私の設定は次のとおりです。

  • Ubuntu 10.10
  • XFCE 4
  • Microsoft Natural Ergo 4000キーボード(もちろんロゴに傷が付いています)
  • 以下は私の.Xmodmapファイルです。

lock = Caps_Lockを削除します

キーコード66 =エスケープ

!以下は、他のウィンドウのコンテキストメニューキーをマップしています。

キーコード135 = Super_R

編集:要求に応じて、Super_L(左ウィンドウキー)のキー押下とキーリリースに関連するxevからの出力を次に示します。

KeyPress event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849342, (177,174), root:(182,228),
    state 0x10, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0x8200001,
    root 0x15d, subw 0x0, time 2428849430, (177,174), root:(182,228),
    state 0x50, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
7
deltaray

XFCEに関連しないもの

それはあなたの問題に対する正確な答えではありません、それは申し訳ありませんが、それでも少なくとも誰かにとっては役立つはずです。 Gnomeでは、最近のUbuntuで修正されました。それによって私は治療することを意味します Win 修飾キーとしてではありません。昔は、例えばUbuntu 9.04では、次の変更を行う必要がありました。

System -> Preferences -> Keyboardに移動し、LayoutsタブでLayout options...ボタンをクリックし、Alt/Win key behaviorリストでDefaultの代わりにMeta is mapped to Win keys(またはMeta is mapped to Left Win)を選択します。

それは本当に何をしますか? $HOME/.gconf/desktop/gnome/peripherals/keyboard/kbd/%gconf.xmlファイルのaltwinオプションを変更します(または、存在しない場合は作成します)。

<?xml version="1.0"?>
<gconf>
        <entry name="options" mtime="1298496603" type="list" ltype="string">
                <li type="string">
                        <stringvalue>altwin     altwin:meta_win</stringvalue>
                </li>
        </entry>
</gconf>

Left Winを選択した場合、次の文字列値があります。

altwin     altwin:left_meta_win

Ubuntu 10.10では、Defaultが明らかに変更されているため、これは必要ありません。

しかし、あなたはGnomeではなくXFCEを持っているので、これはむしろあなたを助けません。

XFCE関連のもの

Xubuntu(9.10)をダウンロードし、少し遊んで、ようやく解決策を見つけました。

ただし、最初に、キーボードの設定はXFCEに実際にねじ込まれていると言わなければなりません。 Layoutタブの下のSettings -> Keyboardには、あまり多くのオプションがありません。そこでXkbOptionsを変更することはできず、~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboard-layout.xmlで手動で変更しても、上書きされます。そこで、/etc/default/console-setupXKBOPTIONSに追加してaltwin:meta_winを変更しました(他にオプションがある場合は、区切り文字としてカンマを使用してください)。それでも、運はありません。

tl; dr

解決策は何ですか?

キーボードは明らかに壊れているので、XFCEのキーボードの扱い方は気にしないでください。 setxkbmapを直接使用します:

setxkbmap -option altwin:meta_win

(またはleft_meta_win、あなたが好むものは何でも)

問題が本当に解決したことを確認する必要があります。 :)

それを永続的に適用する方法は?

echo -option altwin:meta_win >>~/.Xkbmap

代わりに/etc/X11/Xkbmapに書き込むことで、すべてのユーザーに対して実行することもできます。

altwin:meta_winまたはaltwin:left_meta_winが適用されているかどうかをすばやく確認するにはどうすればよいですか?

setxkbmap -print

xkb_symbolsの行には、altwin(meta_win)のようなものが必要です。

9
przemoc