私はFedora 25 Gnomeを使用しています。ロジクールK350ワイヤレスキーボードがあります。 XubuntuとManjaroを使用すると、すべてのキーを簡単にマッピングできます。
Fedoraでは、一部のキーはFedoraのキーボードショートカットアプリケーションを使用してマッピングできなくなり、一部のキーをマッピングしようとすると、一部のキーはそのコマンドを実行します。たとえば、キーボードに追加の閉じるボタンがあります。 Fedoraはラップトップをスリープモードにし、それを削除することはできません。ショートカットを追加しようとしたときにそれを押すと、コンピュータはボタンコードを表示するのではなくスリープモードになります。
また、キーボードアプリが遅くなります。 XFCE用のキーボードアプリケーションに置き換えることができるかどうか疑問に思います。
すべての大きな灰色のボタンを上下にマッピングしたいです。ただし、最も重要なのは右上隅にある小さな灰色のボタンで、終了ボタンと見なされます。
ベストアンサー1
長い間、FedoraやGnome(またはXFCE)を使用していません。しかし、キーを関数に再マップすることは複数のレイヤーで行われ、WMレイヤーで行うことは私にとって面倒です。キー/コードはカーネル(ハードウェアのIRQなど)からXorgに提供されます。みんなそれらをアプリケーションに戻しました(どちらか)。すべてを通してアプリケーションが別の物語である場合)。
Xorgが重要なコードを提供するアプリケーションには、WM(XFCE、Gnome、またはKDE)だけでなく、これらのアプリケーションで開くウィンドウも含まれます。 Keymapping Desktop Appなどのツールは、Xorg用のポイントアンドクリックキーコードを設定するように設計されています。新しいキーボード()を作成してsetxkbmap
キー()を変更するxmodmap
か、コードをウィンドウ(IME)に再送信する前にメモリに再マップすることもできます。
Xorgキーコードを直接入力すると、すべてのシステム(つまりXorgを実行しているシステム)に合わせてキーボードを設定できます。私のキーボードを使いましょう。
概要には、例として使用するキーの 1 つがメモとともに表示されます。このキーが上向き矢印として機能するようにします。
まず、Xorgが私のキーボードをどのように見ているかを見てみましょう。
$ xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB Optical Mouse id=10 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=14 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ USB 2.0 Camera id=11 [slave keyboard (3)]
↳ Asus Laptop extra buttons id=12 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=13 [slave keyboard (3)]
まあ、私の考えは私のキー(メモ)が「ASUSノートブック追加ボタン」にあるようです。これは仮想キーボードの下にあることを意味します。いいですね。これはxev
キーコードを見つけることができるという意味です。
xev -event keyboard
仮想キーボードの一部ではない場合は、すべてのイベント(マウスイベントを含む)を繰り返す必要があるため、見つけるのは難しいか不可能ではありませんが、困難です。その後、xev
実行中にノートキーを押し、Xorgが次のことを理解したことを発見しました。
KeyPress event, serial 28, synthetic NO, window 0x1a00001,
root 0x496, subw 0x0, time 32080036, (381,333), root:(382,352),
state 0x0, keycode 234 (keysym 0x1008ff32, XF86AudioMedia), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
いいですね。キーコードが234という意味です。これはまた、効果がない私のWMにマッピングされていることを示していますXF86AudioMedia
(xmonad、XF86標準を無視するため)。しかし、とにかく私たちには再マッピングするための鍵があります。そのためには、次のことを行います。
xmodmap -e 'keycode 234 = Up NoSymbol Up'
私のノートキーは上矢印として機能します。また、これはWMとは無関係です。再起動時に機能させるには、xmodmap
式をファイルに入れる必要があります~/.Xmodmap
。
keycode 234 = Up NoSymbol Up
そして走る
xmodmap ~/.Xmodmap
WM 初期化中。 XFCEの初期化中にどのファイル、および他のファイルが実行されるか~/.xprofile
は別の質問です。 WM は、特に実行するファイルに対して標準化されていません。ただし、いつでも手動で実行できます。~/.xinitrc
~/.profile
ファイル.Xmodmap
には1行に1つのマッピングが含まれているため、複数のキーを再マップするために使用できます。この!
タグはこのファイルのコメントインジケータです。
どのように動作しますか?
Up NoSymbol Up
まず、単に文章を書くのではなく、なぜ文章を書くのか理解してみましょうUp
。実際には必要はありませんが、通常、キーに対して少なくとも3つ(時には4つ)のマッピングを提供します。マッピングとは、キーが次の場合に実行される操作を意味します。
= <key pressed> <shift+key> <ctrl+key> <ctrl+shift+key>
(Ctrl+Up
一部のアプリケーションではこの方法が正しく機能しないため、この例の品質が低下します。)
いいですね。キーを再マップしました。しかし、キーを再マッピングするための正しい操作を見つける方法は?矢印は簡単です。文字を引数として追加して、上、下、左、右に単純に再マップすることもできます。しかし、XF86AudioMedia
私たちが以前持っていたものはどうですか?または、キーをスリープまたは電源ボタンにする方法は?
現在のマッピングを取得するには:
xmodmap -pke
XF86
複数の修飾子(たとえば、、、)を含む長いリストを印刷しますXF86Sleep
。上の上矢印と同様に、任意のキーに追加できます。完全なリストはXorgで見ることができます。XF86PowerOff
XF86WebCam
ソースコード。
残念ながら、ソースコードのコメントには次のように記載されています。
X.OrgはXF86キーシンボルセットに追加されませんが、Xキーシンボル定義の「標準」部分として採用され、考慮されます。 XFree86はこれらのキーシンボルに正しくコメントを追加したことがないので、これらのキーの意味を説明するために最善を尽くしました。
XFree86はこの期間のメールアーカイブを削除して、これらの定義のいくつかについてより多くの情報を提供できます。私たちが記憶と使用から派生したこれらのアーカイブを復活させるまで/そうでない限り。
それぞれの正確な目的を見つけるのは難しいかもしれません。さらに、明確に定義された標準がないため、WMはこれらのマッピングの一部しか実装しません。そして他のWMは異なるマッピングを実装します。また、一部のWMにはこれらのマッピング機能用の構成ツールがありますが、他のWMにはありません。一部の WM は、これらのマッピングをほとんどすべて無視します。
WMが特定のマッピングをサポートしているかどうかをテストする1つの方法は、試してみることです。たとえば、XF86XK_ToDoList
まずXK
定義で使用されていないキーコードを削除して再マップします。
xmodmap -e 'keycode 248 = XF86_ToDoList'
次に、xdotool
キーを使用して次のキーコードを設定します。
xdotool keydown 248
xdotool keyup 248
私のWMは何も起こらないので、確かにこれをサポートしていませんXF86_ToDoList
(実際にはどのWMもそれをサポートしていないと思います)。
その後、キーに必要な機能を検索し、機能が見つかったら再マッピングできます。もちろん、XFCEを考慮するとサポートされます。
警告する
setxkbmap
言語間でキーボードを変更するために背後から呼び出されるツールを使用または使用すると、マッピングはキャンセルされます。setxkbmap
IME は Xorg とは独立して実行されるため、良いです。
マッピングはログイン時に適用されます。 「電源オン」キーを作成できます
このようなものをテストするときは注意してくださいXF86PowerOff
。誤ってハード再起動を強制する可能性があります。