กำหนดค่า Caps Lock เป็น AltGr และ Arrows เหมือนเป็นกลุ่ม


9

1. ฉันจะทั่วโลกแผนที่Caps Lockเพื่อAltGr?

ฉันไม่ต้องการ CapsLock และต้องการมีปุ่ม AltGr ที่เข้าถึงได้ง่าย

2. ฉันต้องการแมปแป้นการเคลื่อนไหวทั้งหมดไปยังvimตำแหน่งที่เหมือนกัน

  • AltGr+ F=Backspace
  • AltGr+ H=LeftArr
  • AltGr+ J=DownArr
  • AltGr+ L=RightArr
  • AltGr+ K=UpArr
  • AltGr+ U=PgUp
  • AltGr+ D=PgDown
  • AltGr+ S=Enter
  • AltGr+ 3=Pos1
  • AltGr+ $=End
  • AltGr+ X=Del

ดังนั้นฉันสามารถเดินผ่านรหัสของฉันได้อย่างง่ายดายโดยไม่ขยับมือออกจากตำแหน่ง 10 นิ้ว (เหมือนในvimเครื่องมือแก้ไข)

ฉันพบคำตอบนี้: ฉันจะทำการแมปคีย์แคปล็อคเข้ากับคีย์ Backspace ได้อย่างไร
แนะนำให้ใช้

xmodmap -e "keycode [code] = [new key]"

ดู: http://wiki.linuxquestions.org/wiki/List_of_Keysyms_Recognised_by_Xmodmap

แต่ฉันไม่สามารถคิดออกได้วิธีเพิ่มสิ่งนี้ลงในชุดค่าผสมของตัวอย่างเช่น AltGr + J

การเริ่มต้นอีกครั้งจะเป็นการตั้งค่า "คีย์อักขระทางเลือก" ในunity-control-center-> คีย์บอร์ด -> ทางลัด -> พิมพ์เป็นCaps Lock

อัปเดต:ฉันพบวิธีแก้ไขปัญหาบางอย่าง (ดูด้านล่าง) แต่ทั้งหมดนั้นไม่สามารถใช้งานได้ในแอปพลิเคชันทั้งหมดฉันคิดว่านี่เป็นการตั้งค่าระดับโลกที่เรียกว่า "XFree 4" ซึ่งแอพบางตัวใช้

ฉันจะตั้งค่าการเชื่อมโยงที่สำคัญสำหรับ XFree 4 ได้อย่างไร


ฉันไม่มีปุ่ม AltGr แต่คุณอาจพบว่าคำถามที่คล้ายกันนี้มีข้อมูลบางอย่าง
Elder Geek

คำตอบ:


4

1. เพิ่มไฟล์ XKB บางส่วนใหม่

sudo vi /usr/share/X11/xkb/symbols/altgr_vim

กับเนื้อหานี้:

partial keypad_keys
xkb_symbols "altgr-vim" {
  # replace Caps with AltGr
  key <CAPS> { [ ISO_Level3_Shift            ] };
  # Add vim cursor keys to be accessed with AltGr
  key <AB02> { [ x, X, Delete, Delete        ] };
  key <AC02> { [ s, S, KP_Enter, KP_Enter    ] };
  key <AC03> { [ d, D, Next, Next            ] };
  key <AC04> { [ f, F, BackSpace, BackSpace  ] };
  key <AC06> { [ h, H , Left, Left           ] };
  key <AC07> { [ j, J, Down, Down            ] };
  key <AC08> { [ k, K, Up, Up                ] };
  key <AC09> { [ l, L, Right, Right          ] };
  key <AD07> { [ u, U, Prior, Prior          ] };
  key <AE03> { [ 3, section, Home, Home      ] };
  key <AE04> { [ 4, dollar, End, End         ] };
};

2. รวมบางส่วนในไฟล์ภาษาของคุณ

เช่นภาษาเยอรมันมันคือ/usr/share/X11/xkb/symbols/de( /deภาษาของคุณอยู่ที่ไหน) เพิ่มสิ่งนี้ภายในบล็อกแรก ( xkb_symbols "basic"):

include "altgr_vim(altgr-vim)"

หมายเหตุ:ส่วนนี้จะต้องมีการทำซ้ำหลังจากการปรับปรุงการกระจายทุก

3. โหลดเซสชันของหน้าต่างอีกครั้ง

กด ALT + F2 ป้อน "r" เพื่อโหลดเซสชัน gnome อีกครั้งหรือเพียงออกจากระบบและเข้าสู่ระบบอีกครั้ง ตอนนี้องค์ประกอบหลักใหม่จะพร้อมใช้งาน

ปัญหาบางอย่าง

แอปพลิเคชั่นบางตัวไม่ยอมรับการตั้งค่าตัวอย่างเช่น: sublimeซึ่งสามารถแทนที่atomได้

บางแอปพลิเคชันต้องการการตั้งค่าพิเศษเช่นในyakuakeการผูกคีย์ถูกตั้งค่าเป็น "XFree 4" หากคุณตั้งค่าเป็น "Linux" หรือ "Solaris" การตั้งค่า XKB จะทำงานที่นั่นด้วย:


