Fedora gnomeキーボードアプリケーションの代替

Fedora gnomeキーボードアプリケーションの代替

私は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で見ることができます。XF86PowerOffXF86WebCamソースコード

残念ながら、ソースコードのコメントには次のように記載されています。

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言語間でキーボードを変更するために背後から呼び出されるツールを使用または使用すると、マッピングはキャンセルされます。setxkbmapIME は Xorg とは独立して実行されるため、良いです。

マッピングはログイン時に適用されます。 「電源オン」キーを作成できます

このようなものをテストするときは注意してくださいXF86PowerOff。誤ってハード再起動を強制する可能性があります。

おすすめ記事