筆電沒有 Home、End 鍵的解決方法(Ubuntu)

對一個無時無刻需要面對大量文字的 自稱 專業人士來說,筆電上面最重要的不是 WSAD,也不是 QWER,而是 Home、End 鍵啊。但是很不幸的,大部分消費級的筆電好像都,為了刻意區分消費和專業市場,刻意把 Home、End 鍵放在幾乎快要按不到的邊陲地區,甚至是直接讓它消失掉…

而我們這次就是要教大家把這些按鍵加回來!

各種抱怨?!

相信看過上一篇文章的朋友們,應該都知道小獅最近買了一台超漂亮的 Zenbook (<– 相當囂張啊,這人)

ux501vw keyboard

我對它實在是沒什麼怨言 除了那該死的鍵位安排,如果你仔細看的話會發現,鍵盤的最右上方分別是 HomePageUpPageDown 和 電源鍵…

嗯對,沒有 End 鍵!

Fix 1: 自訂 KeyMap

首先,第一步就是先了解自己有多少可以用的組合鍵(modifier keys),使用的是 xmodmap 這個指令:

以我的系統來說,目前有 左右 Shift 鍵(Shift_L、Shift_R) 和 左右 Control 鍵(Control_L、Control_R)等等按鍵可以用。

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

xmodmap 是用來編輯 鍵盤對應(keymap)和 滑鼠按鈕(pointer button mappings)的設定工具。
加上 -pm 這個選項的意思是顯示目前可以用的組合鍵(modifier keys)

假設我們要使用 Ctrl + Ctrl + 來作為 HomeEnd 的話,首先要做的就是知道各個按鍵的 keycode,這時候就需要 xev 這個指令來測試一下

注:xev 是 X Window Events 的縮寫

xev

執行之後就會出現一個小小的白色視窗,看到之後把滑鼠移過去點一下,確保視窗有對焦(處在前景狀態),然後你就會看到一大堆文字跑過去。這些就是 X Window 的事件。

按下 之後,應該就會看到類似底下的訊息(因為有按下去和放開,所以是 2 個事件)

KeyPress event, serial 37, synthetic NO, window 0x2200001,
    root 0x270, subw 0x0, time 3905724, (1327,843), root:(1503,1148),
    state 0x0, keycode 113 (keysym 0xff51, Left), same_screen YES,
    XLookupString gives 0 bytes:
    XmbLookupString gives 0 bytes:
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x2200001,
    root 0x270, subw 0x0, time 3905846, (1327,843), root:(1503,1148),
    state 0x0, keycode 113 (keysym 0xff51, Left), same_screen YES,
    XLookupString gives 0 bytes:
    XFilterEvent returns: False

到目前為止,我們已經知道這台電腦的 Ctrl 是 control, 是 113,接下來,我們要把這組設定檔寫進使用者設定。

xmodmap -e "keycode 113 control = Home"
xmodmap -e "keycode 114 control = End"

把這 2 行寫進自己的 .bashrc 最後面就可以了(記得重新登入)

對,然後我又失敗了… 似乎是會變成 Ctrl + Home

不過成功案例是有的,有興趣的人自己試試吧,如果直接執行的話,重新登入就會失效了。

Fix 2: 改變 NumPad 設定

ux501vw keyboard

讓我們再仔細的看一次這張圖,數字鍵在 NumLock 解除之後,就是 Home End PageUp PageDown,所以這樣就成功了 很不幸的,並不是

雖然 HomeEnd 是能用的,但是加上 Shift 就會變回原本的數字鍵,所以我們要修改預設的行為

首先開啟 /etc/default/keyboard,加入 XKBOPTIONS="numpad:microsoft"

- XKBOPTIONS=""
+ XKBOPTIONS="numpad:microsoft"

改好之後重新套用設定:

sudo dpkg-reconfigure keyboard-configuration

江江,成功了

 

參考資料

2 responses to “筆電沒有 Home、End 鍵的解決方法(Ubuntu)

  1. 我的華碩筆電開機顯示:
    選擇作業系統以開始,我是按下TAB以選取工具:(使用方向鍵來反白您的選擇,然後按ENTER)
    Windows
    若要指定此選擇的進階選項,請按F8
    工具:
    Windows Memory Diagnostic
    照著操作按鍵無反應但是拿去維修人員按下幾個鍵就開機了,請問我要如何解決呢?

  2. 這…
    我猜測你的問題是「我的電腦在開機時,會顯示黑底白字的安全模式開機選單,請問該如何解決」

    這個症狀最常見的原因是:上一次沒有正常關機
    請選擇 “正常啟動 Windows”,就可以

    另外,若是明明有正常關機,卻經常性的遇到這個錯誤訊息,可能是 Window 檔案,甚至是硬碟已經損壞的徵兆,請務必立即備份資料,並送回原廠(保固中)處理,或是找熟識的商家檢查

發表迴響