私は60%のキーボードを入手することを検討しており、実際のキーボードを購入する前にそのレイアウトを試してみたいと思います。
矢印キーをCapsLock + ijklにマップし、実際の矢印キーを無効にしようとしています。再マッピングの方法はわかりましたが、実際の矢印キーを無効にしようとすると、再マッピングされたキーが壊れます。作業マップは次のとおりです。
keycode 66 = Mode_switch
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
上向き矢印を無効にするには、
keycode 111 =
そして、それを行うとすぐに、ijklは文字として機能しなくなりますが、修飾キー(Caps Lock)を押さなくても矢印として機能します。以前のマッピングを壊さずに矢印キーを無効にするにはどうすればよいですか?
読んで周りの情報を得た後。問題は、実際に再マッピングを行う前に修飾子を削除する必要があることのようです。
答えへ:
設定を変更すると、私のxmodmap
は次のようになります。
xmodmap:修飾子ごとに最大4つのキー(括弧内のキーコード):
shift Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Alt_L (0xcc), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3 Mode_switch (0x42), Mode_switch (0xcb)
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce)
mod5
Mode_switch
を調査すると、Caps_Lock
が正常にマッピングされたという結論に達します。
[Smalltalk@localhost ~]$ xmodmap -pke | egrep -e '(Mode_switch)'
keycode 66 = Mode_switch NoSymbol Mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch
次に、manページからの抜粋をxmodmapします。
keycode NUMBER = KEYSYMNAME ... The list of keysyms is assigned to the indicated keycode (which may be specified in decimal, hex or octal and can be determined by running the xev program). Up to eight keysyms may be attached to a key, however the last four are not used in any major X server implementation. The first keysym is used when no modifier key is pressed in conjunction with this key, the second with Shift, the third when the Mode_switch key is used with this key and the fourth when both the Mode_switch and Shift keys are used.
次の構成は機能しますが、i、j、k、lを使用している間はCaps_Lockを保持する必要があります(manページに記載されているとおり)。
vim ~/.Xmodmap
を編集:
! make Capslock the "Mode_switch" key
clear Lock
! All Mod must be cleared
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
! clearning current Caps_Lock assigment and assigning it new one
keycode 66 =
keycode 66 = Mode_switch
! setting all the modification keys
add Mod1 = Alt_L Alt_R Meta_L
add Mod2 = Num_Lock
add Mod3 = Mode_switch
add Mod4 = Super_L Super_R Hyper_R
! Clear must be done before configuring it
keycode 31 =
keycode 44 =
keycode 45 =
keycode 46 =
! Configuration (first column normal type, second with shift and second with Mod_switch)
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right
! Clearing the arrow keys and some functional keys like home
keycode 111 =
keycode 113 =
keycode 114 =
keycode 116 =
keycode 112 =
keycode 117 =
さて、大きな問題になります。
Caps_Lockがオンのときにi、j、k、lキーを機能させる方法は?おそらくxkb
に変更を加える必要があります。
編集
注:これはすべてのキーボード、すべてのレイアウトに適用されるため、テストに適しています。 xkb
を介して適切に実行する場合は、独自のレイアウトを作成し、group1とgroup2 +にマッピングを実行させる必要があります。
以下は、キーボードのテストに最適なハックです(../basic
ファイルのバックアップを忘れずに!):
警告これはすべてのキーボード、すべてのバリアントに適用されます。
ファイルの編集:Sudo vim/usr/share/X11/xkb/compat/basic
# Add Caps_Lock to virtual modifiers
virtual_modifiers NumLock,AltGr,Caps_Lock;
# change FROM:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= AltGr;
action= SetGroup(group=+1);
};
# TO:
interpret Mode_switch {
useModMapMods= level1;
virtualModifier= Caps_Lock;
action= LockGroup(group=+1);
};
# change from
group 2 = AltGr;
TO:
group 2 = Caps_Lock;
注:複数のレイアウトがある場合、それらに干渉する可能性があります。
コメントする代わりに答えを書いて申し訳ありませんが、それでも十分な評判がありません。これはあなたの質問に答えないことを私は知っていますが、それはあなたの問題を解決することができます。
OSでキーを再マッピングする代わりに、キー自体の再マッピングをサポートするキーボードを購入することができます。特に QMKファームウェア でサポートされているキーボード。互換性のあるすべてのキーボードのリストを見つけることができます ここ 。
このファームウェアを使用すると、すべてのキーが異なることを実行できる多くのレイヤーを追加するなど、任意のキーを任意のアクションにマップできます。完全にカスタマイズ可能であることを除いて、ラップトップでfnキーを押すのと同じだと想像してください。どのキーがどのレイヤーをどのようにアクティブにするかを選択できます。たとえば、レイヤーのオン/オフを切り替えたり、キーを押しながらアクティブのままにしたりすることができます。このようにすると、Caps Lock
be Caps Lock
をタップすると、別のレイヤー(ijkl
キーは矢印キー)に切り替えます。
唯一の欠点は、再マッピングではCコードで配列を編集する必要があることですが、実際には非常に簡単で、事前のプログラミング知識は必要ありません。 documentation は非常に広範で、始めるために必要なすべてを説明しています。
60%のキーボードオプションはたくさんありますが、ほとんどは自分で組み立てる必要のあるキットです。問題がない場合は、GH60、Satan、またはXD60ボードを確認してください。それらすべてを自分で組み立てたくない場合は、 Whitefox キーボードをチェックするか、 KBDFansストア で何かを見つけることができるかどうかを確認できます。ほとんどのキットの組み立てサービスを提供しているためです。