linux 按鍵修改簡單示例

2021-10-12 12:43:27 字數 4024 閱讀 8385

文字介面和圖形介面的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...