文字介面和圖形介面的keycode是不一樣的,按鍵對映方式不同,因此修改方法不同。
在文字介面,dumpkeys 可以查詢當前keycode。在文字或圖形介面loadkeys 可以修改,例如將ctrl+alt+g修改為開啟虛擬終端tty1的快捷鍵。g的keycode是35。
kylin@kylin-os:
/etc/systemd$ sudo loadkeys -u
[sudo] kylin 的密碼:
正在載入 <
stdin
>
contron alt keycode 35
= console_1
ctrl+d確認修改。
但是用命令會在重啟後失效,要不在啟動的某個指令碼中新增該命令,要不就修改對映檔案;
/etc/console-setup下 cached.kmap.gz 解壓,根據dumpkeys的結果找到對應的設定項後修改。
這是dumpkeys的部分結果:
keycode 35
=+h
shift keycode 35
=+h
shift altgr keycode 35
=+h
control keycode 35
= backspace
shift control keycode 35
= backspace
altgr control keycode 35
= backspace
shift altgr control keycode 35
= backspace
alt keycode 35
= meta_h
shift alt keycode 35
= meta_h
altgr alt keycode 35
= meta_h
shift altgr alt keycode 35
= meta_h
control alt keycode 35
= meta_backspace
shift control alt keycode 35
= meta_backspace
altgr control alt keycode 35
= meta_backspace
cached.kmap檔案的部分內容:
keycode 35
=+u+
0068
+u+0048
+u+0068
+u+0048 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0068
+u+0048
+u+0068
+u+0048 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0068
+u+0048
+u+0068
+u+0048 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0068
+u+0048
+u+0068
+u+0048 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0048
+u+0068
+u+0048
+u+0068 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0048
+u+0068
+u+0048
+u+0068 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0048
+u+0068
+u+0048
+u+0068 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace +u+
0048
+u+0068
+u+0048
+u+0068 backspace backspace backspace backspace meta_h meta_h meta_h meta_h meta_backspace meta_backspace meta_backspace meta_backspace
希望得到control alt keycode 35 = console_1的話, cached.kmap檔案修改為:
keycode 35
=+u+
0068
+u+0048
+u+0068
+u+0048 backspace backspace backspace backspace meta_h meta_h meta_h meta_h console_1 meta_backspace meta_backspace meta_backspace .
..
可以通過xev來獲取相應按鍵的keycode和keysym值。
xmodmap -pk 檢視當前對映規則;
xmodmap修改本人只實驗修改單獨按鍵和shift+單個按鍵的兩種,其他情況沒搞清楚,這兩種設定方式有其他文章說明,此處不細說;
kylin@kylin-os:
/etc/console-setup$ cd /usr/share/x11/xkb/
kylin@kylin-os:
/usr/share/x11/xkb$ ls
compat geometry keycodes rules symbols types
xkb下有6個資料夾,此處關注symbols資料夾下
檔名簡介
pc修飾鍵對應規則
usenglish us 鍵盤布局規則
srvr_ctrl
fkey 對應 vt 的規則
未完待續
xkbcomp $display filename
檢視xkb keymap資訊,包括keycodes、types、compatibility、symbols、geometry,根據名稱查詢該條目在哪個檔案中設定。
例如將ctrl+alt+g修改為開啟虛擬終端tty1的快捷鍵,
在/usr/share/x11/xkb/symbols/us檔案,xkb_symbols 「basic」 中
key
;
改為:
key
;
參考:
1、2、
linux修改鍵盤按鍵
我的電腦 fedora 19 uname a linux localhost.localdomain 3.11.10 200.fc19.i686 1 smp mon dec 2 20 48 22 utc 2013 i686 i686 i386 gnu linux 使用xmodmap工具進行修改,使用...
Linux 簡單按鍵中斷處理流程
中斷處理程式中不能延時 休眠之類的,一定要最快速 高效的執行完。功能 申請中斷 引數1 中斷號碼,通過巨集 ira eint x 獲取 引數2 中斷的處理函式,填函式名 引數3 中斷的出發方式 下面的巨集在不同核心中是不同的 define irqf trigger none 0x00000000 d...
linux打patch簡單示例
在專案中,有些模組是開源的,沒有原始碼或者不能改動原始碼,想要修復 優化裡面的bug,這時就需要用到patch了。生成patch 製作補丁有兩種法法,diff和quilt。1.1 diff方法製作patch 1.1.1 示例 l 第一步,建立兩個檔案,test.c原始檔和修改後的檔案test 1.c...