web-dev-qa-db-ja.com

NUMLOCKキーをDELETEに再マップする方法は?

キーボードのレイアウトが原因で、numlockを永続的に押して、numlockキーを削除キーとして使用したいと考えています。これが機能しないようです。これを行う方法についてのアイデアはいただければ幸いです。

編集:私はUbuntu 16で実行しています

これが私が試したものです:

NumlockxでXmodmapを使用する

この質問 に触発されました。私の理解では、xmodmapは非推奨であるため、これはおそらく素晴らしいアイデアではありません。

  • ~/.Xmodmapという行でファイルkeycode 77 = Delete NoSymbolを作成します
  • xmodmap ~/.Xmodmapを実行します
  • numlockx onを実行します

これにより、numlockが削除として機能し、初めてnumlockキーを押すまで、テンキーが有効になります。次にnumlockキーを押すと、テンキーが無効になります。

XKBを使用

  • /usr/share/X11/xkb/symbols/usを編集して、基本キーマップの最後にkey <NMLK> { [Delete, Num_Lock] };を追加します。
  • コンピューターを再起動

また試しました:

  • /usr/share/X11/xkb/symbols/usを編集して、基本キーマップの最後にreplace key <NMLK> { [Delete, Num_Lock] };を追加します。
  • コンピューターを再起動

これには他の方法と同様の問題があり、作品を削除することができますが、テンキーはテンキーをオフにします。また、テンキーが有効になっていると、Windowsキーなどの他のキーを混乱させるようです。私はShift + numlockを使用してnumlockの制御を取得するのが好きです。 replaceを使用する場合と使用しない場合の違いはわかりません。

4

これはxkbのみを使用してこれを行う方法であり、xmodmapを使用するよりも優れていると思います。この回答には、元の質問よりも達成したいことの詳細が含まれています。 Xmodmapとxkbは常に一緒に機能するとは限りません。このアプローチにより、柔軟性が大幅に向上します。

これはすべて次のものです: https://wiki.archlinux.org/index.php/X_keyboard_extension

ここで動作するように見える利用可能なキーシムのリストがあります: http://docs.ev3dev.org/projects/grx/en/ev3dev-stretch/c-api/input_keysyms.html

これは手動で行われているため、さまざまなキーボードとの互換性の問題を防ぐために、コンピューターに既に存在する構成から始めることができます。これまでの実行例はconfig_files/linux/keyboardsにあります

まずxkbcomp $DISPLAY output.xkbを実行して、現在のキーボード設定を取得します。それから加えて:

    interpret osfLeft{
        repeat= True;
        action = RedirectKey(keycode=<LEFT>, clearmodifiers=Lock);
    };
    interpret osfRight{
        repeat= True;
        action = RedirectKey(keycode=<RGHT>, clearmodifiers=Lock);
    };
    interpret osfDown{
        repeat= True;
        action = RedirectKey(keycode=<DOWN>, clearmodifiers=Lock);
    };
    interpret osfUp{
        repeat= True;
        action = RedirectKey(keycode=<UP>, clearmodifiers=Lock);
    };
    interpret osfEndLine{
        repeat= True;
        action = RedirectKey(keycode=<END>, clearmodifiers=Lock);
    };
    interpret osfBeginLine{
        repeat= True;
        action = RedirectKey(keycode=<HOME>, clearmodifiers=Lock);
    };
    interpret osfEscape{
        repeat=True;
        action = RedirectKey(keycode=<ESC>, clearmodifiers=Lock);
    };

生成されたファイルの互換性セクションに。

タイプセクションの下部に、以下を追加します。

   type "CUST_CAPSLOCK" {
       modifiers= Shift+Lock;
       map[Shift] = Level2;            // Note that this maps Shift only of {Shift,Lock} to Level2. Alt+Shift will be mapped to Level2
       map[Shift+Lock] = Level3;       // but Lock+Shift won't map to Level2 even without this line.
       map[Lock] = Level3;
       level_name[Level1]= "Base";
       level_name[Level2]= "Shift";
       level_name[Level3]= "Lock";
   };
   interpret osfDelete{
       repeat=True;
       action = RedirectKey(keycode=<DELE>, clearmodifiers=Lock);
   };

