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 のバグ #564327、Debian のバグ #565279、Ubuntuのバグ#524774とFreeDesktopエラー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"