早前在下在 Macbook 上安裝 Linux 操作上很快適應,唯獨使用 fn鍵 則比較麻煩
使用 Mac OS 當然可以到設定修改預設為 F1 至 F12 或 特殊功能鍵
但使用 Linux 預設定卻是 特殊功能鍵,比起 特殊功能鍵 ,在下還是比較常用 F1 至 F12
使用 Mac OS 當然可以到設定修改預設為 F1 至 F12 或 特殊功能鍵
但使用 Linux 預設定卻是 特殊功能鍵,比起 特殊功能鍵 ,在下還是比較常用 F1 至 F12
Apple鍵盤 與 一般的 105鍵盤 按鍵佈局有些微分別
但這些簡單的分別,對在下經常要輸入文字,編寫程式偶然會有對操作上的不習慣
但這些簡單的分別,對在下經常要輸入文字,編寫程式偶然會有對操作上的不習慣
Apple鍵盤 修飾鍵佈局
由於 Apple鍵盤 的空白鍵左邊的 修飾鍵(Modifier) 的佈局由左至右是:
- Fn鍵 - 切換使用 F1 至 F12 及 特殊功能鍵
- Control鍵 - 會變成 Ctrl鍵
- Option鍵 - 會變成 Alt鍵
- Command鍵 - 會變成 Super鍵
105鍵盤 修飾鍵佈局
而一般 105鍵盤 的佈局為:
- Ctrl鍵
- Fn鍵
- Super鍵
- Alt鍵
Fn鍵
/sys/module/hid_apple/parameters/fnmode 來處理 Fn鍵 的預設值
- 0 - 取消 Fn鍵 的功能,即是例如按下 Fn鍵 + F1 ,仍然只是 F1 功能
- 1 - 預設使用 Fn鍵 的功能,例如按下 F1 會變成 Fn鍵 + F1 的功能 (Magic Keyboard 佈局)
- 2 - 預設不使用 Fn鍵 的功能,例如按下 F1 就是 F1 的功能 (105鍵盤 佈局)
sudo bash -c "echo -n 2 >'/sys/module/hid_apple/parameters/fnmode'"改變設定
互換按鍵
互換 Fn鍵 及 左Control鍵
/sys/module/hid_apple/parameters/swap_fn_leftctrl 來互換 Fn鍵 及 左Control鍵 的位置
- 0 - 左為 Fn鍵 ,右為 左Control鍵 (Magic Keyboard 佈局)
- 1 - 左為 左Control鍵 ,右為 Fn鍵 (105鍵盤 佈局)
sudo bash -c "echo -n 1 >'/sys/module/hid_apple/parameters/swap_fn_leftctrl'"改變設定
互換 Option鍵 及 Command鍵
/sys/module/hid_apple/parameters/swap_opt_cmd 來互換 Option鍵 及 Command鍵 的位置
- 0 - 左為 Option鍵 ,右為 Command鍵 (Magic Keyboard 佈局)
- 1 - 左為 Command鍵 ,右為 Option鍵 (105鍵盤 佈局)
sudo bash -c "echo -n 1 >'/sys/module/hid_apple/parameters/swap_opt_cmd'"改變設定
以上操作最大的好處是即時生效
但這些設定只會保存在當前的起動狀態,當重新開機後便會復原,每次開機都修改設定並不是有效率的操作
若果需要長期保存新設定,需要加入設定檔到 /etc/modprobe.d/
但這些設定只會保存在當前的起動狀態,當重新開機後便會復原,每次開機都修改設定並不是有效率的操作
若果需要長期保存新設定,需要加入設定檔到 /etc/modprobe.d/
更新 initramfs
系統未必有建立 hid_apple 的起動設定,因此要自行建立檔案
hid_apple 的設定檔不一定使用 hid_apple.conf ,只是方便了解檔案用途
設定檔寫入
hid_apple 的設定檔不一定使用 hid_apple.conf ,只是方便了解檔案用途
設定檔寫入
options hid_apple fnmode=2 options hid_apple swap_fn_leftctrl=1 options hid_apple swap_opt_cmd=1
建立設定檔後,更新 initramfs ,在 Terminal 輸入
sudo update-initramfs -u重新開機後,鍵盤佈局便會以新設定起動
自訂鍵盤佈局
除了修飾鍵的佈局 Macbook 亦缺少了 105鍵盤 的 Delete鍵
在下經常要編寫程式,缺少了 Delete鍵 其實非常影響編寫效率,因此在下將一個不常使用的按鍵取代為 Delete鍵
在下經常要編寫程式,缺少了 Delete鍵 其實非常影響編寫效率,因此在下將一個不常使用的按鍵取代為 Delete鍵
先在 Terminal 輸入
xmodmap -pke會顯示所有鍵盤佈局
但要了解鍵盤佈局前,還要了解鍵盤按鍵及組合鍵的對照,輸入
xmodmap資料顯示鍵盤按鍵及不同組合鍵的對照,例如在下的 Macbook 上的 Linux
- Shift
- Caps Lock
- Control
- Alt
- Num Lock
- Super
- Alt Gr
以下是在下的 Macbook 上的 Linux 的鍵盤佈局
跳至表格後
跳至表格後
keycode | 原鍵 | 組合鍵 | ||||||
---|---|---|---|---|---|---|---|---|
Shift | Caps Lock | Control | Alt | Num Lock | Super | Alt Gr | ||
8 | ||||||||
9 | Escape | Escape | ||||||
10 | 1 | exclam | 1 | exclam | ||||
11 | 2 | at | 2 | at | ||||
12 | 3 | numbersign | 3 | numbersign | ||||
13 | 4 | dollar | 4 | dollar | ||||
14 | 5 | percent | 5 | percent | ||||
15 | 6 | asciicircum | 6 | asciicircum | ||||
16 | 7 | ampersand | 7 | ampersand | ||||
17 | 8 | asterisk | 8 | asterisk | ||||
18 | 9 | parenleft | 9 | parenleft | ||||
19 | 0 | parenright | 0 | parenright | ||||
20 | minus | underscore | minus | underscore | ||||
21 | equal | plus | equal | plus | ||||
22 | BackSpace | BackSpace | BackSpace | BackSpace | Terminate_Server | |||
23 | Tab | ISO_Left_Tab | Tab | ISO_Left_Tab | ||||
24 | q | Q | q | Q | ||||
25 | w | W | w | W | ||||
26 | e | E | e | E | ||||
27 | r | R | r | R | ||||
28 | t | T | t | T | ||||
29 | y | Y | y | Y | ||||
30 | u | U | u | U | ||||
31 | i | I | i | I | ||||
32 | o | O | o | O | ||||
33 | p | P | p | P | ||||
34 | bracketleft | braceleft | bracketleft | braceleft | ||||
35 | bracketright | braceright | bracketright | braceright | ||||
36 | Return | Return | ||||||
37 | Control_L | Control_L | ||||||
38 | a | A | a | A | ||||
39 | s | S | s | S | ||||
40 | d | D | d | D | ||||
41 | f | F | f | F | ||||
42 | g | G | g | G | ||||
43 | h | H | h | H | ||||
44 | j | J | j | J | ||||
45 | k | K | k | K | ||||
46 | l | L | l | L | ||||
47 | semicolon | colon | semicolon | colon | ||||
48 | apostrophe | quotedbl | apostrophe | quotedbl | ||||
49 | grave | asciitilde | grave | asciitilde | ||||
50 | Shift_L | Shift_L | ||||||
51 | backslash | bar | backslash | bar | ||||
52 | z | Z | z | Z | ||||
53 | x | X | x | X | ||||
54 | c | C | c | C | ||||
55 | v | V | v | V | ||||
56 | b | B | b | B | ||||
57 | n | N | n | N | ||||
58 | m | M | m | M | ||||
59 | comma | less | comma | less | ||||
60 | period | greater | period | greater | ||||
61 | slash | question | slash | question | ||||
62 | Shift_R | Shift_R | ||||||
63 | KP_Multiply | KP_Multiply | KP_Multiply | KP_Multiply | KP_Multiply | KP_Multiply | XF86ClearGrab | |
64 | Alt_L | Meta_L | Alt_L | Meta_L | ||||
65 | space | space | ||||||
66 | Caps_Lock | Caps_Lock | ||||||
67 | F1 | F1 | F1 | F1 | F1 | F1 | XF86Switch_VT_1 | |
68 | F2 | F2 | F2 | F2 | F2 | F2 | XF86Switch_VT_2 | |
69 | F3 | F3 | F3 | F3 | F3 | F3 | XF86Switch_VT_3 | |
70 | F4 | F4 | F4 | F4 | F4 | F4 | XF86Switch_VT_4 | |
71 | F5 | F5 | F5 | F5 | F5 | F5 | XF86Switch_VT_5 | |
72 | F6 | F6 | F6 | F6 | F6 | F6 | XF86Switch_VT_6 | |
73 | F7 | F7 | F7 | F7 | F7 | F7 | XF86Switch_VT_7 | |
74 | F8 | F8 | F8 | F8 | F8 | F8 | XF86Switch_VT_8 | |
75 | F9 | F9 | F9 | F9 | F9 | F9 | XF86Switch_VT_9 | |
76 | F10 | F10 | F10 | F10 | F10 | F10 | XF86Switch_VT_10 | |
77 | Num_Lock | Num_Lock | ||||||
78 | Scroll_Lock | Scroll_Lock | ||||||
79 | KP_Home | KP_7 | KP_Home | KP_7 | ||||
80 | KP_Up | KP_8 | KP_Up | KP_8 | ||||
81 | KP_Prior | KP_9 | KP_Prior | KP_9 | ||||
82 | KP_Subtract | KP_Subtract | KP_Subtract | KP_Subtract | KP_Subtract | KP_Subtract | XF86Prev_VMode | |
83 | KP_Left | KP_4 | KP_Left | KP_4 | ||||
84 | KP_Begin | KP_5 | KP_Begin | KP_5 | ||||
85 | KP_Right | KP_6 | KP_Right | KP_6 | ||||
86 | KP_Add | KP_Add | KP_Add | KP_Add | KP_Add | KP_Add | XF86Next_VMode | |
87 | KP_End | KP_1 | KP_End | KP_1 | ||||
88 | KP_Down | KP_2 | KP_Down | KP_2 | ||||
89 | KP_Next | KP_3 | KP_Next | KP_3 | ||||
90 | KP_Insert | KP_0 | KP_Insert | KP_0 | ||||
91 | KP_Delete | KP_Decimal | KP_Delete | KP_Decimal | ||||
92 | ISO_Level3_Shift | ISO_Level3_Shift | ||||||
93 | ||||||||
94 | less | greater | less | greater | bar | brokenbar | bar | |
95 | F11 | F11 | F11 | F11 | F11 | F11 | XF86Switch_VT_11 | |
96 | F12 | F12 | F12 | F12 | F12 | F12 | XF86Switch_VT_12 | |
97 | ||||||||
98 | Katakana | Katakana | ||||||
99 | Hiragana | Hiragana | ||||||
100 | Henkan_Mode | Henkan_Mode | ||||||
101 | Hiragana_Katakana | Hiragana_Katakana | ||||||
102 | Muhenkan | Muhenkan | ||||||
103 | ||||||||
104 | KP_Enter | KP_Enter | ||||||
105 | Control_R | Control_R | ||||||
106 | KP_Divide | KP_Divide | KP_Divide | KP_Divide | KP_Divide | KP_Divide | XF86Ungrab | |
107 | Sys_Req | Sys_Req | ||||||
108 | Alt_R | Meta_R | Alt_R | Meta_R | ||||
109 | Linefeed | Linefeed | ||||||
110 | Home | Home | ||||||
111 | Up | Up | ||||||
112 | Prior | Prior | ||||||
113 | Left | Left | ||||||
114 | Right | Right | ||||||
115 | End | End | ||||||
116 | Down | Down | ||||||
117 | Next | Next | ||||||
118 | Insert | Insert | ||||||
119 | Delete | Delete | ||||||
120 | ||||||||
121 | XF86AudioMute | XF86AudioMute | ||||||
122 | XF86AudioLowerVolume | XF86AudioLowerVolume | ||||||
123 | XF86AudioRaiseVolume | XF86AudioRaiseVolume | ||||||
124 | XF86PowerOff | XF86PowerOff | ||||||
125 | KP_Equal | KP_Equal | ||||||
126 | plusminus | plusminus | ||||||
127 | Pause | Break | Pause | Break | ||||
128 | XF86LaunchA | XF86LaunchA | ||||||
129 | KP_Decimal | KP_Decimal | KP_Decimal | KP_Decimal | ||||
130 | Hangul | Hangul | ||||||
131 | Hangul_Hanja | Hangul_Hanja | ||||||
132 | ||||||||
133 | Super_L | Super_L | ||||||
134 | Super_R | Super_R | ||||||
135 | Menu | Menu | ||||||
136 | Cancel | Cancel | ||||||
137 | Redo | Redo | ||||||
138 | SunProps | SunProps | ||||||
139 | Undo | Undo | ||||||
140 | SunFront | SunFront | ||||||
141 | XF86Copy | XF86Copy | ||||||
142 | XF86Open | XF86Open | ||||||
143 | XF86Paste | XF86Paste | ||||||
144 | Find | Find | ||||||
145 | XF86Cut | XF86Cut | ||||||
146 | Help | Help | ||||||
147 | XF86MenuKB | XF86MenuKB | ||||||
148 | XF86Calculator | XF86Calculator | ||||||
149 | ||||||||
150 | XF86Sleep | XF86Sleep | ||||||
151 | XF86WakeUp | XF86WakeUp | ||||||
152 | XF86Explorer | XF86Explorer | ||||||
153 | XF86Send | XF86Send | ||||||
154 | ||||||||
155 | XF86Xfer | XF86Xfer | ||||||
156 | XF86Launch1 | XF86Launch1 | ||||||
157 | XF86Launch2 | XF86Launch2 | ||||||
158 | XF86WWW | XF86WWW | ||||||
159 | XF86DOS | XF86DOS | ||||||
160 | XF86ScreenSaver | XF86ScreenSaver | ||||||
161 | XF86RotateWindows | XF86RotateWindows | ||||||
162 | XF86TaskPane | XF86TaskPane | ||||||
163 | XF86Mail | XF86Mail | ||||||
164 | XF86Favorites | XF86Favorites | ||||||
165 | XF86MyComputer | XF86MyComputer | ||||||
166 | XF86Back | XF86Back | ||||||
167 | XF86Forward | XF86Forward | ||||||
168 | ||||||||
169 | XF86Eject | XF86Eject | ||||||
170 | XF86Eject | XF86Eject | XF86Eject | XF86Eject | ||||
171 | XF86AudioNext | XF86AudioNext | ||||||
172 | XF86AudioPlay | XF86AudioPause | XF86AudioPlay | XF86AudioPause | ||||
173 | XF86AudioPrev | XF86AudioPrev | ||||||
174 | XF86AudioStop | XF86Eject | XF86AudioStop | XF86Eject | ||||
175 | XF86AudioRecord | XF86AudioRecord | ||||||
176 | XF86AudioRewind | XF86AudioRewind | ||||||
177 | XF86Phone | XF86Phone | ||||||
178 | ||||||||
179 | XF86Tools | XF86Tools | ||||||
180 | XF86HomePage | XF86HomePage | ||||||
181 | XF86Reload | XF86Reload | ||||||
182 | XF86Close | XF86Close | ||||||
183 | ||||||||
184 | ||||||||
185 | XF86ScrollUp | XF86ScrollUp | ||||||
186 | XF86ScrollDown | XF86ScrollDown | ||||||
187 | parenleft | parenleft | ||||||
188 | parenright | parenright | ||||||
189 | XF86New | XF86New | ||||||
190 | Redo | Redo | ||||||
191 | XF86Tools | XF86Tools | ||||||
192 | XF86Launch5 | XF86Launch5 | ||||||
193 | XF86Launch6 | XF86Launch6 | ||||||
194 | XF86Launch7 | XF86Launch7 | ||||||
195 | XF86Launch8 | XF86Launch8 | ||||||
196 | XF86Launch9 | XF86Launch9 | ||||||
197 | ||||||||
198 | XF86AudioMicMute | XF86AudioMicMute | ||||||
199 | XF86TouchpadToggle | XF86TouchpadToggle | ||||||
200 | XF86TouchpadOn | XF86TouchpadOn | ||||||
201 | XF86TouchpadOff | XF86TouchpadOff | ||||||
202 | ||||||||
203 | Mode_switch | Mode_switch | ||||||
204 | Alt_L | Alt_L | ||||||
205 | Meta_L | Meta_L | ||||||
206 | Super_L | Super_L | ||||||
207 | Hyper_L | Hyper_L | ||||||
208 | XF86AudioPlay | XF86AudioPlay | ||||||
209 | XF86AudioPause | XF86AudioPause | ||||||
210 | XF86Launch3 | XF86Launch3 | ||||||
211 | XF86Launch4 | XF86Launch4 | ||||||
212 | XF86LaunchB | XF86LaunchB | ||||||
213 | XF86Suspend | XF86Suspend | ||||||
214 | XF86Close | XF86Close | ||||||
215 | XF86AudioPlay | XF86AudioPlay | ||||||
216 | XF86AudioForward | XF86AudioForward | ||||||
217 | ||||||||
218 | ||||||||
219 | ||||||||
220 | XF86WebCam | XF86WebCam | ||||||
221 | XF86AudioPreset | XF86AudioPreset | ||||||
222 | ||||||||
223 | XF86Mail | XF86Mail | ||||||
224 | XF86Messenger | XF86Messenger | ||||||
225 | XF86Search | XF86Search | ||||||
226 | XF86Go | XF86Go | ||||||
227 | XF86Finance | XF86Finance | ||||||
228 | XF86Game | XF86Game | ||||||
229 | XF86Shop | XF86Shop | ||||||
230 | ||||||||
231 | Cancel | Cancel | ||||||
232 | XF86MonBrightnessDown | XF86MonBrightnessDown | ||||||
233 | XF86MonBrightnessUp | XF86MonBrightnessUp | ||||||
234 | XF86AudioMedia | XF86AudioMedia | ||||||
235 | XF86Display | XF86Display | ||||||
236 | XF86KbdLightOnOff | XF86KbdLightOnOff | ||||||
237 | XF86KbdBrightnessDown | XF86KbdBrightnessDown | ||||||
238 | XF86KbdBrightnessUp | XF86KbdBrightnessUp | ||||||
239 | XF86Send | XF86Send | ||||||
240 | XF86Reply | XF86Reply | ||||||
241 | XF86MailForward | XF86MailForward | ||||||
242 | XF86Save | XF86Save | ||||||
243 | XF86Documents | XF86Documents | ||||||
244 | XF86Battery | XF86Battery | ||||||
245 | XF86Bluetooth | XF86Bluetooth | ||||||
246 | XF86WLAN | XF86WLAN | ||||||
247 | ||||||||
248 | ||||||||
249 | ||||||||
250 | ||||||||
251 | XF86MonBrightnessCycle | XF86MonBrightnessCycle | ||||||
252 | ||||||||
253 | ||||||||
254 | XF86WWAN | XF86WWAN | ||||||
255 | XF86RFKill | XF86RFKill |
閣下可能會發現,在下的列表沒有 NoSymbol
NoSymbol 意思即是該輸入沒有效果,因此在下沒有列出,以免混亂
另外,這些鍵盤佈局稱為 keysym 即是 Key Symbol ,必須大小寫相符才能生效
NoSymbol 意思即是該輸入沒有效果,因此在下沒有列出,以免混亂
另外,這些鍵盤佈局稱為 keysym 即是 Key Symbol ,必須大小寫相符才能生效
假設在下認為 F12 並不是經常使用的按鍵,輸入
xmodmap -pke | grep "F12"以在下為例子,顯示 F12 的 keycode 為 96 後,輸入
xmodmap -e "keycode 96 = Delete"便會將 F12鍵 修改為 Delete ,而且立即生效
使用 .bashrc
同樣這種修改只是暫時性,當重新開機便會還原
不過重新配置鍵盤佈局,屬於使用者的設定,只需要修改 ${HOME}/.bashrc
將 xmodmap -e "keycode 96 = Delete" 加入到 ${HOME}/.bashrc 便可以在下次登入時生效
不過重新配置鍵盤佈局,屬於使用者的設定,只需要修改 ${HOME}/.bashrc
將 xmodmap -e "keycode 96 = Delete" 加入到 ${HOME}/.bashrc 便可以在下次登入時生效
使用 啟動
有時 .bashrc 需要先開啟動 Terminal 才能產生效果,便顯示有點贅聚
可以改用 系統 > 偏好設定 > 個人 > 啟動應用程式 來處理
可以改用 系統 > 偏好設定 > 個人 > 啟動應用程式 來處理
在 初始啟動程式 分頁,按 加入
名稱 及 註解 不需要完全指定內容
但 指令 輸入有效的指令
有時新加入的指令未能在起動後立即啟動,可以在 延遲 設定延遲時間
(在下需要 延遲1秒)
但 指令 輸入有效的指令
有時新加入的指令未能在起動後立即啟動,可以在 延遲 設定延遲時間
(在下需要 延遲1秒)
加入啟動應用程式後,可以重新啟動測試
總結
由於 Mac OS 的鍵盤佈局與 Linux, Windows 等不同,最初使用時都需要一段時間適應
查資料時發現可以很簡單地將鍵盤重新佈局,因此便設定為一般 105鍵盤 的佈局
其實兩者的佈局在下已經可以隨時切換,已經不需要時間熟習,反而要在 Macbook 重新熟習一般 105鍵盤 又要時間
查資料時發現可以很簡單地將鍵盤重新佈局,因此便設定為一般 105鍵盤 的佈局
其實兩者的佈局在下已經可以隨時切換,已經不需要時間熟習,反而要在 Macbook 重新熟習一般 105鍵盤 又要時間
沒有留言 :
張貼留言