LubuntuでToshiba r835を使用しています。クリーンインストール後、マシンの電源がオンの状態で電源ボタンを押しても何も起こりません。 このアドバイス に従って電源ボタンを修正しました。
これらの行を〜/ .config/openbox/lubuntu-rc.xmlに追加しました
<keybind key="XF86PowerOff">
<action name="Execute">
<command>lubuntu-logout</command>
</action>
</keybind>
これは私にとって理にかなっています。
他のいくつかのキーを同様のショートカットにマップしたいと思います。たとえば、Fn-F1を押すと、画面がロックされます。私は次のようなものを追加すると思います
<keybind key="XF86ScreenSaver">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
ただし、Fn-F1を押すと、Super_L
キーを押したかのようにLubuntuメニューが開きます。端末を開いている場合は、l
という文字も入力します。希望するショートカットxscreensaver-command -lock
は無視されるようです。 何が起こっているのですか?ショートカットが機能しないのはなぜですか?
私はxevでこれを理解できると思ったが、xevの出力は私を混乱させる:
FocusOut event, serial 41, synthetic NO, window 0x2000001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 41, synthetic NO, window 0x2000001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 41, synthetic NO, window 0x0,
keys: 0 0 0 0 0 64 0 0 0 0 0 0 0 0 0 0
32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MappingNotify event, serial 41, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyPress event, serial 41, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525549, (289,-138), root:(341,155),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 41, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525550, (289,-138), root:(341,155),
state 0x40, keycode 160 (keysym 0x1008ff2d, XF86ScreenSaver), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
MappingNotify event, serial 42, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeyRelease event, serial 42, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525639, (289,-138), root:(341,155),
state 0x40, keycode 46 (keysym 0x6c, l), same_screen YES,
XLookupString gives 1 bytes: (6c) "l"
XFilterEvent returns: False
KeyRelease event, serial 43, synthetic NO, window 0x2000001,
root 0xae, subw 0x0, time 16525646, (289,-138), root:(341,155),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
XF86ScreenSaverと思われるキーコード160を取得しているように見えますが、Super_L
キーとl
キーを押したようにも見えます。この出力はすべて、Fn-F1キーを1回押すことで得られると思います。これは私を混乱させます。 Lubuntuメニューを開いて文字「l」を入力する代わりに、Fn-F1で画面をロックするにはどうすればよいですか?
xbindkeysアプリでこれを実現できます。ターミナルウィンドウを開き、次のように入力します。
Sudo apt-get install xbindkeys
インストールしたら、ホームディレクトリに次の2つのファイルを作成します。
.xbindkeysrc
このファイルには、キーバインドの構成が保持されます
.xbindkeys.noauto
これは単に空のファイルになりますが、存在する場合、Xserverが起動時にxbindkeys
を開始しないようにします。ブート時に起動するようにしたいのですが、スタートアップアプリケーションから自分で起動したいのです。これは、Xserverが起動プロセスの早い段階で起動するため、.xbindkeysrc
ファイルに設定した設定が機能しない場合があるためです。
次の行を.xbindkeysrc
ファイルに追加します
"xscreensaver-command -lock"
c:160
ファイルを保存する
スタートアップアプリケーションに配置するxbindkeys
を起動する小さなスクリプトを作成します。
お気に入りのテキストエディターを開き、コピーして貼り付けるか、次の行を入力します。
#!/bin/bash
sleep 10
/usr/bin/xbindkeys &
ホームディレクトリにxbstart.sh
または任意の名前で保存します
実行可能にする
chmod 755 xbstart.sh
次に、そのスクリプトをスタートアップアプリケーションに追加して再起動します。
ログインすると、xbindkeys
が呼び出され、.xbindkeysrc
ファイルを読み取り、バックグラウンドで実行されます。キーストロークを常に監視し、keycode 160
が押されると、Xserverがメニューを開く代わりにxscreensaver-command -lock
を実行する前に、それをトラップします。
これを追加しました
<keybind key="C-A-L">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
そうすると Crt+Alt+L 私のscreebscaverの開始... @ fossfreedomのように表示
似たようなことをする必要があると思います
<keybind key="C-F1">
<action name="Execute">
<command>xscreensaver-command -lock</command>
</action>
</keybind>
ただし、最初にそのキーバインドがまだ使用されていないかどうかを確認してください。
...必要なfnオプションについて: wikipedia を引用します。
Ctrl、Shift、AltGrなどの他の修飾キーとは異なり、キーボード内のマイクロコントローラーは通常、Fnキーが押されているかどうかに応じて異なるキーコードを送信します。これにより、キーボードがフルサイズのキーボードをエミュレートできるため、特殊なキーマップを作成する必要がありません。オペレーティングシステムは、フルサイズのキーボード用に設計された標準キーマップを使用できます。オペレーティングシステムにはFnキーの概念がないため、他のすべての標準キーボードキーとは異なり、ソフトウェアでキーを再マップすることはできません。