キーボードのレイアウトが原因で、numlockを永続的に押して、numlockキーを削除キーとして使用したいと考えています。これが機能しないようです。これを行う方法についてのアイデアはいただければ幸いです。
編集:私はUbuntu 16で実行しています
これが私が試したものです:
この質問 に触発されました。私の理解では、xmodmapは非推奨であるため、これはおそらく素晴らしいアイデアではありません。
~/.Xmodmap
という行でファイルkeycode 77 = Delete NoSymbol
を作成しますxmodmap ~/.Xmodmap
を実行しますnumlockx on
を実行しますこれにより、numlockが削除として機能し、初めてnumlockキーを押すまで、テンキーが有効になります。次にnumlockキーを押すと、テンキーが無効になります。
/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を使用する場合と使用しない場合の違いはわかりません。
これは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
を検索し、LockMods
をSetMods
に変更して、Caps Lockが修飾子のみを設定し、修飾子をロックしないようにします。
Capslock + WASDを矢印キーとして機能させるには、キー<AD02>
、<AC01>
、<AC02>
、<AC03>
を編集して、タイプCUST_CAPSLOCK
にし、それぞれにosfUp
、osfLeft
、osfDown
、osfRight
は3番目の位置にあります。
Capslock + HJKLが矢印キーとして機能するようにするには、キー<AC06>
、<AC07>
、<AC08>
、<AC09>
を編集して、タイプCUST_CAPSLOCK
にし、それぞれosfLeft
、osfDown
、osfUp
、osfRight
は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
)にして、スクリプトを起動アプリケーションに追加します。
30秒のビデオをご覧ください https://imgur.com/3eLhv14
~/.xmodmaprc
ファイルに含めます。 xmodmap
をまだ割り当てていない場合は、ファイルを作成します。キーボードに基づいてキーコードを変更すると、以下のコードが生成されます。
keycode 77 = Delete
keycode 119 = Num_Lock
clear Mod2
add Mod2 = Num_Lock
xmodmap ~/.xmodmaprc
の実行後に、キーの交換が機能しているかどうかを確認します。この時点で、あなたが望むものをほぼ達成しました。それは、 NUMLOCK として働く DEL と物理キー DEL として働く NUMLOCK。
xbindkeys
をxte
または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が切り替わります。