web-dev-qa-db-ja.com

十分に活用されていないキーボードキーを修飾キーに変更するにはどうすればよいですか

私は次のような韓国語のキーボードを持っています:

enter image description here

漢字(한자)、のすぐ左 space、韓国語で入力してもほとんど利用されていませんが、 i3ウィンドウマネージャーのmodキー として左手の親指の主要な不動産にあります。それは解放されます Alt 私のコードエディタで使用するため。

私の質問は:漢字キーを修飾キーに変えるにはどうすればよいですか?

xevでキーを確認しました。

KeyPress event, serial 32, synthetic NO, window 0x2200001,
    root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646),
    state 0x0, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 32, synthetic NO, window 0x2200001,
    root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646),
    state 0x20, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

キーコード131 = 0x83

xmodmapの出力から、mod3 利用可能です。

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

私は試した xmodmap -e "add mod3 = Hangul_Hanja"結果は次のようになります。

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hangul_Hanja (0x83)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

...追加後set $mod Mod3 i3構成ファイルに移動して再起動すると、修飾キーがまったく表示されなくなりました。つまり、機能しませんでした。

また、漢字キーは通常の修飾キーのように動作しません。キーを押し続けると、キーストロークが繰り返されますが、通常の修飾キーでは作成されません。

家の中には、専門知識を提供できるキーボードの専門家がいることを願っています。

Linux Mint 18(Cinnamon)i3ウィンドウマネージャー

7
Verax

X11モディファイアの処理は少し独特です。キーを取得してモディファイアとして宣言することはできません。モディファイア設定とkeysym設定の間で一貫している必要があるものがいくつかあります。

古典的な修飾子は、ShiftControlAltMetaHyper、およびSuperです(それぞれ2つのキーシムがあります)例:Shift_LShift_R)(さらに、動作が多少異なるCapsLockとNumLock)。ほとんどのアプリケーションは、修飾子として使用される他のキーシムでは機能しません。

したがって、漢字キーを修飾子として使用するには、それをHyper_Lにします(たとえば)。

keycode 131 = Hyper_L
remove Mod4 = Hyper_L
add Mod3 = Hyper_L

これにより、そのキーは漢字キーとしてまったく使用されなくなります。 xmodmapの代わりにXKBを使用する場合、両方の関数を保持する方法があるかもしれませんが、方法がわかりません。