Caps Lockキーを3番目のShiftキーにするにはどうすればよいですか?


18

Caps Lockキーを別のShiftキーと同じように機能させるにはどうすればよいですか?

ここには、再割り当て、またはカスタムコマンドを起動することについての質問がたくさんあります。別のShiftキーのように機能させたいだけです。他のキーがそれらの動作を変えないようにしたいだけです。

キーボードレイアウト/ Caps Lockキーの動作では動作しません。CCSMでそれを再マップする方法がわかりません。

今は英国のキーボードを使用していますが、米国のキーボードで入力することを学びました。左の小さなShiftキーは、DRIVING ME NUTSです。



1
@ David-yourfriend OPは、具体的にはxmodmap機能しないと述べました。
-TheWanderer

1
xkbでは、これはシンボルではなく特定のキーの組み合わせをアクションに変換する互換性マップと関係があるように見えます。これには、現時点で利用可能な時間よりも多くの調査とテストの時間がかかります。機会があれば、これをさらに掘り下げます。そうでない場合は、おそらくこのパン粉が誰かを正しい方向に導きます。
オタク長老

回答:


13

@ Zacharee1の回答を展開:

でバックアップを作成する cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

その後で編集しgksu gedit /usr/share/X11/xkb/symbols/pcたり、お気に入りのエディタ。

次の行(22)を見つけます。

key <CAPS> { [ Caps_Lock ] };

に変更します

key <CAPS> { [ Shift_L ] };

そして次の行(36):

modifier_map Lock { Caps_Lock };

に変更します

//modifier_map Lock { Caps_Lock }; (ロックを無効にすることで、実際にコメントアウトする必要があります)

テストでは、Num Lockまだ期待どおりに機能することが示されています。さらにテストを行ったところ、16.04では、変更されていないシステムでもキーボードインジケータライトが少し失読しているように見えました。ログイン時にスクロールロックインジケータはオンになりますが、スクロールロックはオフになり、Num Lockは消灯しますが、Numロックはオンになります。左のCtrlキーをタップするとこの動作が解決されるようで、KVMスイッチの使用に関連しているかどうかはわかりません(これは可能です)。

注:さらにテストすると、NumLockインジケータライトは KVMスイッチがなくても不安定であり、NumLockとの同期を取り戻すために2回タップする必要があることが示されています。同期を取り戻すために2回。これが発生する理由は、おそらく新しい質問の根拠です...

元の問題に対するもう1つの簡単な解決策は、安価なUSキーボードを入手し、USキーボードマッピングを使用することです。

出典:@ Zacharee1の回答と分析/usr/share/X11/xkb/symbols/pc、試行錯誤テスト


だからあなたはその36行目を無効にする必要がありましたか?に変更するShift_Lだけで、capslockが完全に無効になりました。
TheWanderer

@ Zacharee1 Numlockへの影響の原因は、Tom Brossmanがあなたの投稿のコメントで言及し、その理由だけでそれを削除したことだと思いました。
オタク長老

うーん。それかもしれません。Zannaが英国の役員会を持っているので、VMでテストできるようになるかどうかを見ています。
-TheWanderer

@ Zacharee1それは、テストに使用できるハードウェアがなく、完全なテストが不可能な場合にロジックに依存することが多いため、素晴らしいことです。
オタク長老

それがついにそれを行い、テストされ、動作しました(少なくとも今のところ)。キーボードのNum Lockランプが消えているのは奇妙ですが、ログインするとデフォルトで追加の数字キーが有効になり、それが私が望んでいたことです。ありがとう!
トムブロスマン16

10

CapsLockキーを変更して「a」を生成する方法を適応させると、そこに到達できますか?(例えば)。

キーLockから(= Caps Lock)修飾子を削除し、Caps LockこのキーがShift_Lkeysymを送信することを宣言します。

remove Lock = Caps_Lock
keysym Caps_Lock = Shift_L

または、Lock修飾子を削除して修飾子を追加することもできますShift

remove Lock = Caps_Lock
add Shift = Caps_Lock

どちらにしても、これらの行はfileに入ります~/.Xmodmapxmodmap ~/.Xmodmap;をロードしてテストします。デフォルト環境でログインすると、ファイルは自動的に読み込まれます(または、少なくともGnome時代でした)。


2
完璧でした。「.Xmodmap」という名前のホームディレクトリに新しい空のドキュメントを作成し、最初の例を貼り付けました。次に、ターミナルで「xmodmap〜/ .Xmodmap」と入力して、すぐに有効にします。これらは両方とも、リンクされた回答で説明されています。ありがとうございました。
トムブロスマン

