物理キーの破損によりセッションマネージャ(または少なくともSLiM)に対してxmodmapファイルを設定する方法

物理キーの破損によりセッションマネージャ(または少なくともSLiM)に対してxmodmapファイルを設定する方法

私はXセッションマネージャとしてSLiMで直接起動するようにラップトップを設定しました。

ところで、私のラップトップの「M」キーが壊れました。私はxmodmapを使ってログイン時に無関係なメニューキーを再マッピングすることでこの問題を解決しました。

keycode 135 = m

.xinitrcファイルでxmodmapを次のように呼び出しました。

xmodmap ~/.xmodmaprc

ログイン後は正常に動作します。しかし、私のユーザー名に「m」が含まれているため、ラップトップキーボードを使用して直接入力することはできません。default_user私の作品に1行だけ追加すれば少なくとも/etc/slim.confログインは可能ですが、間違ったパスワードを入力すると、USBキーボードを接続するか、システムを完全に再起動する必要があります。

私が見つけたこの問題Stack Exchangeで.xmodmaprcファイルを指定されたパス( `/etc/X11/Xmodmap)にコピーしました。しかし、これはうまくいきませんでした。

システム全体で動作させるにはどうすればよいですか?役に立つなら、私のディストリビューションはArchです。

答え1

私もアーチはありませんが、オンラインでパッケージを見ました。xorgxinit次のファイルが必要です。

/etc/X11/xinit/xinitrc

ここにxmodmapコマンドを追加すると機能します。スクリプトは、サーバーの起動時にサーバーによって実行されます。

より良いもの、以下のすべてのファイルを実行するような/etc/X11/xinit/xinitrc.d/ので、そこにxmodmapを実行する実行ファイルを追加するだけです。

答え2

私は物理キーの破損に対する一般的なソリューションを作成するためにXKBを使用しようとしました。https://gitorious.org/xkb-replace-broken。私はそれをきれいにしませんでした。 (でも、残念ながら元の変更されていない状態をコミットしていなかったため、導入した変更を確認するのは簡単ではありません。完了したら、クリーンアップして結果の改訂履歴を投稿しようとする可能性があります。)私の記憶が正しい場合、うまくいきました。

私の考えは、(完全に動作するキーボードを持つために)最低レベルのキー(キーコード)を再マッピングし、すべての組み合わせとレイアウトが壊れたキーを置き換える必要がある新しい物理キー(私の場合は「T」)を使用するようにしますすることです。 。

以下では、新しいキーコードマッピングを見ることができます。「nohack」ブランチの最後のコミット。私は行を変更する/usr/share/X11/xkb/keycodes/evdevために分岐しました。/usr/share/X11/xkb/keycodes/evdev-with-broken-t

alias <AD05> = <PAUS>;

(最初のバージョンではそれがハッキングだと思って、ちょうどpristineを編集しました。接続されたコミットでハッキングがキャンセルされ/usr/share/X11/xkb/keycodes/evdevました。「hack」バージョンが動作すると確信していますが、「nohack」ブランチについてはわかりません。)

次に、新しいXKBオプション(「broken:t」 - 上記のコミットを参照)を定義して追加しました。XKB構成ファイルxorg.conf(もちろん、他の構文を使用して同様のオプションをALTLinuxに配置することも、ブート時にあなたまたは同様のxinit人にこれらのオプションを実行するように要求することもできます。)setxkbmap

答え3

ログイン画面にXサーバーが完全にロードされていません。ログインすると、Xession.dのすべてのコンテンツがロードされます。ログイン画面で実行される唯一のものはgdm(gnomeを実行している場合)とデフォルトのXサーバーです。ログインする前にXサーバーに接続するには、/etc/gdm/PreSession/Defaultスクリプトを変更する必要があります。

ログイン前にXがキーを再マップできるように、gdmのPreSessionスクリプトでxbindkeysを実行するように設定できます。

関連情報