如何在linux下把CapsLock對映為單擊則是Esc,當在組合鍵用時為Ctrl

時間 2021-05-30 23:06:20

1樓:

如果是在Windows下,可以用AutoHotKey實現。用下來的感覺還是很爽的。

;初始化

SetCapsLockState, AlwaysOff大小寫切換改為capslock+space

CapsLock & SpaceGetKeyState, CapsLockState, CapsLock, Tif CapsLockState = DSetCapsLockState, AlwaysOffelseSetCapsLockState, AlwaysOnKeyWait, Spacereturncapslock改為esc

CapsLock::Send, {ESCcapslock組合鍵改為ctrl組合鍵

CapsLock & c:: Send, ^cCapsLock & v:: Send, ^vCapsLock & n::

Send, ^nCapsLock & i:: Send, ^iCapsLock & p:: Send, ^pCapsLock & o::

Send, ^oCapsLock & t:: Send, ^tCapsLock & k:: Send, ^kCapsLock & f::

Send, ^fCapsLock & b:: Send, ^b

2樓:xia0ba0

xkeysnail

從此小指再也不疼了,方向鍵用不著了!附上我的配置:

#!/usr/bin/python3

# ~/.xkeyrc

""" usage:

sudo pip3 install xkeysnail

sudo xkeysnail ~/.xkeysrc

# auto start

nohup bash ~/ubuntu-config/run-xkey.sh > /tmp/run-xkey.out &

"""from xkeysnail.transform import *

from pykeyboard import PyKeyboard

# open numlock key

k = PyKeyboard()

k.tap_key(k.num_lock_key)

define_keymap(NoneAlt+hjkl to left,down,up,right

K("Alt-h"): K("LEFT"),

K("Alt-j"): K("DOWN"),

K("Alt-k"): K("UP"),

K("Alt-l"): K("RIGHT"),

K("Alt-Shift-h"): K("Shift-LEFT"),

K("Alt-Shift-j"): K("Shift-DOWN"),

K("Alt-Shift-k"): K("Shift-UP"),

K("Alt-Shift-l"): K("Shift-RIGHT"),

K("C-Alt-h"): K("C-Alt-LEFT"),

K("C-Alt-j"): K("C-Alt-DOWN"),

K("C-Alt-k"): K("C-Alt-UP"),

K("C-Alt-l"): K("C-Alt-RIGHT"),

K("C-Alt-Shift-h"): K("C-Alt-Shift-LEFT"),

K("C-Alt-Shift-j"): K("C-Alt-Shift-DOWN"),

K("C-Alt-Shift-k"): K("C-Alt-Shift-UP"),

K("C-Alt-Shift-l"): K("C-Alt-Shift-RIGHT"),

K("Alt-i"): K("HOME"),

K("Alt-a"): K("END"),

K("C-Alt-i"): K("C-END"),

K("C-Alt-a"): K("C-HOME"),

K("Alt-u"): K("Page_Up"),

K("Alt-d"): K("Page_Down"),

}, "quick move")

define_keymap(None, , "caps->esc")

3樓:星星

使用gnome-tweak-tool

sudo apt install gnome-tweak-tool安裝後開啟tweak

選擇Additional Layout Options即可把caps lock對映為Esc

4樓:lee moo

remove Lock = Caps_Lockkeysym Caps_Lock = Escape以上是xmodmap的方法。

這個實現的不怎麼好!

不過本著「只要能讓自己用著爽,寧願奮鬥到天亮」的精神找到了另乙個方法不過好像也只能在X下使用。

要借助系統的鍵盤對映

1.把Capslock 對映為Esc,

2.再用xcape -e 'Escape=Control_L'

這樣就實現了。

https://github.com/ICEleemoo/xcape我總覺得還可能有其他的實現方式。

比如修改一些keymap的相關檔案等……,不過還是希望大神們能找出更好的方法。

5樓:

這個應該很難做到,因為CAPSLOCK鍵按下即觸發,而不是鬆開時再觸發。組合鍵不可能同時按下(不說別的,USB是序列匯流排對吧),所以在系統讀取到乙個CAPSLOCK訊號後,它不可能立刻知道這是乙個組合鍵還是乙個單獨的按鍵。

除非如jamser所說,在核心處讀取CAPSLOCK輸入並且掛起500ms左右等待下乙個輸入,如果在這段時間內有輸入進來,則當作組合鍵處理,otherwise當ESC處理。

6樓:Cryonyx

xmodmap可以修改X下的鍵盤布局

Archlinux下,可以通過複製/usr/share/kbd/keymaps/i386/qwerty/下的us.map.gz為custom.

map.gz,修改其中相應鍵位,然後在/etc/vconsole.conf裡新增KEYMAP=custom來改變tty下的鍵盤布局

其它的發行版就不清楚了

剛才沒看仔細,原來是要直接按下Capslock為Esc,一起按其它鍵則為Ctrl,這個貌似從沒見過能這麼用,Windows下倒是可以用AutoHotKey來實現

7樓:馬巨集菩

如果只是簡單的 remap 的話,也許可以試試看自定義乙個鍵盤布局,應該在 tty 下也能用。

但是你這個需求即使是 X 下都沒辦法用 xmodmap 實現啊……只支援定義乙個鍵在普通、按下 shift 、按下 switch (modifier,某些老英式鍵盤上的 AltGr )、按下 shift+switch 後分別對映成哪個 keycode 。沒有辦法區分是單擊還是組合鍵。

8樓:jamesr

據我所知,Linux系統下不存在整個系統層面修改鍵盤對映的方式。

鍵盤作為字元裝置(/dev/input/event0)被讀取,解析這個裝置內容的是各種shell。除非shell本身支援鍵盤對映功能,否則做不到題主的要求(比如說,題主提到的xmodmap,就是X這個shell下的支援)。

或者,你可以寫個核心模組,在/dev/input/event0出現在記憶體的時候進行修改,這樣就能在系統層面修改鍵盤對映。

如何在 Linux 環境下利用 Python 監聽當前系統的滑鼠事件?

曾華山 linux下好辦,所有的裝置都當作檔案處理了,在 dev input 目錄下找到滑鼠對應裝置檔案讀出來即可。滑鼠裝置檔案是 dev input mice 讀3個位元組,三個位元組的值分別是 Button型別 X的相對位移 Y的相對位移 取Button的低3位 Button 0x07 0x01...

如何在Windows系統中訪問Linux分割槽的檔案?

推薦diskinternals的linux reader。另外這個問題重複了吧 見如何在 Windows 下訪問 ext4 格式的硬碟? 楊個毛 我知道的最方便的方法是,開乙個NTFS分割槽,在Linux裡用NTFS3g掛載當作共享盤用 極端一點地,你可以把整個home掛到乙個NTFS分割槽上。不過...

Windows下如何遠端連線 Linux?

linux上可以使用remmina遠端連線windows伺服器共享檔案 傳輸檔案需要在連線配置裡設定共享目錄,設定後再連線會在遠端伺服器對映本地檔案 編輯連線,勾選共享目錄選擇乙個資料夾儲存,如下圖連線伺服器在檔案管理器裡多了個本地對映的資料夾,在該目錄下可進行複製貼上等操作 batsing Sec...