팁 & 테크
키보드, 마우스 등을 좀 더 편리하게 사용할 수 있는 팁, 개조나 자작 관련 정보, 기술 내용을 자유롭게 올리는 게시판입니다.
http://www.kbdmania.net/board/zboard.php?id=tipntech&no=465http://groups.google.com/group/linux.debian.maint.x/browse_frm/thread/6e0417c440c8c51d/7d2dc90b468e0d6c?lnk=st&q=xmodmap+%22shift+backspace%22+backslash+bar&rnum=1&hl=ko#7d2dc90b468e0d6c링크 1에 보면 누가 저랑 비슷한 일을 하려다 실패해서 질문하고 답변한 것이 메일링 리스트에 있습니다.
저도 그것을 보고 참고하여 했더니 성공하였습니다.
제가 사용하는 조합은
1) ~(`) 와 Esc 를 서로 바꾸고
2) CapsLock 을 Ctrl 로 바꾸고 (CapsLock 은 아예 안쓰니 매핑 안함)
3) BackSpace 와 \(|) 를 서로 바꿉니다. (일자엔터는 \(|) 가 HHK의 BackSpace 에 해당하는 자리에 있음)
1), 2) 는 xmodmap 을 사용하면 별 문제가 없지만 3) 번은 약간 더 설정을 해 줘야 합니다.
X의 키보드 기본 설정이 약간 이상해서 BackSpace 키는 Shift 키와 같이 눌려도 처리를 해 주지 않기 때문입니다.
그러니까 다른 것들처럼 기본 설정 상태에서 그냥 맞교환만 해 놓으면 \ (backslash) 는 입력이 되지만 | (bar) 는 입력을 못합니다.
그래서 다음과 같은 설정을 해 준 후에 xmodmap 을 하시면 됩니다.
mkdir -p $HOME/.xkb/symbols
cat > $HOME/.xkb/symbols/my_fn_keys <<EOT
xkb_symbols "my_fn_keys" {
name[Group1]= "CustFnKeys";
key <BKSP> {
type="ALPHABETIC",
symbols[Group1] = [ backspace, BackSpace ]
};
};
EOT
mkdir $HOME/.xkb/keymap
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+my_fn_keys&/' > $HOME/.xkb/keymap/custom
xkbcomp -w0 -R$HOME/.xkb keymap/custom :0
위의 명령들은 모두 root 가 아닌 일반 유저로 가능합니다.
아래는 제가 사용하는 쉘 스크립트 입니다.
=================================================
# HHKemulOn.sh
xkbcomp -w0 -R$HOME/.xkb keymap/custom :0
xmodmap -e 'keycode 66 = Control_L'
xmodmap -e 'clear Lock'
xmodmap -e 'add Control = Control_L'
xmodmap -e 'keycode 9 = grave asciitilde'
xmodmap -e 'keycode 49 = Escape'
xmodmap -e 'keycode 22 = backslash bar'
xmodmap -e 'keycode 51 = BackSpace'
===================================================
# HHKemulOFF.sh
xmodmap -e 'keycode 49 = grave asciitilde'
xmodmap -e 'keycode 9 = Escape'
xmodmap -e 'keycode 51 = backslash bar'
xmodmap -e 'keycode 22 = BackSpace'
====================================================
키보다마다 키코드가 혹시 다를 수도 있는지 모르겠는데
xmodmap 으로 바꾸기 전에 먼저 xev 를 사용해서 키보드 입력을 확인해 보시고 하시는 것이 좋습니다.
여기 키매냐에 링크2 에도 예전에 관련 내용이 올라와 있는데 2) 번을 하는 것에 대한 내용입니다.
저도 그것을 보고 참고하여 했더니 성공하였습니다.
제가 사용하는 조합은
1) ~(`) 와 Esc 를 서로 바꾸고
2) CapsLock 을 Ctrl 로 바꾸고 (CapsLock 은 아예 안쓰니 매핑 안함)
3) BackSpace 와 \(|) 를 서로 바꿉니다. (일자엔터는 \(|) 가 HHK의 BackSpace 에 해당하는 자리에 있음)
1), 2) 는 xmodmap 을 사용하면 별 문제가 없지만 3) 번은 약간 더 설정을 해 줘야 합니다.
X의 키보드 기본 설정이 약간 이상해서 BackSpace 키는 Shift 키와 같이 눌려도 처리를 해 주지 않기 때문입니다.
그러니까 다른 것들처럼 기본 설정 상태에서 그냥 맞교환만 해 놓으면 \ (backslash) 는 입력이 되지만 | (bar) 는 입력을 못합니다.
그래서 다음과 같은 설정을 해 준 후에 xmodmap 을 하시면 됩니다.
mkdir -p $HOME/.xkb/symbols
cat > $HOME/.xkb/symbols/my_fn_keys <<EOT
xkb_symbols "my_fn_keys" {
name[Group1]= "CustFnKeys";
key <BKSP> {
type="ALPHABETIC",
symbols[Group1] = [ backspace, BackSpace ]
};
};
EOT
mkdir $HOME/.xkb/keymap
setxkbmap -print | sed -e '/xkb_symbols/s/"[[:space:]]/+my_fn_keys&/' > $HOME/.xkb/keymap/custom
xkbcomp -w0 -R$HOME/.xkb keymap/custom :0
위의 명령들은 모두 root 가 아닌 일반 유저로 가능합니다.
아래는 제가 사용하는 쉘 스크립트 입니다.
=================================================
# HHKemulOn.sh
xkbcomp -w0 -R$HOME/.xkb keymap/custom :0
xmodmap -e 'keycode 66 = Control_L'
xmodmap -e 'clear Lock'
xmodmap -e 'add Control = Control_L'
xmodmap -e 'keycode 9 = grave asciitilde'
xmodmap -e 'keycode 49 = Escape'
xmodmap -e 'keycode 22 = backslash bar'
xmodmap -e 'keycode 51 = BackSpace'
===================================================
# HHKemulOFF.sh
xmodmap -e 'keycode 49 = grave asciitilde'
xmodmap -e 'keycode 9 = Escape'
xmodmap -e 'keycode 51 = backslash bar'
xmodmap -e 'keycode 22 = BackSpace'
====================================================
키보다마다 키코드가 혹시 다를 수도 있는지 모르겠는데
xmodmap 으로 바꾸기 전에 먼저 xev 를 사용해서 키보드 입력을 확인해 보시고 하시는 것이 좋습니다.
여기 키매냐에 링크2 에도 예전에 관련 내용이 올라와 있는데 2) 번을 하는 것에 대한 내용입니다.
작성된지 6개월이 지난 글에는 새 코멘트를 달 수 없습니다.