Openboxがxmodmap構成を上書きする


9

Linux Mint 13を実行しているラップトップにopenboxをセットアップしています。CapsLockキーを追加のコントロールキーとして機能させたいです。必要な設定を~/.Xmodmapファイルに入れ、実行して確認しました

xmodmap ~/.Xmodmap

正常に動作します。

ただし、openboxセッションに再ログインしても、これらの重要な変更はありません。上記のxmodmapコマンドを実行すると、再び機能しますが、起動時に自動的に実行されるようにしたいと思います。

興味深いのはzenity~/.config/openbox/autostartファイルに次のようにテストコマンドを追加したことです。

zenity --info --text=Hello

これにより、小さなダイアログウィンドウが生成され、ダイアログが閉じられた後にのみ終了します。

これで、openboxセッションに再ログインすると、Caps Lock はzenityダイアログが閉じるまで Ctrlキーとして機能します。そのダイアログを閉じると、Caps Lockはデフォルトの動作に戻ります。

私はこれでグーグルで何も見つけていないので、ここで助けを求めています。何がうまくいかないのか考えていますか?

更新:

私はこれを理解しようとしました、そして私の実験では、私は自分の/usr/bin/xmodmapファイルをにコピーして、次のbashスクリプトでファイルを/usr/bin/xmodmap_置き換えました/usr/bin/xmodmap

#!/bin/bash

{
    echo '-------'
    date
    echo xmodmap "$@"
} >> ~/xmodmap-calls

exec /usr/bin/xmodmap_ "$@"

そのため、システム上のいまいましいスクリプトが実行されるたびにxmodmap、私はそれを知るようになります。

これで、私は再ログインし、私の~/xmodmap-callsファイルでエントリを1つだけ見つけます~/.Xmodmap。だから、私はxmodmapそれが私の変更を上書きしているわけではないと考えました。

次に、少しグーグルでsetxkbmapコマンドを紹介しましたが、明らかに同じこともできます。上記のxmodmapと同様に、その実行可能ファイルも置き換えました。そして、私は犯人の命令を得ました!

setxkbmap -option terminate:ctrl_alt_bksp

私はそれが何をしているのか全くわかりませんが、xmodmap ~/.Xmodmap(私の設定を正しく適用した)実行後、上記のコマンドを実行すると、変更がリセットされます!編集:これは本当に面白いことが判明しています。setxkbmap引数なしのコマンドだけで、変更内容がxmodmap ~/.Xmodmapコマンドによって上書きされます。

今、私は2つのことを理解する必要があります、これはどこsetxkbmapから実行されているのか、なぜそしてどのようにこれを修正するのですか?私はまだ調査中ですが、いくつかの助けを真剣に使うことができます:)

アップデート2

と地獄にxmodmap。のsetxkbmap呼び出し元がわかりませんが、setxkbmapコマンドを使用してCaps LockをCtrlとして動作させる方法を見つけました。

setxkbmap -option ctrl:nocaps

openboxを起動する直前。素晴らしい作品。Caps Lockキーは、Ctrlキーとして機能し続けます。xmodmap決して実行されません。

これらのことを知っている人が洞察を提供できるように、この質問はここで開いたままにしておきます。また、私の後にこれに直面する人のために:)

アップデート3

.config/openbox/autostartpedrosaurioからリクエストされたmyの内容は次のとおりです。

#!/bin/bash

# Set the wallpaper.
feh --bg-scale /wall.png

# Set default brightness.
xbacklight -time 1 '=40'

# Compositing.
xcompmgr &

# The panel.
tint2 &

# Start a terminal too.
roxterm &

私の知る限り、これはキーボードとは何の関係もありません。また、ここに私のセッションを開始するスクリプトがあります:(lightdmで実行)

#!/bin/bash

setxkbmap -option ctrl:nocaps

exec openbox-session

おそらく何らかのキーボード構成を使用しているでしょう。たとえば、適用した変更を元に戻すキーボードレイアウトまたは類似のものを選択してください
Ulrich Dangel

キーボード構成をいじった他の唯一の場所は、GUIキーボードレイアウトの設定ウィンドウです。ここで、Caps Lockキーを追加のCtrlとして動作するように変更しました。シナモンDEでは、再ログインした後でも、Caps LockがCtrlキーとして機能します。シナモンのみの構成だったと思いますが、よくわかりません。
Shrikant Sharat、2012

自動起動スクリプトにコマンドをどのように追加しますか?
pedrosaurio 2012

autostartファイルを投稿できますか?
pedrosaurio

回答:


1

同様の問題が発生していました。それはibusが原因であることがわかりました。サービスが不要なため、アンインストールしました。

setxkbmapをスクリプトで置き換えるというトリックを使って犯人を見つけましたがps -AF --forest、setxkbmapの呼び出し元を特定するためにも追加しました。


0

自動起動スクリプトがわからない場合、アンパサンド(&)を使用してコマンドをバックグラウンドで実行させることにより、適切な構文を使用していないことに間違いはありません。

.config/openbox/autostart次のようにファイルを編集してみてください。

# Run the system-wide support stuff
#. $GLOBALAUTOSTART
# Programs to launch at startup
# Programs that will run after Openbox has started
(sleep 1 && xmodmap ~/.Xmodmap ) &

疑問がある場合は、openbox wikiを見て&、各エントリの後にすべての例がどのように表示されるかを確認してください。

http://openbox.org/wiki/Help:Autostart


自動起動ファイルが空です。ある時点xmodmap ~/.Xmodmapで、そのファイルに含まれていました(がない場合&、必要とは思われませんでした)。私は、openboxセッションを開始するスクリプトでxmodmap(そして今はsetxkbmap)呼び出しています。exec openbox-sessionを実行する直前に、setxkbmapコマンドを実行します。
Shrikant Sharat

また、他のすべてが読み込まれた後に変更sleep 1xmodmap適用するように遅延を追加しても、ほとんどの場合は機能しますが、ソリューションに自信が持てません。代替案がある場合、私はそれをしたくない。
Shrikant Sharat

すべてのコメントとsleepコマンドを明らかに回避できますが&、各エントリの後に必要です。そうしないと、最初のエントリの後のすべてのプログラムがまったく実行されません。
pedrosaurio

はい、それが長時間実行されるアプリ/プロセスである場合、a &を追加しないとブロックされます。zenityコマンドでこの動作を使用して、完了後にxmodmap変更が上書きさ ていることを確認しましたautostart。私の自動起動はサイズが大きくなり、すぐに質問に貼り付けます。ただし、キーボードとは関係ありません。
Shrikant Sharat

また、sleepコマンドを使用しない場合、によって行われた変更はxmodmap、自動開始ファイルが完了するとすぐに上書きされます。
Shrikant Sharat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.