gnome-keyboard-properties에서“5 단계 선택 키”의 기능은 무엇입니까?


17

키보드의 5 단계에 액세스하는 데 사용할 키를 지정하는 옵션이 있습니다 gnome-keyboard-properties(시스템 설정의 하드웨어에서 "키보드").

해당 대화의 스크린 샷

그러나 5 번째 레벨을 AltGr3 번째 레벨로 Right Ctrl설정하고 키 54를 다음과 같이 설정하면 :

xmodmap -e "keycode 54 = 1 2 3 4 5 6 7 8"

다른 변형을 누르면 다음과 같은 결과가 나타납니다.

keycode 54 = 1
keycode 54 + right ctrl = 5
keycode 54 + right ctrl + shift = 6
keycode 54 + shift = 2
keycode 54 + AltGr = 1
keycode 54 + AltGr + shift = 2
  1. 그렇다면 5 단계 수정자는 무엇을합니까?

  2. 어떻게 내가 하나의 키 (에 의해 수정 만점에 5 개 또는 6 개의 다른 문자를 얻을 수 있도록 설정합니까 Shift, Alt Gr그리고 Right Ctrl예를 들면)?

답변:


14

"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 GrRight 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 개 키를 예로 들어 봅시다. 이 키는 QR해당 <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 와 같은 유니 코드 이름을 사용할 수도 있습니다 .


1
시간을내어이 답변을 작성해 주셔서 감사합니다. JKLI 키를 잠시 동안 화살표 키로 사용하는 방법을 찾고 있었기 때문에 매우 유용했습니다. 이 50 점을 더 즐기세요! (내일 현상금을 할당 할 수 있어야합니다.)
Glutanimate

1
글쎄, 고마워, 이것은 조금 늦었어도 큰 놀라움이지만, 내가 찾던 것보다 정확합니다.하지만 그놈은 실제로 수정자를 설정하는 것을 지원하지 않습니다.하지만 구성 파일을 사용하여 작동하는 한, 모두 잘)).
sup

8

글쎄, 약간의 파고 후에 :

(1) 5 단계를 선택하는 열쇠는 내가하고 싶었던 것과 관련이없는 이상한 일 (일부 프랑스어 레이아웃과 관련하여)을 수행합니다. 기본적으로 어떤 키가 ISO_Level5_Shift 역할을하는지 설정합니다. ISO_Level5_Shift는 일부 모호한 레이아웃에서 사용됩니다. 이 답변은 Google이 "ISO_Level5_Shift"를 검색 할 때 제공하는 결과 수와 이러한 링크를 기반으로 합니다.

(2) 하나의 물리적 키에서 6 개의 심볼을 얻는 데 사용할 수 없습니다. 이를 달성하는 한 가지 방법은 $ HOME 디렉토리에 .xmodmap 파일을 사용하는 것입니다.

먼저 명령

xmodmap -pm

어떤 키심볼이 다양한 수정 자 역할을하는지 알려줍니다. 내 시스템에서는 다음과 같습니다.

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x9)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c)

하나의 키로 6 개의 기호를 사용하려면 mod3을 설정해야합니다. .xmodmap 파일에 배치해야합니다.

clear mod3
clear mod5
keycode 94 = Mode_switch
add mod3 = Mode_switch
add mod5 = ISO_Level3_Shift

그런 다음 xmodmap -pm이 나에게 주었다.

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x9)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Mode_switch (0x5e),  Mode_switch (0xcb)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  ISO_Level3_Shift (0x6c)

키 코드 94는 mod3으로 작동하도록 선택한 키입니다. 명령 행 도구 xev를 사용하여 다양한 물리적 키의 키 코드를 찾을 수 있습니다 (실행하고 다양한 키를 누르면 키 코드가 표시됨).

그런 다음 .xmodmap 파일에 넣으면

keycode 54 = 1 2 3 4 5 6

또는 달리다

xmodmap -e "keycode 54 = 1 2 3 4 5 6"

altgr, shift 및 keycode 94를 사용하여 하나의 키에서 6 개의 다른 기호를 얻습니다 (물리적 레이아웃에서 왼쪽 시프트 옆에 쓸모없는 키입니다).

업데이트 : 5 개의 기호 만 있으면 다음과 같이 설정하는 것이 편리합니다.

keycode 54 = 1 2 3 3 5 6

가끔 그렇지 않으면 3 대신 4를 얻는 것이 나에게 일어난다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.