韓国でおしゃれなメカニカルキーボードを購入しました。一般的に、それは1つのことを除いて本当にうまく機能します-それは持っていても Alt そして Ctrl その右側のキー、これらのキーは「通常の」キーボードと同じコードを生成しません。
長い話、短い Alt ハングルキー(ラテン文字と韓国語文字の間の変更)および Ctrl はハンジャです(ハングルと「古い」韓国語文字の間で変換します)。私は複数のレイアウト-韓国語と私のローカル(ポーランド語)を使い、両方の世界のベストを保ちたい-それは正しいことを意味します Alt のキーコードを出力します Alt ポーランド語を入力しながら、ハングルでは韓国語で入力します。
韓国人は(キーコードが正しいので)箱から出して働いたが、ポーランド人は微調整が必要だった。アクティブな/usr/share/X11/xkb/symbols/pl
セクションに次の行を追加して、レイアウト(xkb_symbols
)を変更しました。
key <HNGL> { [ ISO_Level3_Shift ] };
key <HJCV> { [ Control_R ] };
そして、「inet」レイアウトのHNGL
とHJCV
に関連する行をコメントアウトしました。これらは私の変更を上書きしていたからです。
これらの変更の後、私は得た Alt 完全に動作しますが、まだ問題がありました Ctrl キーが正しく機能していません。一般的には動作しますが、テキストを編集するとき、たとえばを使用して1つのWordを削除します Ctrl+Backspace 組み合わせ、私はそうすることはできません。
このためにキーの繰り返しを無効にするためにxset -r 131
を実行しました Ctrl/ Hanjaキーですが、実際のようには動作しません Ctrl
再マップxev
のHanja
出力は次のとおりです。
KeyPress event, serial 34, synthetic NO, window 0x1000001,
root 0x13f, subw 0x0, time 49086462, (88,89), root:(3928,141),
state 0x10, keycode 131 (keysym 0xffe4, Control_R), same_screen YES,
XKeysymToKeycode returns keycode: 105
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
そして、ここはレギュラーです Ctrl (他のキーボードから):
KeyPress event, serial 39, synthetic NO, window 0x1000001,
root 0x13f, subw 0x0, time 49144922, (616,377), root:(4456,429),
state 0x10, keycode 105 (keysym 0xffe4, Control_R), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
システムがそのキーを本格的なものとして扱うように変更できるものはありますか Ctrl?
キーが修飾子である場合、キーを別のキーに割り当てることは一意です。これ answer には良い説明があります:
このアクションは、このような修飾子アクションである場合、現在の修飾子の状態を変更します。これは、単に「オン」の修飾子を記録するオペレーティングシステムに記録されたフラグのセットです。 [このレコード]は、さらにキーを押してマップするアクションに影響します。
したがって、キーをマップしようとすると、通常のキーとしてマップされ、複数のキーが押されたときの動作を指定する情報が失われます。
デモするには、xmodmap
を実行します。 control修飾子にマップされる2つのデフォルトキー(Control_LおよびControl_R)があることに注意してください。 xmodmap -e 'keycode 131 = Control_L'
を実行してからxmodmap
を実行する場合、コントロール修飾子にはまだ2つのキーがあるはずなので、キーは修飾子として認識されません。
修飾子としてマップするには:
修飾キーをクリアcontrol
xmodmap -e 'clear control'
ハンジャキーのキーコードを追加します
xmodmap -e 'keycode 131 = Control_L'
最後に、デフォルトの修飾子を追加し直します。
xmodmap -e 'add control = Control_L'
xmodmap -e 'add control = Control_R'
これで、xmodmapを再度実行すると、モディファイアコントロールに新しいキーが追加されたことに気付くでしょう。これは今では正しく動作するはずです。
ここ は、キーボードのキーに修飾子を再割り当てする公式のArch Linuxの手順へのリンクです。
編集:
永続的な変更の場合は、/usr/share/X11/xkb/symbols/pl
に追加します。
key <HJCV> { [ Control_L ] };
modifier_map Control { Control_L, Control_R, <HJCV> };