1
ฉันขอแนะนำอย่างยิ่งให้ใช้ตัวเลือก XKB lv3:caps_switchแทนการเปลี่ยน<CAPS>คำจำกัดความตามที่คุณแสดง เห็น/usr/share/X11/xkb/symbols/level3(ที่กำหนดตัวเลือกนั้น)
quixotic

@quixotic: คุณสามารถเพิ่มคำตอบใหม่ด้วยการกำหนดค่าที่ต้องการได้หรือไม่? ฉันอาจต้องการคำตอบที่สมบูรณ์แบบที่นี่สำหรับความโปรดปราน;)
rubo77

มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน แค่หัวขึ้น แต่อาจต้องการเปลี่ยน "section" เป็น "numbersign" สำหรับ shift + 3
mowwwalker

0

เพื่อให้ได้รับAltGr+ h, j, k, lหรืออื่น ๆ ที่สำคัญใด ๆ โดยไม่ต้องโปรแกรมใด ๆ เช่นAutokeyเพื่อ peform คุณสามารถปรับแต่งรูปแบบแป้นพิมพ์ของคุณพบใน/ usr / share / X11 / XKB / สัญลักษณ์ / ตอนนี้ฉันใช้เลย์เอาต์เยอรมัน "de" ดังนั้นก่อนอื่นเลยฉันจะ:

1- คัดลอกเค้าโครงมาตรฐาน

cp /usr/share/X11/xkb/symbols/de /usr/share/X11/xkb/symbols/de.bak

2- เปิดเค้าโครงของคุณด้วยโปรแกรมแก้ไขข้อความที่คุณต้องการ (ที่นี่: gedit)

sudo gedit /usr/share/X11/xkb/symbols/de 

ที่นั่นคุณจะเห็นสิ่งที่ชอบ:

key <AD03>  { [         e,          E,     EuroSign,     EuroSign ] };
key <AD06>  { [         z,          Z,    leftarrow,          yen ] };
key <AD11>  { [udiaeresis, Udiaeresis, dead_diaeresis, dead_abovering ] };
....
....
key <AD12>  { [      plus,   asterisk,   dead_tilde,  macron ]  };
key <AC02>  { [               s,               S,          ssharp,          U017F ] }; 
key <AC06>  { [               h,               H,            Left,             Left ]   }; 
key <AC07>  { [               j,               J,            Down,             Down ]   }; 
key <AC08>  { [               k,               K,              Up,               Up ]   }; 
key <AC09>  { [               l,               L,           Right,            Right ]   }; 
....
....
key <AB10>  { [     minus, underscore,               endash,     emdash ] };
key <LSGT>  { [     less,     greater,                  bar,     NoSymbol   ] };

