Emacsを使用できるようにするために、キーボードを再マップしようとしています。私の人間工学に基づいたキーボードでは、単一のControlキーを、左側の分離された4キーの島に配置しています。
OSはDebian squeezeです。
xmodmap
にフィードしようとしている行は次のとおりです。それらをファイル〜/ .Xmodmapに入れます。
コントロールのクリア Mod1のクリア ! Altキーは、キーボードの「オプション」と表示されています ! xevを使用すると、Alt_LおよびAlt_Rキーシムをそれぞれ送信することが示されます keysym Alt_L = Control_L keysym Alt_R = Control_R ! Super_LキーとSuper_RキーはWindowsキーです keysym Super_L = Alt_L keysym Super_R = Alt_R add Control = Control_L Control_R add Mod1 = Alt_L Alt_R
私の目標は私のオプションを作ることです(別名 Alt)キーはControlキーのように動作し、Windows(別名スーパー)キーを次のように動作させます Alt。
問題のキーに対してxevによって出力されるキーコードとkeysmsは次のとおりです。私のキーボード(Goldtouchエルゴノミックキーボード)には、コントロールキーが1つしかありません。
keycode 37(keysym 0xffe3、Control_L) keycode 64(keysym 0xffe9、Alt_L) keycode 133(keysym 0xffeb、Super_L) keycode 134(keysym 0xffec、 Super_R) keycode 108(keysym 0xffea、Alt_R)
xmodmap .Xmodmap
の実行中にxevが表示する内容は次のとおりです。
MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、first_keycode 204、カウント1 MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、first_keycode 64、カウント1 MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、first_keycode 108、カウント1 MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、first_keycode 206、カウント1 MappingNotifyイベント、シリアル34 、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、first_keycode 133、カウント1 MappingNotifyイベント、シリアル34、合成NO、ウィンドウ0x0、 リクエストMappingKeyboard、 first_keycode 134、カウント1
そして、これがxmodmap
によって返されるエラーです。
X失敗したリクエストのエラー:BadValue(整数パラメーターが操作の範囲外です) 失敗したリクエストのメジャーオペコード:118(X_SetModifierMapping) 失敗したリクエストの値:0x17 失敗したリクエストのシリアル番号:17 出力ストリームの現在のシリアル番号:17
これを解決する方法について何か提案はありますか?
これはすでに Debianバグ#564327 、 Debianバグ#565279 、 buntuバグ#524774 、および FreeDesktopバグ20145)として報告されています。 。 FreeDesktopのバグディスカッションに添付されているソースパッチがあります。 Ubuntuのバグディスカッションにはいくつかの回避策の提案があります。特に a .Xmodmap
回避策 。
Gilesによってリンクされた回避策を見ると、これが私にとってうまくいったことです。
clear Mod1
clear Mod4
keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R
add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R
OptionキーはControlキーのように機能し、WindowsキーはAltキーのように機能します。
別の修飾キーにすでに追加されている修飾キーにkeysymを追加しようとすると、問題が発生します。修飾子にキーシムを追加すると、場合によってはキーシムに付随する他のすべてのキーシムがその修飾子にも追加されることを知っておくことが重要です。
例えば:
clear mod5
add mod5 = ISO_Level3_Shift Mode_switch
結果として生じる可能性があります
mod5 backslash (0x33), Caps_Lock (0x42), ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
あなたはのようなものを持っているので
keycode 66 = Caps_Lock NoSymbol ISO_Level3_Shift
〜/ .Xmodmap内(xmodmap -pke
を介して現在のキーコードからkeysymへのマッピングを表示します)
次のようなこともしようとすると、問題のBadValueエラーが発生します
add lock = Caps_Lock
caps_Lockはすでにmod5モディファイアに追加されているためです。
これは実際の問題の答えにはなりませんが、問題の別の解決策です。 xorg.confを編集し、セクション「InputDevice」に以下を挿入します。
Option "XkbOptions" "ctrl:swapcaps"