만드는 것이 불가능하기 때문에시작 시 실행되는 Xorg 설정에 영향을 미치는 udev 규칙, 다른 대안으로 교체하고 싶습니다. 현재 저는 두 개의 주요 udev 스크립트를 작성했습니다. 키보드를 삽입하거나 제거할 때와 시작 시 키보드 레이아웃을 가장 먼저 변경하는 방법xcape
. 두 번째 기능은 특정 마우스가 연결되어 있을 때 포인터 속도를 늦추고 마우스 입력을 통해 컴퓨터를 깨울 수도 있습니다.
저는 (K)우분투 13.04를 사용하고 있습니다. udev 규칙과 스크립트는 xmodmap과 마찬가지로 다음과 같습니다.
/etc/udev/rules.d/00-teck.rules
:
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0e6a", ATTR{idProduct}=="030c", RUN+="/usr/local/bin/TECK_connect"
ACTION=="remove", SUBSYSTEM=="usb", RUN+="/usr/local/bin/TECK_disconnect"
/usr/local/bin/TECK_connect
:
#!/usr/bin/env bash
export DISPLAY=:0.0
cp -f /home/sparhawk/HDD/Computer/Xmodmaps/Xmodmap_for_TECK /home/sparhawk/.Xmodmap
sudo -u sparhawk setxkbmap -layout us -variant altgr-intl
sudo -u sparhawk xmodmap /home/sparhawk/.Xmodmap
sudo -u sparhawk pkill xcape
sudo -u sparhawk xcape -e 'Alt_L=Return' && sudo -u sparhawk notify-send "xmodmap" "TECK connected." -i /usr/share/icons/oxygen/48x48/devices/input-keyboard.png --hint=int:transient:1
/usr/local/bin/TECK_disconnect
:
#!/usr/bin/env bash
if [[ `lsusb | egrep -c 'Apple, Inc\. Aluminum Keyboard'` == 0 ]] && [[ `lsusb | egrep -c 'Megawin Technology Co\., Ltd'` == 0 ]]; then
export DISPLAY=:0.0
cp -f /home/sparhawk/HDD/Computer/Xmodmaps/Xmodmap_for_internal_Dell_keyboard /home/sparhawk/.Xmodmap
sudo -u sparhawk setxkbmap -layout us -variant altgr-intl
sudo -u sparhawk xmodmap /home/sparhawk/.Xmodmap
sudo -u sparhawk pkill xcape
fi
/etc/udev/rules.d/90-razerwakeup-slowdown.rules
:
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0016" RUN+="/bin/sh -c 'echo $env{DEVPATH} | grep -q usb./[^/]*/[^/]*/[^/]*$ && echo enabled > /sys$env{DEVPATH}/../power/wakeup; razer_slowdown'"
/usr/local/bin/razer_slowdown
:
#!/usr/bin/env bash
# slow down the tracking speed of a razer mouse.
# to check, $ xinput --list-props "Razer Razer DeathAdder"| grep 'Constant Deceleration'
# which was originally 1
scriptproper () {
sleep 0.5 # perhaps not necessary, but putting it in background is.
export DISPLAY=:0.0
sudo -u sparhawk xinput --set-prop "Razer Razer DeathAdder" "Device Accel Constant Deceleration" 3
}
scriptproper &
~/HDD/Computer/Xmodmaps/Xmodmap_for_TECK
:
! map right blank key to "menu" for KDE.
keycode 97 = Menu Menu
! Swap left ctrl and shift
keycode 50 = Control_L Control_L
keycode 37 = Shift_L Shift_L
! Replace right ctrl with shift
keycode 105 = Shift_R Shift_R
! Replace right shift, '
keycode 62 = apostrophe quotedbl
keycode 48 = slash question
! Enter to alt
keycode 36 = Alt_L Meta_L
! AltGr to Compose
!keycode 108 = Multi_key
! AltGr+key
keycode 20 = minus underscore minus underscore endash emdash
keycode 60 = period greater period greater ellipsis
! Left blank key to AltGr
keycode 101 = ISO_Level3_Shift Multi_key ISO_Level3_Shift
! key to the left of `
keycode 94 = Return NoSymbol Return
! Fn+F5 and Fn+F6 control brightness
keycode 148 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown
keycode 179 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp
clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Alt_L
add Mod2 = Num_Lock
add Mod4 = Super_L Super_R
add Mod5 = Mode_switch ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift
~/HDD/Computer/Xmodmaps/Xmodmap_for_internal_Dell_keyboard
:
! map right alt to ISO_Level3_Shift (e.g. for compose)
keycode 108 = ISO_Level3_Shift Multi_key
! Swap left ctrl and caps lock
keycode 66 = Control_L
keycode 37 = Caps_Lock
! AltGr+key
keycode 20 = minus underscore minus underscore endash emdash
keycode 60 = period greater period greater ellipsis
keycode 105 = Control_R Multi_key
clear Shift
clear Lock
clear Control
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5
add Shift = Shift_L Shift_R
add Lock = Caps_Lock
add Control = Control_L Control_R
add Mod1 = Alt_L
add Mod2 = Num_Lock
add Mod4 = Super_L Super_R
add Mod5 = Mode_switch ISO_Level3_Shift ISO_Level3_Shift ISO_Level3_Shift
답변1
xcape를 교체하기 위해 설치했습니다.집에서 수정자, 유사한 작업을 수행하지만 루트 수준에서 수행됩니다. xorg 규칙으로 구성되어 특정 키보드에서만 실행될 수 있다는 추가 이점이 있습니다.
그러므로 /etc/X11/xorg.conf.d/11-TECK-keymap.conf
그것은 다음을 포함합니다
Section "InputClass"
Identifier "TECK"
Driver "evdev"
Option "XKBOptions" "terminate:ctrl_alt_bksp" # and so on
# If you save this file under xorg.conf.d/ :
Option "AutoServerLayout" "on"
MatchIsKeyboard "on"
MatchProduct "TrulyErgonomic.com Truly Ergonomic Computer Keyboard"
### at-home-modifier options begin here.
# The basic option.
Option "XkbLayout" "us"
Option "XkbVariant" "altgr-intl"
Option "XKbOptions" "lv3:ralt_switch_multikey,numpad:pc"
Option "TransMod" "36:64" # Defines key/modifier pairs. Use xev. e.g. Enter (real key):Alt (virtual key).
EndSection
키 매핑에는 새로 출시된 TECK를 사용했습니다.소프트웨어펌웨어를 재구성합니다(수정할 수는 있지만 /usr/share/X11/xkb/keycodes/evdev
). AltGr
키 의 경우 직접 수정하여 해당 섹션의 항목을 /usr/share/X11/xkb/symbols/us
바꿨습니다.xkb_symbols "intl" {
나는 변했다
key <AE11> { [ minus, underscore, yen, dead_belowdot ] };
그리고
key <AE11> { [ minus, underscore, endash, emdash ] };
그리고
key <AB09> { [ period, greater, dead_abovedot, dead_caron ] };
그리고
key <AB09> { [ period, greater, ellipsis, dead_caron ] };
/var/lib/xkb/*.xkm
그런 다음 캐시된 xkb 구성을 삭제했습니다.이 답변, 그리고 다시 시작하세요.
XF86MonBrightnessDown
Fn+F5 및 Fn+F6을 사용하여 밝기( 및 XF86MonBrightnessUp
) 를 제어하는 방법을 아직 모르겠습니다.