2番目のコマンドセットは私には機能しませんが、最初のコマンドセットはうまく機能します。Caps Lockを押してもキーボードのライトが点灯しないため、潜在的なOCDがトリガーされることもありません。
レオンシオ

良い答え、ジル!:だけでは、これはあまりにも、1つのコマンドとして行うことができ、あなたの答えに追加するxmodmap -e "clear Lock" -e "keysym Caps_Lock = Shift_L" と、元に戻すsetxkbmap -option に書き込みをしない、~/.Xmodmapファイルが、必要なときに使用することができ、およびスタートアップアプリケーションに追加。非常に良い答えです!
セルギーKolodyazhnyy 16

7

失敗した回答に対する以前の試みを無視して、capslockを完全に左シフトに変えるものを見つけました。トグルする必要はありません。永続的であり、非常にシンプルだと思います。

変更方法を紹介する前に、まずバックアップを作成することをお勧めします。

走る sudo cp /usr/share/X11/xkb/symbols/pc ~/pckeybak

バックアップができたので、編集に取り掛かりましょう。

お気に入りのテキストエディタを使用して、このファイルをルートとして編集します。

/usr/share/X11/xkb/symbols/pc

次のようなセグメントを見つけます(一番上、22行目です)。

key  <TAB> {    [ Tab,  ISO_Left_Tab    ]   };
key <RTRN> {    [ Return                ]   };

key <CAPS> {    [ Caps_lock             ]   };
key <NMLK> {    [ Num_Lock              ]   };

編集する

key <CAPS>  {   [ Caps_lock             ]   };

することが

key <CAPS> {    [ Shift_L, Caps_Lock    ]   };

代わりに。(Caps_Lockafter Shift_L,は不要な場合があります。)

ディスプレイマネージャーを再起動し(通常sudo service lightdm restart)、capslockは左シフトになります。(注:私のテストマシンはGNOMEを使用しているため、再起動するgdm必要がありましたが、フォールバックTTYで奇妙なちらつきが発生し、再起動するgdmことはありませんでした。完全に再起動する必要がありました。)

これは実際にテストでき、動作することを確認できます。

Ubuntu 13.04の永続的なxmodmapから適応


感謝しますが、これはNum Lockを妨害します。私の初期のトラブルシューティングでは、Caps_lock> Shift_Lの変更/usr/share/X11/xkb/symbols/capslockもNum Lockに干渉しました。16.04については何か異なることがあります。たとえば、Num Lockライトはブート時にオンのままでしたが、現在はLightDMログイン時に消えます。ソリューションをテストすると、Caps LockがShiftに変更されますが、Caps Lockを初めて押すとNum Lockがオフに切り替わり、Num Lockを2回押すと元に戻ります(初回のみ)。奇妙な。本当にこれまでのところ助けを感謝します。
トムブロスマン16

おそらく、「16.04でCaps LockがNum Lockとの干渉を再マップしないようにするには」という新しい質問をする必要があります。しかし、私はここで根本原因を見つけたいです。どちらか...というか、キーボードを開くと、それにはいくつかの物理的な変更を行うことの時間
トムBrossman

それは変だ。実行するとnumlockは再び機能しますxkbset nullify lockか?
-TheWanderer

@TomBrossmanこれがあなたのために何かを変えるかどうかはわかりませんが、私にとってはうまくいきます。ただの代わりにShift_L入れてくださいShift_L, Caps_Lock。ブラケットが揃っていることを確認してください。
-TheWanderer

1
@TomBrossman sudoを使用するのは、それが危険ではない場合に使用するのが好きです。ファイルを編集したとき、シフトのLは大文字で、Caps Lockも大文字でした。奇妙な。NumLockも私にとってはうまく機能するため、奇妙です。このすべてが奇妙です:p
TheWanderer

3

14.04の場合

ワンライナー:

xmodmap -e 'keycode 66=Shift_L'

ただし、予期しないケースで66は正しいキーコードではないため、最初xevにコンソールで実行してを押しCapsLockます。次に、次のようなものが表示されます。

KeyPress event, serial 27, synthetic NO, window 0x1200001,
    root 0x101, subw 0x0, time 6417361, (340,373), root:(342,393),
    state 0x0, keycode XX (keysym 0x0207, Caps_Lock), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

正しいキーコードは、に示されているものXXです。


1
バウンティメッセージを見てください:Xmodmap trick no longer works and xkb handles this now.
-TheWanderer

ああ!16.04が原因ですか?14.04で動作します。バウンティコメントは明記されていないようです。

私は賞金を支払わなかったので、本当に知りません。
TheWanderer

申し訳ありませんが、これは16.04の新規インストール用です。左または右のシフトキーは問題ありませんが、質問のために左を選んだのは、隣接しxevており、異なるキーとしてそれらを見るからです。
トムブロスマン16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.