จะทำการแมปเมนูบริบทไปยังคีย์อื่นใน linux ได้อย่างไร?


19

ฉันเพิ่งซื้อ Thinkpad ของ Lenovo และฉันก็ภูมิใจในทุกอย่าง มันให้ความรู้สึกกระทัดรัดเหมือน Linux kernel: P

ปัญหาคือ Lenovo ตัดสินใจที่จะลบคีย์เมนูบริบทซึ่งเป็นคีย์ที่ทำหน้าที่คลิกขวา พวกเขาแทนที่ด้วยปุ่มหน้าจอพิมพ์ แป้นพิมพ์ของฉันมีส่วนที่เป็นตัวเลขโดยมีปุ่มอยู่ด้านบน มีปุ่มแว่นขยายที่ฉันต้องการตั้งค่าใหม่เพื่อเปิดเมนูบริบทหรือเป็นปุ่มคลิกขวา เป็นไปได้ที่จะทำเช่นนี้?

ฉันลองค้นหาคำถามที่เกี่ยวข้องอื่น ๆ แต่พบคำถามและวิธีการเพิ่มตัวเลือกในเมนูตามบริบทของ Nautilus เท่านั้น ฉันต้องการแมปรหัสทางกายภาพของแป้นพิมพ์เพื่อเปิดเมนูนี้ เหมือนเมื่อก่อน นอกจากนี้ยังปรากฏว่า Dell กำลังวางกุญแจนี้ในแป้นพิมพ์ Inspiron ฉันไม่รู้ว่าเกิดอะไรขึ้นตั้งแต่ฉันใช้แป้นพิมพ์มากกว่าเมาส์

ขอบคุณล่วงหน้า.


3
โปรดติดตั้ง xbindkeys sudo apt-get install xbindkeysกับ จากนั้นในเทอร์มินัลรันxbindkeys -kและพิมพ์คีย์ที่คุณต้องการเปลี่ยน คุณสามารถเพิ่มผลลัพธ์ให้กับคำถามของคุณได้หรือไม่?
เซ

"NoCommand" m: 0x50 + c: 46 Mod2 + Mod4 + l
Jhonnytunes

ใครจะต้องการแป้นพิมพ์หน้าจอที่พวกเขาต้องการปุ่มเมนู ฉันสงสัยว่าคุณเมามากแค่ไหนที่ได้รับอนุญาตให้มาทำงานที่ Lenovo อย่างไรก็ตามโปรดทราบว่าคุณไม่จำเป็นต้อง.Xmodmapสร้างไฟล์ขึ้นxmodmap -pkeมาเพื่อเริ่มต้นคุณสามารถใส่การเชื่อมโยงของคุณในไฟล์เปล่าได้เช่นกัน ดูสิ่งที่ @Baha_hi ค้นพบด้านล่าง
J. Katzwinkel

คำตอบ:


13

มันซับซ้อนเล็กน้อย แต่คุณสามารถทำได้ ทำตามขั้นตอนเหล่านี้:

ตรวจสอบรหัสคีย์

  1. รันxevเพื่อตรวจสอบรหัสกุญแจ:

    xev | grep keycode
    
            state 0x0, keycode 36 (keysym 0xff0d, Return), same_screen YES,
            state 0x0, keycode 107 (keysym 0xff67, Menu), same_screen YES,
            state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    
  2. กดปุ่มที่คุณต้องการกำหนดค่าใหม่ ผลลัพธ์ในเทอร์มินัลจะแสดงให้คุณทราบkeycode(โปรดระวังอาจมีหลายรายการ)

ทดสอบการทำแผนที่

  1. ตั้งค่าการแมปใหม่ชั่วคราวสำหรับฉันมันคือkeycode 107:

    xmodmap -e "keycode  107 = Return NoSymbol Return"
    

หากคีย์ทำงานตามที่คาดไว้คุณสามารถบันทึกการกำหนดค่าได้

บันทึกการกำหนดค่าของคุณ

  1. บันทึกตาราง keymap ปัจจุบันของคุณ$HOMEเพื่อแทนที่ defau:

    xmodmap -pke > ~/.Xmodmap
    
  2. สร้างหรือแก้ไข~/.xinitrcเพื่อโหลดการกำหนดค่าของคุณ:

    $EDITOR ~/.xinitrc
    
  3. เพิ่มบรรทัดต่อไปนี้

    if [ -f $HOME/.Xmodmap ]; then
            /usr/bin/xmodmap $HOME/.Xmodmap
    fi
    

สนุก

ที่สุดของข้อมูลดังกล่าวข้างต้นมาจากบทความ ArchWiki


มีปัญหา เมื่อฉันกดปุ่ม 'l' จะถูกทำเครื่องหมาย ฉันตรวจสอบมันที่ xev และให้รหัส 46 ตัวที่กำหนดให้กับตัวอักษร L บางทีมันอาจจะไม่มีรหัสคีย์เลย
Jhonnytunes

