kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

UbuntuをMacbook Airに入れてみる (7)

Fn押さなくてもファンクションキーとして認識されるようになったので
今度はファンクションキーにHome、End、PageUp、PageDownを割り当てたい

キーのコードはxevというコマンドで調べられる
xevはキーコードを調べるコマンドというわけではなくて、
ウィンドウに発生したイベントを表示してくれるコマンド

$ xev &
:
KeyPress event, serial 37, synthetic NO, window 0x3600001,
    root 0x14c, subw 0x0, time 4989528, (428,688), root:(456,773),
    state 0x0, keycode 75 (keysym 0xffc6, F9), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False
:
KeyPress event, serial 37, synthetic NO, window 0x3600001,
    root 0x14c, subw 0x0, time 4991711, (428,688), root:(456,773),
    state 0x0, keycode 76 (keysym 0xffc7, F10), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False
:
KeyPress event, serial 37, synthetic NO, window 0x3600001,
    root 0x14c, subw 0x0, time 4992639, (428,688), root:(456,773),
    state 0x0, keycode 95 (keysym 0xffc8, F11), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False
:
KeyPress event, serial 37, synthetic NO, window 0x3600001,
    root 0x14c, subw 0x0, time 4993487, (428,688), root:(456,773),
    state 0x0, keycode 96 (keysym 0xffc9, F12), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False
:

keycodeはF9→75、F10→76、F11→95、F12→96
なんでとんでんの

実際のキー割り当ての変更はxmodmapを使う
-pkeオブションをつけると設定ファイルの形式でキー割り当てが表示される

$ xmodmap -pke
:
keycode  75 = F9 XF86AudioNext F9 XF86AudioNext F9 XF86Switch_VT_9 F9 XF86Switch_VT_9
keycode  76 = F10 XF86AudioMute F10 XF86AudioMute F10 XF86Switch_VT_10 F10 XF86Switch_VT_10
keycode  95 = F11 XF86AudioLowerVolume F11 XF86AudioLowerVolume F11 XF86Switch_VT_11 F11 XF86Switch_VT_11
keycode  96 = F12 XF86AudioRaiseVolume F12 XF86AudioRaiseVolume F12 XF86Switch_VT_12 F12 XF86Switch_VT_12
:
keycode 110 = Home NoSymbol Home
keycode 112 = Prior NoSymbol Prior
keycode 115 = End NoSymbol End
keycode 117 = Next NoSymbol Next

いくつも並んでいるのは左から

何も押してないとき
Shiftを押しているとき
Mode_switchキー(alt?)が押されているとき
両方押されているとき

ということらしい
そこより右は使われていないとか

XF86ナントカは名前からしてマルチメディアキーらしい
Fn押せばいい気もするし最悪押せなくてもまあいいや
110番台の設定をコピろう

デフォルトの設定を取っておきます

$ xmodmap -pke > ~/.Xmodmap_default

`/.Xmodmapを作る

keycode 75 = Home NoSymbol Home
keycode 76 = End NoSymbol End
keycode 95 = Prior NoSymbol Prior
keycode 96 = Next NoSymbol Next

反映

$ xmodmap ~/.Xmodmap

できてるかなー?
できた

2項目目のNoSymbolってなんだっていうのが気になったけど
Ctrl+Home(F9)でファイルの先頭、
Ctrl+End(F10)でファイルの末尾に行ったから
あんまり気にしなくていいかな

このままでは再起動するとキー割り当てがもとに戻ってしまうので
どこかでxmodmap ~/.Xmodmapを実行するようにしてやる必要がある
やり方はいろいろあるみたいだけど安易に.bashrcに書いておいた

:
# Change key assigns
xmodmap ~/.Xmodmap

再起動
OK