ฉันได้ติดตั้งตัวจัดการหน้าต่าง i3 ข้างเดสก์ท็อป GNOME บน Ubuntu-GNOME 16.04 ฉันมีปัญหาในการทำให้ปุ่มสื่อของฉันทำงานกับแป้นพิมพ์ Logitech G610
ฉันมีดังต่อไปนี้ในของฉัน ~/.config/i3/config
ไฟล์:
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
และยืนยันว่าคำสั่งเหล่านั้นทำงานในเทอร์มินัล ปัญหาที่ฉันเห็นคือ XF86AudioRaiseVolume
กิจกรรม keypress ฯลฯ ไม่ได้ลงทะเบียน
ถ้าฉันใช้ xev -event keyboard
เพื่อลองดูรหัสเมื่อฉันกดปุ่มมัลติมีเดียทั้งหมดที่ฉันได้รับมีดังต่อไปนี้:
MappingNotify event, serial 30, synthetic NO, window 0x0,
request MappingKeyboard, first_keycode 8, count 248
KeymapNotify event, serial 31, synthetic NO, window 0x0,
keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
และจะไม่มีการรายงานรหัสคีย์เหมือนกับรหัสอื่น อย่างไรก็ตามการใช้ sudo showkey -k
ฉันได้รับดังต่อไปนี้ซึ่งเป็นค่าที่คาดหวัง:
keycode 113 press
keycode 113 release
keycode 115 press
keycode 115 release
keycode 114 press
keycode 114 release
วิ่ง xinput
ฉันเห็นดังต่อไปนี้
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech MX Master id=12 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint TouchPad id=15 [slave pointer (2)]
⎜ ↳ AlpsPS/2 ALPS DualPoint Stick id=16 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Logitech Gaming Keyboard G610 id=10 [slave keyboard (3)]
↳ Logitech Gaming Keyboard G610 id=11 [slave keyboard (3)]
↳ Dell WMI hotkeys id=13 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ DELL Wireless hotkeys id=17 [slave keyboard (3)]
ที่ซึ่งคีย์บอร์ด Logitech ปรากฏเป็นอุปกรณ์สองเครื่อง วิ่ง xinput list-props 10
และ xinput list-props 11
ฉันเห็นว่ารายการแรกแผนที่ไป /dev/input/event8
ในขณะที่แผนที่ที่สองไป /dev/input/event9
.
ถ้าฉันวิ่ง xinput test 10
ฉันเห็นว่ารายชื่อแรกสำหรับแป้นพิมพ์ของฉันตอบสนองต่อแป้นคีย์บอร์ดปกติทั้งหมด แต่ไม่ใช่ปุ่มมีเดียขณะที่ xinput test 11
ตอบสนองเฉพาะกับปุ่มสื่อ:
key press 121
key release 121
key press 123
key release 123
key press 122
key release 122
(สิ่งเหล่านี้ถูกปิดด้วย 8 จาก showkey
เอาต์พุต แต่เห็นได้ชัดว่าคาดว่า นอกจากนี้ค่าเหล่านี้ตรงกับเอาต์พุตการแม็พด้วย xmodmap -pke
เช่น keycode 121 = XF86AudioMute NoSymbol XF86AudioMute
) วิ่ง sudo evtest /dev/input/event8
และ sudo evtest /dev/input/event9
ให้ผลลัพธ์ที่คล้ายกัน
ดังนั้นความเข้าใจของฉันเกี่ยวกับกระบวนการระหว่างการกดปุ่มและการจัดการนั้นค่อนข้างคลุมเครือ แต่ดูเหมือนว่าข้อเท็จจริงที่ว่าปุ่มปกติและปุ่มสื่ออยู่บนอุปกรณ์ป้อนข้อมูลที่แตกต่างกันทำให้เหตุการณ์สื่อปุ่มกดไม่สามารถผ่านไปยังเซสชัน X ได้ โดยไม่แสดงผลสำหรับ xev
?) ดังนั้นจึงไม่ผ่าน i3 ทำงานได้ดีสำหรับเดสก์ท็อป GNOME ดังนั้นฉันต้องกำหนดค่าบางอย่างเพื่อให้ทำงานกับ i3 ได้หรือไม่ ฉันกำลังสูญเสียวิธีการดำเนินการจากที่นี่ความช่วยเหลือใด ๆ จะได้รับการชื่นชมอย่างมาก
แก้ไข
ฉันเคยมีคำพูดเกี่ยวกับคำสั่งใน ~/.config/i3/config
ไฟล์ แต่นั่นไม่ได้ ฉันได้แก้ไขด้านบนเพื่อแก้ไขให้ถูกต้อง แต่นั่นไม่ใช่สาเหตุของปัญหา
exec i3
ในของฉัน~/.xinitrc
ไฟล์ก่อให้เกิดปัญหาบางอย่างกับ dbus ที่ทำให้สิ่งต่าง ๆ เช่น terminal ของฉันใช้เวลา 6 วินาทีในการเปิด สำหรับใครก็ตามที่อาจใช้วิธีนี้เปลี่ยนเนื้อหาของ~/.xinitrc
ไปยังexec dbus-launch --exit-with-session i3
ดูเหมือนว่าจะมีการแก้ไข