@Jhonnytunes ตรวจสอบว่ารูปแบบแป้นพิมพ์ของคุณถูกต้อง คุณสามารถเปลี่ยนรูปแบบการพิมพ์ `sudo dpkg-reconfigure keyboard-configuration '
Ed Villegas

ยังคงเป็น behaivor เดียวกัน ฉันลองรุ่น Thinkpad ที่แตกต่างกันและไม่มีอะไร
Jhonnytunes

BTW thinkpad ของฉันคือ E530c และไม่ปรากฏในรายการแป้นพิมพ์
Jhonnytunes

หากนี่คือเค้าโครงแป้นพิมพ์ของคุณบางทีคีย์ที่อยู่ถัดจาก«ลบ»อาจเป็น«เมนูบริบท "(ฟังก์ชันที่คุณค้นหา) มิฉะนั้นให้กำหนดค่าคีย์ใหม่อีกครั้งหรือขอโต๊ะทำงานโดยตรงจาก Lenovo ที่คุณควรเลือกเลย์เอาต์
Ed Villegas

12

ฉันพบว่าที่นี่โดยใช้: shift+ F10เปิดเมนูบริบท

ฉันรู้ว่ามันไม่ใช่ทางออกที่ดีที่สุด แต่ฉันคิดว่ามันสามารถช่วยในการใช้งานชั่วคราว!

PS: ฉันมี e530c ด้วยและฉันทดสอบสิ่งนี้ใน Debian 7 (Wheezy)


3

ในที่สุดฉันก็พบวิธีที่จะทำสิ่งนี้หลังจากผ่านไปหลายชั่วโมงของการทดสอบและล้มเหลว: D

ก่อนอื่นการติดตั้ง xautomation:

sudo apt-get install xautomation

จากนั้นมุ่งหน้าไปที่แท็บทางลัดของส่วนแป้นพิมพ์ในการตั้งค่าระบบ Ubuntu ก่อนอื่นให้ไปที่รายการสกรีนช็อตและทำการแมปการกระทำไปยังคีย์อื่นหรือปิดใช้งานคีย์เหล่านั้นหากคุณต้องการ ฉันแทนที่คีย์ PrtSc (พิมพ์) ด้วยปุ่ม Thinkpad black (Launch1)

ตอนนี้ไปที่ส่วนทางลัดที่กำหนดเองและเพิ่มทางลัด ตั้งชื่อตามที่คุณต้องการเช่นเมนู ในฟิลด์คำสั่งแทรกสิ่งนี้:

xte 'keydown Shift_L' 'key F10' 'keyup Shift_L'

ทำงานเสร็จแล้ว! มันทำงานเหมือนปาฏิหาริย์;)


2

นี้ได้เคล็ดลับสำหรับฉัน. สำหรับฉันรหัสสำหรับปุ่ม "PrtSc" บน thinkpad ของฉันคือ 107 ฉันพบว่าโดยเครื่องมือ "xev" ใน Ubuntu

xmodmap -e "keycode  107 = Menu"

นี่เป็นการเปลี่ยนแปลงชั่วคราว

คุณสามารถทำให้สิ่งนี้เป็นแบบถาวรได้โดยการเพิ่มคำสั่งนี้ไปยัง / etc / profile และมันจะทำงานทุกครั้งที่คุณบู๊ตและมันจะเป็นการเปลี่ยนแปลงแบบถาวร


1

ฉันเพิ่งซื้อ Lenovo E550 และมีปัญหาเดียวกันผมแก้ไขได้โดยการใช้xte(จากxautomation) xmodmapพร้อมด้วย

ทำไมคำตอบอื่น ๆ ไม่ทำงานทั้งหมด?

  1. คำตอบ@Ed Villegas (หรือ@Null Pointer ) ไม่สามารถใช้งานได้เนื่องจากปุ่มบางตัวที่อยู่ด้านบนส่วนตัวเลขไม่ใช่กุญแจที่ไม่ซ้ำกันด้วยตนเอง ( เช่นกุญแจล็อคเกี่ยวข้องกับการรวมกันSuper+ L) เมื่อxevจะใช้ในการพยายามที่จะหา keycode คีย์ล็อคที่มันจะกลับทั้งสองSuperและLการพิมพ์ซ้ำ, คุณเพียงแค่ต้องตีความxevเส้นเอาท์พุทโดยสาย

  2. สำหรับ@Bahaxและ@John Finegan : Shift+ เป็นปุ่มเมนูบริบทก็ไม่ได้ทำงานในการใช้งานทั้งหมดและก็ไม่ได้ให้ฟังก์ชั่นเดียวกับF10 Menuหากคุณเลือกไฟล์ใน file explorer และกด Menuเมนูบริบทสำหรับไฟล์นั้นควรปรากฏขึ้นป๊อปอัพสิ่งนี้จะไม่เกิดขึ้นกับการรวมกันShift+ F10มันจะให้เมนูบริบทสำหรับหน้าต่างแทน

  3. @Danial Behzadiใช้วิธีการที่คล้ายกันกับผู้คนในรายการที่ 2 แต่การเชื่อมโยงการรวมแป้นพิมพ์เข้ากับคีย์เดียวผ่านการจำลองการกดแป้นก็จะเชื่อมโยงคีย์ไปยังShift+ F10และให้ผลลัพธ์เดียวกัน

คำตอบที่ได้ผล

มันเป็นสิ่งสำคัญที่จะต้องคำนึงว่ากุญแจที่ไม่ได้อยู่ในแป้นพิมพ์ของ ThinkPad คือMenu(นั่นคือชื่อ) มันจะแสดงในภาพต่อไปนี้:

ปุ่มเมนู

แม้ว่ารหัสจะไม่ปรากฏ แต่มันควรมีรหัสอยู่ในคอมพิวเตอร์ของคุณคุณสามารถค้นหาได้โดยพิมพ์ตารางรหัสxmodmap -pke | grep Menuซึ่งควรให้สิ่งที่คล้ายกับคุณ:

เอาต์พุต xmodmap

เมื่อทราบแล้วให้ติดตั้งxautomation(เพื่อใช้xteสำหรับการจำลองการกดแป้น) เช่นใน@Danial Behzadiคำตอบ:

sudo apt-get install xautomation

และสร้างทางลัดที่กำหนดเองในTriggerกดปุ่มที่คุณต้องการที่จะเป็นทางลัดในการวางAction สมัครและทดสอบxte 'key Menu'

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