CtrlキーとAltキーの再割り当て - xmodmap 'BadValue'エラー

CtrlキーとAltキーの再割り当て - xmodmap 'BadValue'エラー

Emacsを使用できるようにキーボードを再マップしようとしています。私の人間工学に基づいたキーボードには、左側の別々の4キーアイランドに単一の制御キーがあります。

オペレーティングシステムはDebian Squeezeです。

以下は私が入力しようとした行ですxmodmap。これを ~/.Xmodmap ファイルに入れました。

明確な制御
モジュール1をクリア
!私のキーボードのAltキーには「オプション」というラベルが付いています。
! Alt_L キーと Alt_R キーシンボルのそれぞれの送信を表示するには、xev を使用します。
キー記号 Alt_L = Control_L
キー記号 Alt_R = Control_R
! Super_L キーと Super_R キーは Windows キーです。
キー記号 Super_L = Alt_L
キー記号 Super_R = Alt_R
コントロールの追加 = Control_L Control_R
Mod1 = Alt_L Alt_Rを追加

私の目標は、Option(Superとも呼ばれますAlt)キーがControlキーのように機能し、Windows(Superとも呼ばれます)キーが同じように機能するようにすることですAlt

以下は、そのキーに対して xev が出力するキーコードとキー情報です。私のキーボード(Goldtouch Ergonomic Keyboard)にはコントロールキーが1つしかありません。

キーコード37(キーシンボル0xffe3、Control_L)
キーコード64(キーシンボル0xffe9、Alt_L)
キーコード133(キーシンボル0xffeb、Super_L)
キーコード134(キーシンボル0xffec、Super_R)
キーコード108(キーシンボル0xffea、Alt_R)

xev の実行時に表示される内容です。xmodmap .Xmodmap

MappingNotifyイベント、シーケンス番号34、合成NO、ウィンドウ0x0、
    MappingKeyboardリクエスト、first_keycode 204、カウント1

MappingNotifyイベント、シーケンス番号34、合成NO、ウィンドウ0x0、
    マッピングキーボードリクエスト、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、
    マッピングキーボードリクエスト、first_keycode 133、カウント1

MappingNotifyイベント、シーケンス番号34、合成NO、ウィンドウ0x0、
    マッピングキーボードリクエスト、first_keycode 134、カウント1

返されるエラーは次のとおりですxmodmap

エラーのため X 要求が失敗しました: BadValue (作業範囲外の整数パラメーター)
失敗した要求のデフォルトの opcode: 118(X_SetModifierMapping)
失敗した要求の値:0x17
失敗した要求のシーケンス番号:17
出力ストリームの現在のシーケンス番号:17

この問題を解決する方法に関する提案はありますか?

答え1

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キーのように動作します。

答え2

これは次のように報告されています。Debian のバグ #564327Debian のバグ #565279Ubuntuのバグ#524774FreeDesktopエラー20145。 FreeDesktopバグディスカッションにソースパッチが添付されています。 Ubuntuのバグディスカッションにはいくつかの回避策の提案があります。特に.Xmodmapソリューション

答え3

別の修飾子キーに追加された修飾子にキー記号を追加しようとすると、問題が発生します。修飾子にキー記号を追加すると、そのキー記号で使用されている他のすべてのキー記号もその修飾子に追加されることを知っておくことが重要です。

たとえば、

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

次の操作を試行すると、問題のある BadValue エラーが発生します。

add lock    = Caps_Lock

Mod5修飾子にCaps_Lockが追加されたためです。

答え4

実際、あなたの質問に対する答えではありませんが、あなたの問題に対する別の解決策があります。 xorg.confを編集し、「InputDevice」セクションに以下を挿入します。

 Option "XkbOptions" "ctrl:swapcaps"

関連情報