อย่างที่คุณเห็น AB, AC, AD, AE หมายถึงแถวและตัวเลขแสดงตำแหน่งของมันบนแป้นพิมพ์ (มีแป้นพิเศษบางอย่างเช่นปุ่มน้อย / ใหญ่ซึ่งสามารถแมปไปยังแป้นอื่นได้เช่นกัน ..

ที่นั่นคุณจะไม่พบแป้นพิมพ์ทั้งหมดเพียงอย่างเดียวซึ่งแตกต่างกันไปตามเค้าโครงแป้นพิมพ์นั้น ภาษาเยอรมันอ้างอิงจาก "latin (type4)" อย่างที่คุณเห็นในการเริ่มต้นของไฟล์:

include "latin(type4)"

จากนั้นคุณเพียงแค่ต้องเปลี่ยนตามความต้องการของคุณ มันทำงานเหมือน:

รหัส {[ key, key+ shift, key+ AltGr, key+ Shift+ AltGr ]};

(อาจเป็นไปได้ที่จะเพิ่มตัวดัดแปลงระดับ 5 หรือมากกว่า)

หากคุณต้องการตรวจสอบการเปลี่ยนแปลงโดยไม่ต้องรีสตาร์ท (เปลี่ยน "de" สำหรับเค้าโครงของคุณ ... นี่คือรายการที่มีเค้าโครงที่เป็นไปได้ )

 setxkbmap -layout de

ลูกศรจะมีป้ายกำกับเหมือนกับ "ซ้าย, ขวา, ลง, ขึ้น" ตามที่กล่าวไว้ นี่คือรายการที่ดีของค่าที่เป็นไปได้

นี่คือตัวอย่างของเค้าโครงที่กำหนดเองของฉัน (แต่ไม่ได้ใช้งานในขณะนี้)

จากนั้นคุณจะต้องทำการแมปใหม่ Capslock และ AltGr หรือว่ามันทำงานแล้วตามคำถามที่คุณโพสต์?

หากคุณต้องการเก็บเลย์เอาต์เยอรมัน "ปกติ" คุณสามารถทำการเปลี่ยนแปลงเลย์เอาต์อื่นที่คุณไม่ได้ใช้ตามปกติ (หรือเปลี่ยน "เยอรมันไม่มีกุญแจตาย" ซึ่งคุณสามารถค้นหาเพิ่มเติมได้ที่ไฟล์ "de" เดียวกัน .. )

แหล่งที่มา: ลิงก์ไปยังคำอธิบายที่ครอบคลุมมากของ xbk และเลย์เอาต์ที่กำหนดเอง
ลิงก์ไปยังคำถามที่คล้ายกันพร้อมคำตอบที่ดี


1
ใน Ubuntu และอนุพันธ์รุ่นใหม่คุณสามารถตั้งค่าเค้าโครงและตัวเลือก XKB ใน/etc/default/keyboardครั้งเดียวที่มีการเปลี่ยนแปลงเหล่านี้ ดูman 5 keyboardรายละเอียด ฉันแนะนำให้เพิ่มตัวแปร & ตัวเลือกใหม่แทนที่จะเปลี่ยนค่าที่มีอยู่
quixotic

0

หากต้องการทำการตั้งค่า CapsLock ใหม่ให้ใช้ AltGr

xmodmap -e "keycode 66 = ISO_Level3_Shift"

(ที่มา: https://superuser.com/a/138757/160420 )

ในการแมปปุ่มลูกศรกับ AltGr + h, j, k และ l ให้ใช้xmodmap -pkeเพื่อค้นหาการตั้งค่าที่ถูกต้อง:

xmodmap -pke|egrep "f F|j J|k K|h H|l L|o O|u U|d D|dollar|BackSpace"

และเปลี่ยนค่าที่ห้าเป็นคีย์ใหม่และเพิ่มทั้งหมดนี้ในสคริปต์ทุบตี:

# xrandr needs the desktop to be fully loaded. add a delay, to be able to add it to Startup Applications:
sleep 15
# change BackSpace into AltGr
xmodmap -e "keycode 66 = ISO_Level3_Shift"
# set BackSpace on AltGr + F
xmodmap -e "keycode 41 = f F f F BackSpace BackSpace dstroke ordfeminine f F dstroke ordfeminine"
# create arrow keys at h,j,k,l
xmodmap -e "keycode  43 = h H h H Left Left"
xmodmap -e "keycode  44 = j J j J Down Down"
xmodmap -e "keycode  45 = k K k K Up Up"
xmodmap -e "keycode  46 = l L l L Right Right"
xmodmap -e "keycode  30 = u U u U Prior Prior"
xmodmap -e "keycode  40 = d D d D Next Next"
xmodmap -e "keycode  12 = 3 section 3 numbersign Home Home"
xmodmap -e "keycode  13 = 4 dollar 4 dollar End End"
xmodmap -e "keycode  53 = x X x X Delete Delete"

(ที่มา: https://askubuntu.com/a/466315/34298 )

วางสคริปต์ bash นั้นในแอปพลิเคชันเริ่มต้นของคุณ(เลือกDash> แอปพลิเคชันเริ่มต้น> เพิ่มและเพิ่มคำสั่ง)

หมายเหตุ: ในgnome-terminalลักษณะนี้ใช้งานได้ดี แต่yakuakeมันใช้งานได้กับ BackSpace บน AltGr + F แต่ตั้งค่า AltGr + h, j, k และ l เป็น D, B, A และ C เว้นแต่คุณจะตั้งค่า Key Binding เป็น "Linux" แทน "(ค่าเริ่มต้น) XFree 4" และsublime-textมันไม่ทำงานเลย


xmodmapเลิกใช้แล้วและหมดกำลังใจ มันยังคงทำงานในสภาพแวดล้อม X11 แต่จะไม่ทำงานใน Wayland และการเปลี่ยน X11 อื่น ๆ การใช้โซลูชันที่ใช้ XKB แทนได้รับการสนับสนุนอย่างมาก
quixotic

ดังนั้นฉันเดาฉันต้องเพิ่มรูปแบบแป้นพิมพ์แบบกำหนดเองใหม่แล้ว? askubuntu.com/questions/482678/…
rubo77

1
เพิ่มรูปแบบที่กำหนดเองเป็นวิธีหนึ่งที่แม้ว่าคุณอาจจะสามารถรับไปเพียงทำให้ตัวเลือกที่กำหนดเอง ใน GNOME หรือ Unity คุณอาจต้องปิดการใช้งานปลั๊กอินคีย์บอร์ด settings-daemonเพื่อให้การปรับแต่ง xmodmap ของคุณทำงาน แต่ถ้าคุณสร้างโครงร่าง / ชุดตัวเลือก / ตัวแปร XKB ใหม่ทั้งระบบคุณสามารถตั้งค่า/etc/default/keyboardได้
quixotic

1
ดูเหมือนว่าจะทำงานได้ค่อนข้างมาก แต่มันจะแก้ปัญหาได้หรือไม่ว่าชุดคีย์หลักใหม่ไม่ทำงานในบางแอพ
rubo77
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.