你可使用兩個工具來設定你的鍵盤. 在純 Linux 環境下, 你可以用loadkeys
, 而在 X11 下則用 xmodmap
.
欲使用 loadkeys
指令, 你可以執行:
loadkeys /usr/lib/kbd/keytables/dk.map或
loadkeys /usr/lib/kbd/keytables/dk-latin1.map
這兩個鍵盤對應表 (keymap) 的差異在於, dk-latin1.map
可以使用死鍵, 而 dk.map
不行.
死鍵在
死鍵和重音字元 中會解釋到.
loadkeys
和 keymap 都是 Linux 裡通行的 kbd-0.??.tar.gz
( ?? 代表不同版本) 包裹中的一部份.
loadkeys
通常是在系統啟動時, 從 /etc/rc.d/
目錄下的某一個命令稿 (script) 執行的.
不同的系統和版本作法各不相同.
(註, 給非丹麥語讀者: 其他語系的支援也是以類似方法設定的, 例如西班牙語鍵盤是用 es.map
.)
XFree86 從 3.1.2 以上的版本 (包括3.1.2) 通常都使用純 Linux 環境下的 keymap, 但在 X11 下你可以用 xmodmap
來改變鍵盤設定.
如果在你的 home 目錄下有一個叫 .Xmodmap
的檔案, X11 就會在啟動時自動替你執行這個指令.
若使用版本 3.2 以上的 XFree86, 在你的 /etc/XF86Config
(或 /etc/X11/XF86Config
) 檔案中, 應有一個Keyboard
區塊如下列
( 如果選擇使用丹麥語的 keytable, 一個叫 XF86Setup
的程式應該會自動替你做好這件事) :
Section "Keyboard" Protocol "Standard" XkbRules "xfree86" XkbModel "pc101" XkbLayout "dk" XkbVariant "nodeadkeys" EndSection
目前只有"nodeadkeys"
是可用的鍵盤變數, 但你仍可以設定死鍵.
請參見
死鍵和重音字元 以得到更多資訊.
若使用版本 3.1.2 以上的 XFree86 (包括 3.1.2), 你應該修改檔案 /etc/XF86Config
(或 /etc/X11/XF86Config
) 並確定以下這行
RightAlt ModeShift
出現在 Keyboard
區塊中.
通常, 你只需要在適當的地方移去註解符號即可.
在版本 3.1.2 的 XFree86 中, 你可用 AltGr
作為 RightAlt
的別鍵.
如果你有選擇丹麥語的鍵盤支援, AltGr
鍵在版本 3.2 以上的 XFree86 應會如預期地發揮作用.
在 Metro-X 伺服器下, 你將無法輸入 ``{'' (<AltGr><7>)
,
``['' (<AltGr><8>)
, ``]''
(<AltGr><9>)
和 ``}'' (<AltGr><0>)
等字元.
這個 bug 會在 3.1.5 和 3.1.8 的伺服器版本中出現.
要修正這個 bug, 你必須修改檔名叫作 /usr/X11R6/lib/X11/xkb/symbols/dk
的檔案並把以下句子:
key <AE07> { [ 7, slash ] }; key <AE08> { [ 8, parenleft ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0, equal ] };改成
key <AE07> { [ 7, slash ], [ braceleft, NoSymbol ] }; key <AE08> { [ 8, parenleft ], [ bracketleft, NoSymbol ] }; key <AE09> { [ 9, parenright ], [ bracketright, NoSymbol ] }; key <AE10> { [ 0, equal ], [ braceright, NoSymbol ] };
所謂死鍵, 就是在按下之後, 還必須再按其他鍵才能夠作用的鍵.
你如果是在純 Linux 環境下使用 dk-latin1.map
keymap, 那顎化符號 (tilde, 譯注: 例如西班牙語字母上的∼) 和變音 (umlaut, 譯注: 字母上加兩點) 都是死鍵.
另外, 在微軟視窗作業系統下, 鍵盤預設也是如此.
loadkeys dk.map
/etc/XF86Config
(或 /etc/X11/XF86Config
) 中, 在 Keyboard
區塊中加入句子:
XkbVariant "nodeadkeys"
loadkeys dk-latin1.map
GNU emacs
v. 19.30 (或更高的版本) 是一個例子.
然而, 某些 X11 應用程式依然不支援這種輸入法.
面對這個問題, 你可以選擇修改你的程式, 或是寄一封修辭溫和的 bug 報告給程式作者.
後者是比較有效的解決之道.
請參見
在 X11下編寫程式的一些小技巧 以獲得相關資訊.
接下來, 你需要將一個鍵對應到 Multi_key
(Compose
.)
若你使用版本 3.1.2 的 XFree86, Scroll Lock
鍵很可能已經被對應了(你可以用 xev
這個程式修改設定).
如果要對應右邊的 Control
鍵,
你只需要在 XFree86 的 configuration file (通常是 /etc/XF86Config
或 /etc/X11/XF86Config
) 中的 Keyboard
區塊裡去掉若干註解符號即可.
若你想使用其他的鍵, 或者你是用版本 3.1.2 以上的 XFree86 而且你想改變預設, 你可以在檔案 ~/.Xmodmap
中加入:
keycode 78 = Multi_key上面這一行範例做的是定義
Scroll Lock
鍵為 Compose
鍵.
在版本 3.2 以上的 XFree86 中, 預設的 Compose
鍵是 <Shift><AltGr>
.
版本 3.2 以上的 XFree86 並不支援在標準丹麥鍵盤使用死鍵.
要啟動死鍵, 在檔案 /usr/X11R6/lib/X11/xkb/symbols/dk
的 xkb_symbols "basic"
區塊中修改這幾行:
key <AE12> { [ acute, grave ], [ bar, dead_ogonek ] }; key <AD12> { [ diaeresis, asciicircum ], [ asciitilde, dead_macron ] };把它改成
key <AE12> { [ dead_acute, dead_grave ], [ bar, dead_ogonek ] }; key <AD12> { [ dead_diaeresis, dead_circumflex ], [ dead_tilde, dead_macron ] };接下來, 移除檔案
/etc/XF86Config
(或 /etc/X11/XF86Config
) 中 Keyboard
區塊裡的這一行:
XkbVariant "nodeadkeys"(註, 給非丹麥語讀者: 在
/usr/X11R6/lib/X11/xkb/symbols
中有各種語系 keymap 的檔案.)
可能的字元對應表列於檔案 /usr/X11R6/lib/X11/locale/iso8859-1/Compose
中.
這個檔案裡有一些你或許會想修正的 bug:
<dead_tilde> <space> : "~" tilde應被改為
<dead_tilde> <space> : "~" asciitilde
asciicircum
被誤拼為 asciicirum
丹麥 keymap 中有個 bug 會使錢符號的對應鍵組合為 <Shift><4>
, 而不是 <AltGr><4>
.
若你有這個問題, 請查看你在啟動系統時載入的是哪個 keymap.
這項設定位於 /etc/rc.d/
目錄下, 或者你也可以在啟動系統時注意一下.
在我的電腦上, 我的 keymap 是叫 /usr/lib/kbd/keytables/dk-latin1.map
.
你可以改 keymap 檔案中的
keycode 5 = four dollar dollar這一行改成
keycode 5 = four currency dollar然後如 載入 keytable 所述, (重新)載入 keytable.
貨幣符號 (dansk: ``soltegn'') 在丹麥鍵盤上的預設是 <Shift><4>
.
以上的方法在 X11 和 Linux 環境下應該都能通行.
在某些比較舊的系統裡, ``ø'' and ``Ø'' 以分 (cent) 或圓 (yen)的形態出現. 在你的 keymap 檔案中, 可以找到 keycode 40 的這一行句子:
keycode 40 = cent yen你可以把它改為
keycode 40 = +oslash +Ooblique
此 bug 已在 kbd-0.88.tar.gz
以上的版本中修正.
為了讓 Caps Lock
正常運作, 那個 + 符號是必要的.
在 kbd-0.90.tar.gz
或更新的版本中, ``Oslash'' 常用來當作 ``Ooblique'' 的別名.
你可以在 這裡得到更多資訊.