"1. 5 단계 수정자는 무엇을 하는가?”
다섯 번째 수준을 선택합니다. 두 번째 레벨 수정 자 (단순한 시프트)는 두 번째 레벨을 선택하고 세 번째 레벨은 세 번째 레벨을 선택합니다.
5 단계 수정자가 4 단계 대신 5 단계를 선택하는 이유는 (3 단계 수정 자 바로 다음에)이 3 개의 수정자가 서로 다른 방식으로 결합하여 8 개의 다른 레벨을 선택할 수 있기 때문입니다 (여기에는 수정자를 사용하지 않음, 이러한 수정자가없는 키를 누르는 것입니다). 2 ↑ 3 = 8 이후 8 개의 조합이 있습니다. 처음 두 개의 수정 자에는 4 가지 조합이 있습니다.
- 수정 자 없음 (레벨 1)
- 2 차 레벨 수정 자, 일명 시프트 (레벨 2)
- 3 단계 수정 자 (3 단계)
- 2 차 + 3 차 수정 자 (레벨 4)
세 번째 수정 자 (5 단계)를 추가하면 4 단계가 더 추가됩니다.
“2. 어떻게 내가 하나의 키 만점에 5 개 또는 6 개의 다른 문자를 얻을 수 (시프트에 의해 수정 할 수 있도록 설정합니까 Alt Gr및 Right
Ctrl예를 들어)? "
우선 키당 5 개 이상의 문자를 사용하는 레이아웃이 필요합니다. 기존 레이아웃을 선택할 수 있지만 현재 사용중인 레이아웃에 더 많은 레벨을 추가하려는 경우 최적이 아닐 수 있습니다. 예를 들어, Neo 키보드 레이아웃 († 1)이 있지만“독일어에 최적화”되어 있으므로 대부분의 영어 사용자에게 적합하지 않습니다.
그래도 Neo가 레벨 5 수정 자에 대해 선택한 키를 살펴 보는 것이 도움이 될 수 있습니다.
Neo는 분명히 "Mod4"의 레벨 5 수정자를 호출합니다. 보시다시피 왼쪽 Shift 키 ( LSGT
)의 오른쪽에있는 키와 오른쪽 Alt 키 / AltGr
키를 사용합니다. 이것은 유럽 키보드 (105 키)에 있으며 미국 키보드 (104 키)와 비교할 때 왼쪽 시프트가 좁고 키가 크고 얇은 리턴 키가 있습니다. 미국 키보드를 기반으로 한 키보드 레이아웃의 경우 다른 키를 선택해야하거나 선호 할 수도 있습니다.
레벨 5 수정 자 키 선택
그 대답으로 그는 Xmodmap을 사용하기로 선택했습니다. 요즘 Xmodmap보다 Setxkbmap과 같은 도구가 권장됩니다. Xkb에는 레벨 5 수정 자 선택과 같은 다양한 사전 정의 된 옵션이 있습니다. man xkeyboard-config 를 참조
하여 검색 lv5
하면 다음 옵션을 찾을 수 있습니다.
┌──────────────────────┬───────────────────────────────────────────────────┐
│ Option │ Description │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lsgt_switch_lock │ <Less/Greater> chooses 5th level; acts as onetime │
│ │ lock when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:ralt_switch_lock │ Right Alt chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:lwin_switch_lock │ Left Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
├──────────────────────┼───────────────────────────────────────────────────┤
│ lv5:rwin_switch_lock │ Right Win chooses 5th level; acts as onetime lock │
│ │ when pressed together with another 5th level │
│ │ chooser │
└──────────────────────┴───────────────────────────────────────────────────┘
따라서 문서화 된 옵션은 LSGT
키, 오른쪽 alt 키, 오른쪽 Windows 키 및 왼쪽 Windows 키입니다. 앞에서 본 것처럼 Neo는 처음 두 가지 옵션을 사용합니다.
lv5:ralt_switch_lock
옵션을 일부 레이아웃과 함께 사용한다고 가정 해보십시오 . 이 명령은 us
이 레벨 5 수정 자 키를 사용 하여 레이아웃을 설정합니다 .
setxkbmap -option "lv5:ralt_switch_lock" us
에 설명되어있는 옵션에 대해서는 Setxkbmap man xkeyboard-config
을 -option
사용할 때 의 인수로 사용하십시오.
이러한 옵션이 충분하지 않고 다른 키를 레벨 5 수정 자로 정의하려는 경우 이러한 옵션에 대한 선언을 살펴 보는 것이 좋습니다. 에있는 것 같습니다
/usr/share/X11/xkb/symbols/level5
. 에 대한 선언은
lv5:ralt_switch_lock
다음과 같습니다.
partial modifier_keys
xkb_symbols "ralt_switch_lock" {
include "level5(lock)"
key <RALT> {
type[Group1] = "EIGHT_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift, ISO_Level5_Shift,
ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock, ISO_Level5_Lock ]
};
};
오른쪽 symbols[Group1]
은 각 키 레벨에서 생성 할 키 또는 문자 를 선언합니다. 다른 레벨 5 Shift 키와 함께 누르면 레벨 5 수정자를 잠그기 때문에 8 개의 가능한 레벨을 모두 사용합니다 . 레벨 5 – 8은 ISO_Level5_Lock
레벨 5 시프트와 다른 시프트 키의 조합을 모두 눌러 액세스 할 수 있기 때문에 레벨 5–8이 방출
됩니다. shift 동작 만 원하고 lock-if-two-pressed 동작도 원하지 않는 경우 (같은 파일에서) 더 간단한 선언을 만들 수 있습니다.
// The right Alt key (while pressed) chooses the fifth shift level.
partial modifier_keys
xkb_symbols "ralt_switch" {
key <RALT> {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
include "level5(modifier_mapping)"
};
레이아웃에 추가 레벨 추가
Xkb 레이아웃은 모듈 식입니다. 당신은 할 수 있습니다 포함 기존의 레이아웃을하고이를 변경합니다. 따라서 레벨이 5보다 작은 기존 레이아웃을 선택하고 레벨을 추가 할 수 있습니다.
레이아웃이있는 파일을에 복사 /usr/share/X11/xkb/symbols/
하거나 Xkb 도구가 레이아웃을 찾는 위치에 파일을 복사하여 새 레이아웃을 만들 수 있습니다
. 그러나 이것은 sudo 권한이 필요하므로 최상의 솔루션은 아닙니다. 또는 당신의 디렉토리 구조를 복사 할 수 있습니다 xkb/
적절한 디렉토리 아래에 레이아웃을 넣어 xkb/
즉
symbols/
. 파일을 만들었습니다 xkb-tree/symbols/my-layouts
. 이 파일에 정의 된 레이아웃을 사용하려면 -print
옵션을 사용 setxkbmap
하여 출력을로 파이프 할 수 있습니다 xkbcomp
. 이 랩퍼 스크립트는 레이아웃을 입력으로 사용합니다.
#!/bin/sh
# `-option ""` resets all options.
setxkbmap -option "" -layout "$1" \
-print |
xkbcomp -I"<path-to-project>/xkb-tree" - "$DISPLAY"
레이아웃이있는 파일과 관련하여 4 가지 수준을 사용하는 "미국 국제"레이아웃을 확장한다고 가정하겠습니다. 우선 Neo와 같은 방식으로 레벨 3 및 레벨 5 Shift 키를 설정했습니다.
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
};
이제 추가 문자를 추가하려고합니다. Qwerty 레이아웃의 첫 4 개 키를 예로 들어 봅시다. 이 키는 Q
에 R
해당 <AD01>
합니다 <AD04>
. 먼저 키를 최대 8 단계까지 사용할 수 있도록해야합니다.
key.type[Group1] = "EIGHT_LEVEL";
처음 네 레벨의 경우 재정의하지 않기 위해에 맵핑합니다 NoSymbol
. 그런 다음 두 가지 수준을 추가합니다. 레벨 5에서는 화살표 ←↓↑→
(† 2)를 추가합니다 . 레벨 6에서는 방향 키를 추가합니다. 우리의 레이아웃은 다음과 같이 보입니다.
partial alphanumeric_keys
xkb_symbols "mine" {
// US international
include "us(intl)"
// Set up level 3 modifiers.
include "level3(modifier_mapping)"
include "level3(bksl_switch)"
include "level3(caps_switch)"
// Set up level 5 modifiers.
include "level5(modifier_mapping)"
include "level5(lsgt_switch)"
include "level5(ralt_switch)"
// Make the following keys capable of using eight levels.
key.type[Group1] = "EIGHT_LEVEL";
key <AD01> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
leftarrow, Left
] };
key <AD02> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
downarrow, Down
] };
key <AD03> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
uparrow, Up
] };
key <AD04> { [
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
rightarrow, Right
] };
};
그것을 사용하기 위해 우리는 우리가 만든 래퍼 스크립트를 사용할 수 있습니다 :
./setxkbmap-wrapper "my-layouts(mine)"
† 1 : Neo가 de(neo)
Xkb에 있습니다. setxkbmap "de(neo)"
.
† 2 : Xkb가 사용하는 기호 이름을 찾으려면 이름이 keysymdef.h
. 인 파일을 검색하십시오 . 라는 디렉토리에 있어야합니다 X11/
. 예 U2192
를 들어 U + 2192 와 같은 유니 코드 이름을 사용할 수도 있습니다 .