interpret Caps_Lockを検索し、LockModsSetModsに変更して、Caps Lockが修飾子のみを設定し、修飾子をロックしないようにします。

Capslock + WASDを矢印キーとして機能させるには、キー<AD02><AC01><AC02><AC03>を編集して、タイプCUST_CAPSLOCKにし、それぞれにosfUposfLeftosfDownosfRightは3番目の位置にあります。

Capslock + HJKLが矢印キーとして機能するようにするには、キー<AC06><AC07><AC08><AC09>を編集して、タイプCUST_CAPSLOCKにし、それぞれosfLeftosfDownosfUposfRightは3番目の位置にあります。

Capslock + 0をホームとして登録し、capslock + $を終了として登録できるようにするには、キー<AE04>および<AE10>を編集して、タイプCUST_CAPSLOCKにし、それぞれosfEndLineおよびosfBeginLineは3番目の位置にあります。

Capslock +スペースバーをエスケープとして登録できるようにするには(vimに便利です)キー<SPCE>を編集してタイプCUST_CAPSLOCKにし、2番目の位置にspaceを付け、osfEscapeにします3番目の位置に。

Numlockキーを削除キーにしてcapslock + numlockを作成するには、<NMLK>のタイプをCUST_CAPSLOCKにし、位置1と2にosfDeleteを割り当て、位置3にNum_Lockを割り当てます。

次に、変更したファイルをxkbcomp output.xkb $DISPLAYを使用してサーバーにアップロードします。

すべてが機能する場合は、ファイルをどこかに置き、~/.Xkeymapが機能し、~/start_keyboard.shという名前のスクリプトを次のように作成します。

#!/bin/bash

xkbcomp ~/.Xkeymap $DISPLAY

実行可能(chmod u+x ~/start_keyboard.sh)にして、スクリプトを起動アプリケーションに追加します。

0

30秒のビデオをご覧ください https://imgur.com/3eLhv14

  1. キーを交換する Num_Lock & Delete 以下のコードを~/.xmodmaprcファイルに含めます。 xmodmapをまだ割り当てていない場合は、ファイルを作成します。

キーボードに基づいてキーコードを変更すると、以下のコードが生成されます。

keycode 77 = Delete
keycode 119 = Num_Lock
clear Mod2
add Mod2 = Num_Lock
  1. コマンドxmodmap ~/.xmodmaprcの実行後に、キーの交換が機能しているかどうかを確認します。
  2. キーの交換が機能した場合は、以下のようにxmodmapのスタートアップアプリケーションを作成します。

enter image description here

この時点で、あなたが望むものをほぼ達成しました。それは、 NUMLOCK として働く DEL と物理キー DEL として働く NUMLOCK

  • Numlock Stateのオンとオフを切り替えるには、 Shift+物理キー NUMLOCK 質問で述べたように、これはxbindkeysxteまたはxdotoolなどと組み合わせて使用​​してシミュレーションできます。 Num_Lock 物理的にあるキー DEL この段階でキー。

以下のコードをファイルに貼り付けます~/.xbindkeysrc.scm[〜#〜] reboot [〜#〜]xbindkeys用にまだ作成されていない場合は、ファイルを作成します。キーボードからの結果に基づいて、値"c:77"を変更します。 xbindkeys --keyを実行して物理キーを押す NUMLOCK

(xbindkey '(shift "c:77") "xte 'key Num_Lock'")

これは、 Shift+NUMLOCK それはシミュレートします DEL キーを押して、Num_Lock状態をオンとオフに変更します。

以下のGIFでは、左上のシンボル1とShiftを確認できます。Shift1 + NUMLOCKキーを押して離すと、シンボル1が切り替わります。

enter image description here

0
PRATAP