
私はDvořákタイピストです。私のコンピュータでは、dvorakがデフォルトで、他のコンピュータではsetxkbmap
(Xを使用するとき)またはloadkeys
(そうでない場合)を頻繁に使用します。しかし、「共有」システムはどうですか?
顧客のためにシステムを準備するなどのシステムタスクを実行するとき(Linux、主にRHベース)、時には管理者アカウントを共有します。私が引き受けた役割を果たした後に再び切り替えることを忘れてしまうと、すべてが崩れます。これ以上何も入力できないので、これは理解できます!
at
私は仕事を始めたときに仕事を始めようとしましたが、問題のシステムは機能しませんでしたatd
(変更できません)。 :-(
理想的には、ターミナルを開き、キーボードのレイアウトを切り替え、ターミナルを閉じるときにシステムが変更を「忘れる」ことを望みます。setxkbmap
一方、両方ともloadkeys
「より高い」レベルでレイアウトを変更します。
誰でもどんなアイデアがありますか?
(追加命令などを入力する必要がありますが、大丈夫です。他の人がそうするとは思えません。)
答え1
最も簡単な方法は、作業を終えた後にログアウトすることです。個人の変更はログアウトするまでのみ続きます。つまり、誰かのアカウントを邪魔するのが一般的なユースケースです。
以下を端末に入力/貼り付けます(bashまたはzshの実行)。
xkb=$(xkbcomp :0 -); trap 'xkbcomp - :0 <<<"$xkb"' 0 1 2 15; setxkbmap dvorak
正常にシェルを終了するか(exit
、Ctrl+ D)、端末を正常に閉じると(SIGHUP転送)、つまり通常の方法でシェルセッションを終了すると、トラップは元のキーマップを復元します。
同時に複数の端末でこれを実行しないでください。終了した最初の端末は元の構成を復元し、最後に終了した端末はこのコマンドが実行されたときに構成を復元します。
復元したいキーマップを知っていて、一般的なターミナルシャットダウンを処理したい場合は、それを単純化できます。
trap 'setxkbmap us' 0 1; setxkbmap dvorak
一般的なキーボード設定GUIコンフィギュレータで実行できるカスタマイズは復元されません。 (これは基本的に標準のXKBマッピングに存在するオプションです。)ユーザーのカスタム設定を復元するには、上記のxkbcomp :0 -
方法を使用して元のキーマップを保存する必要があります。
または、ウィンドウの切り替えレイアウトを提供するインターフェイスを使用して、1つのターミナルウィンドウに固執します(GUIアプリケーションを実行しないでください)。一部のデスクトップ環境では、この機能が提供されます。XFCE)、良い知識ベース。 Kbddをデフォルトのインストールで使用または構成する可能性はほとんどありませんが、デフォルトのデスクトップ環境にこの機能がある可能性があります。
あなたのユースケースには適用されませんが、ユーザーアカウントにログインしたときにユーザーのコンピュータに介入するユースケースには、適用されるいくつかの説明があります。
- これにより、元々設定されたレイアウトに微妙な違いが生じる可能性がありますが、
xmodmap
そのようなニュアンスに依存している人は、基本が機能するレイアウトから手で作成したキーマップを復元する方法を知ることができます。 - マルチレベル(マルチ言語など)構成では、現在アクティブなレベルが正しく復元されるかどうかはわかりませんが、レイアウトを頻繁に切り替える人はレイアウトを切り替える一般的な方法を使用します。
- これは、レベルを変更するのではなく、XKBレイアウトを変更するバックグラウンドアプリケーションによって提供されるレイアウト遷移を深刻に妨げる可能性があります。この場合、レイアウトを変更してDvorakに切り替えるように依頼する必要があります。
答え2
設定.profile
または同様
(1)Xが実行中かどうかをテストします($DISPLAY
)。
(2)現在のキーボードマッピングをファイルに保存します(setxkbmap -print
XKBの場合、modmap -pke
Xの場合はdumpkeys
コンソールの場合)。
(3) キーボードマッピングを設定します。
(4)シェルがシャットダウンしたときに古いキーボードマッピングを復元します。例をご覧ください。ここ。
これは複数の端末では機能しません。最初の端末がシェルを起動するときと最後の端末が終了するタイミングを決定するには、いくつかの「ロック」ファイルを使用する必要があります。
答え3
ハードウェア中心の解決策があるかどうか疑問に思います。指定されたキーボード(複数のキーボードがある)にのみ影響し、コアX11デバイスには影響しないオプションをsetxkbmap
使用します。-device
したがって、実際のDvořákキーボードを持っていて、元のキーボードを維持しながらキーボードを接続した場合、setxkbmap
キーボードを外しても問題にならないプログラムを実行できるはずです。xinput -list
各デバイスのIDを取得するために使用されます。 (必ずしも必要はありません。本物ドボラックキーボード、もう一つのキーボードです。 )1つの利点は、2人がそれぞれ独自のキーボードに入力でき、マッピングの競合がないことです。
単一のキーボードを試すことができます。メインコアの代わりにそのキーボードのIDを明示的に使用している場合、キーボードを抜いて再接続すると設定の変更は失われますか?