우분투에서 새로운 키보드 레이아웃을 만드는 데 필요한 단계는 무엇입니까?


43

내가 만들려고하는 키보드에는 많은 유니 코드가 있으며 다음과 같습니다. 만들려고하는 키보드

다음 학습서에 실패했습니다.

단계별 지침으로 더 나은 자습서를 제공 할 사람이 누구인지 궁금합니다.


2
음, 이것은 나에게 중복 된 것처럼 보입니다 . 당신은 이미 당신의 질문에 현상금을 넣은 것이 너무 나쁩니다 : /.
Glutanimate

@Glutanimate 오 깔끔한; 그것을 보지 못했습니다. 그래도 더 나은 답변을 얻기 위해 바쁠 것입니다.
Akiva

이 링크를 사용할 수 있습니다. help.ubuntu.com/community/ComposeKey
Anandu M Das

답변:


69

에서 우분투 14.04 , 키보드 레이아웃은 유지된다

/usr/share/X11/xkb/symbols/


이 디렉토리 의 각 파일 에는 다음 유형의 일련의 항목이 있습니다.

    키 <AC01> {[a, A, aacute, Aacute]};

이 항목은 다음 규칙을 사용하여 키보드의 키를 여러 특정 문자로 매핑합니다.

  1. < C01은> 첫 번째 편지는 우리가 숫자 키 블록 (다른 옵션은 다음과 같습니다에서 찾고 표시 하고 );AKP [for keypad]FK [for Function Key]

  2. <A C 01> 두 번째 문자 C는 키가 발견 된 맨 아래부터 세어 행을 나타냅니다. 표준 미국 키보드에서 스페이스 바는 행에 AA있고 숫자 키는 행에 AE있습니다.

  3. <AC 01 > 숫자 01는 왼쪽부터 세고 TAB또는 ~(틸드) 와 같이 특별히 명명 된 키를 무시하고 키의 위치를 ​​나타냅니다. AC01세 번째 행에 있고, 첫 번째 키는 왼쪽에 있습니다 (있는 Caps Lock경우 무시 ). 표준 US 키보드에서 이것은“a”로 표시된 키입니다.

  4. 대괄호는 각 키에 지정된 문자 목록을 묶습니다. 여기에는 쉼표로 구분하여 최대 4 개의 항목이 포함됩니다.

    1. - 수정되지 않은 키.
    2. - Shift문자.
    3. á - Alt Gr문자. ( 급성 )
    4. Á - Shift+의 Alt Gr문자. ( 급성 )

사용자 정의 키보드 맵을 작성하는 것은 주어진 행에서 원하지 않는 문자를 수행하는 문자로 바꾸는 것만 큼 쉽습니다!

예를 들면 다음과 같습니다.

앵글로 - Saxonist, 나는 입력 á하고 Á훨씬 덜 자주 나는 입력보다 æ하고 Æ.

내 목록에 앵글로 색슨 문자를 추가하려면, 단순히 교체 aacuteAacute엔티티 이름이나와 유니 코드 코드 포인트 에 대한 æÆ( "aelig"또는 U00E6 와 "AElig"또는 U00C6 각각) :

    키 {[a, A, aelig, AElig]};

또는

    키 {[a, A, U00E6, U00C6]};

키보드 레이아웃 수정을 마치면 파일을 같은 디렉토리에 "oe"라는 새 이름으로 저장합니다.

evdev.xml파일에 새 키보드 레이아웃 추가

새로운 키보드 레이아웃을 사용하려면 키보드 레이아웃 X11이 존재해야합니다. Ubuntu 14.04에서는 X11설치된 키보드를 /usr/share/X11/xkb/rules/evdev.xml파일로 추적 합니다. 그런 다음 새 레이아웃을 추가하십시오.

  1. X11/xkb/rules/evdev.xml편집기에서 열기
  2. <layoutList>섹션 끝으로 이동 하십시오 (검색 </layoutList>). 마지막 </layout>태그 뒤에 다음을 추가하십시오. 여기서 X키보드 레이아웃의 파일 이름은 /usr/share/X11/xkb/symbols(내 경우 oe)입니다. Y적합한 짧은 이름; 및 Z하나 이상의 언어에 적절한 긴 이름 법적 세 편지 (ISO 639-2) 언어 코드 (예 : ENG 영어) :aaa

    <layout>
     <configItem>
       <name> X </name>
       <shortDescription> Y </shortDescription>
       <description> Z </description>
       <languageList>
          <iso639Id> aaa </iso639Id>
       </languageList>
     </configItem>
     <variantList/>
    </layout>
    

여기, 완전한 소개를 따르십시오

다른 관련 링크 :
http://ubuntuforums.org/showthread.php?t=188761&p=1092145#post1092145 http://www.charvolant.org/~doug/xkb/html/index.html


나는이 포스트에서 약간 일했다; 제공하신 콘텐츠의 품질은 매우 높았지만 여전히 제 생각에는 효과가 있습니다. 링크 된 학습서가 매우 오래되고 오래되었으며 "8.04를 사용중인 경우 xy 및 z 수행"으로 가득합니다. 전체 튜토리얼 답변을보고 싶습니다 (현상금을 늘릴 수 있기를 바랍니다)
Akiva

@Akiva이 답변에 도움이 되었습니까? 어디에 문제가 있습니까?
αғsнιη

3
대답이 도움이되었습니다. AC01을 설명하는 것은 실제로 잘 작성되었지만 모든 단계에 대한 완전한 대답을 원했습니다. 다른 튜토리얼에 링크했을 때; 그들은 늙었 고 그들 중 세 명이 있습니다. 다른 사용자를 위해 여기에 전체 답변이 제공됩니다. 예를 들어; 키 <ac01> {[a, b, c, d]} 외에 텍스트 파일에 더 많은 요소가 있으며 편집해야하는 XML 파일도 있습니다. 이것을 테스트하는 방법에 대한 질문도 있습니다. 말했듯이; 좋은 튜토리얼을 만드는 것은 상당히 큰 작업이기 때문에 500 회에 현상금을 지급해야합니다.
Akiva

2
어쨌든 키보드 레이아웃을 정의해야하기 때문에 본격적인 답변에 답할 것입니다. 내가 그것에 도착하면, 나는 제대로 대답 할 것입니다.
Akiva

Xorg 또는 tty에서만 작동합니까?
Narcolessico

18

참고 : Wayland는 xkb를 사용하지만 많은 xTools가 제대로 작동하지 않습니다 (예 : xdotool)

참고 :이 튜토리얼은 포괄적이지 않습니다. 새로운 8 단계 레이아웃을 만들고 구문을 이해하려는 개인에게 가장 유용합니다.

참고 : 빠르고 더러운 솔루션이 제공됩니다. 필요한 코드를 자동으로 생성하는 스프레드 시트가 포함되어 있습니다.


XKB 디렉토리 이해

cd /usr/share/X11/xkb/ && ls
  1. types- 활성화 된 수정 자에 의해 생성 된 키가 변경되는 방식 . (Shift, Control, Alt ~)
    수정 자 키를 사용자 정의하려는 경우 중요합니다.
  2. geometry-키보드 그래픽을 그리는 데 사용됩니다.
    비표준 키보드 하드웨어를 설계하는 경우 중요합니다.
  3. rules-현재 설정에 적합한 구성을 가져 오는 중입니다.
    이것을 정의해야합니다
  4. keycodes-키보드 하드웨어의 키 코드 해석기.
    예 : Macintosh 키보드는 스페이스 바를로 이해합니다 57. 그러나 우리는 그것을 다음과 같이 씁니다.<SPCE>
  5. symbols-어떤 키 코드에 어떤 이 할당되어 있습니까 ?
    여기에서 사용자 정의 레이아웃을 정의합니다.
  6. compat- 호환성의 줄임말 . 수정
    자의 내부 동작 (Shift, Control, Alt ...)

워크 플로우

keycodes > symbols > compat

만 터치 symbols: 빠르고 더러운 솔루션 은 아래를 참조하십시오 .


심볼 맵

/symbols/us 이 디렉토리의 모든 파일은 동일한 구조를 따릅니다.

partial alphanumeric_keys
xkb_symbols "basic" {
    name[Group1]= "US/ASCII";
    key <TLDE> {        [ quoteleft,    asciitilde      ]       };
    key <AE01> {        [         1,    exclam          ]       };
    modifier_map Shift  { Shift_L, Shift_R };
};

partial 완전한 키보드 맵이 아님

alphanumeric_keys매핑되는 키보드 섹션. 여러 개를 사용할 수 있습니다.
참고 :*_keys 지정 하지 않으면 완전한 키보드로 간주됩니다.

"basic" -심볼 맵의 이름

name[Group1]= "US/ASCII";이 키보드 그룹에 고유 한 이름을 부여합니다 .

modifier_map수정 자 키 편집 용 . (ctrl, shift, alt ~)

Shift { Shift_L, Shift_R };일반적으로 필요하지 않습니다. 두 시프트를 시프트 레벨 (일명 레벨 2)에 맵핑합니다.

key <TLDE> 물결표 키 -일반적으로 탭의 오른쪽 상단 왼쪽 키

key <AE01> 스톡 콘텐츠 -세 부분으로 구성AE01

  1. A= 영숫자 키 블록.
    KP= 키패드
    FK= 기능 키

  2. E= 키보드의 행.
    Space Key= A
    Shift Key= B
    Caps Lock= C
    Tab Key= D

  3. 01= 행에서 키의 위치.
    AE01= 1
    AB02= X
    AC05=G

[+ ]-C 언어로; 대괄호는 항목을로 나누는 목록을 나타냅니다 ,. 리스트의 길이는 레벨의 양을 결정합니다. 예를 들면 다음과 같습니다.

key<AE01> { [ Level 1 , Level 2 , Level 3 , Level 4 , Level 5 ] }

일반적으로 레벨은 다음과 같은 키 누르기를 나타냅니다.

  1. 수정 자 키 없음
  2. Shift
  3. Alt Gr
  4. Shift + Alt Gr
  5. Custom -레벨 4 이상의 것을 볼 수는 없습니다.

즉, 키를 shift + altgr로 매핑하려면 목록의 길이가 4 개 이상이어야합니다.


경고-일반적인 오류

이 줄 중 하나에 심각한 오류가 발생하고 키보드를 사용할 수 없게됩니다.

key<AE01> { [ Backspace ] }
key<AE02> { [ a, b, , C ] }
  • Backspace해야 할 것 BackSpace: 철자법에 특별한주의를 기울이십시오.
  • 빈 항목은이어야합니다 VoidSymbol.

최고의 안전 대책!

  1. 편집중인 파일을 백업하십시오.

    sudo /bin/cp /usr/share/X11/xkb/symbols/us /usr/share/X11/xkb/symbols/usBACKUP

  2. 루트 비밀번호없이 실행할 수있는 스크립트를 작성하십시오.

다음과 같은 것 :

#!/bin/bash
sudo /bin/cp -rf /usr/share/X11/xkb/symbols/usBACKUP /usr/share/X11/xkb/symbols/us

문제가 발생하면 마우스를 사용하여 해당 코드 줄을 chmod +x실행하십시오.


손상된 시스템을 복구하기위한 백업 전략

  • 경고 : 키보드 및 화상 키보드는 약간의 오류 로 작동하지 않습니다.
  • 마우스가 작동 합니다. 문자를 강조 표시하고 가운데 클릭을 사용하여 붙여 넣어 입력 할 수 있습니다. Bash에서는 줄 바꿈 return을 붙여 넣어 (Enter를 누름) 할 수 있습니다 .
  • 키보드는 루트 쉘 에서 복구 모드작동합니다 . (bash에서 액세스)
  • 항상 라이브 환경을 사용하여 파일을 수정할 수 있습니다.

빠르고 더러운 솔루션

  1. 여기로
  2. 파일> 사본 만들기
  3. Mapper 시트 는 레이아웃을 정의하는 곳입니다.
    • 단일 문자 항목은 프로그램에서 이해하는 코드로 변환됩니다.
      ( !가됩니다 U0021). 유니 코드 지원!
    • 문자열은 번역되지 않으며 그대로 처리됩니다. SPELLING 또는 CASE 오류가 없는지 확인하십시오!.
    • 빈 사각형은 자동으로로 채워집니다 VoidSymbol.
  4. XKB-Sort 시트 에는 다음과 같은 주요 그룹이 포함됩니다.
    key <AE01> { [U0021, U0021, U0021, U0021, U0021, U0021, U0021, U0021] };
    key <AE02> { [U005B, U005B, U005B, U005B, U005B, U005B, U005B, U005B] };
    key <AE03> { [U005D, U005D, U005D, U005D, U005D, U005D, U005D, U005D] };
    key <AE04> { [U0022, U0022, U0022, U0022, U0022, U0022, U0022, U0022] };
    key <AE05> { [U002A, U002A, U002A, U002A, U002A, U002A, U002A, U002A] };
    key <AE06> { [U007B, U007B, U007B, U007B, U007B, U007B, U007B, U007B] };
    key <AE07> { [U007D, U007D, U007D, U007D, U007D, U007D, U007D, U007D] };
    key <AE08> { [U002F, U002F, U002F, U002F, U002F, U002F, U002F, U002F] };
    key <AE09> { [U0027, U0027, U0037, U0027, U0027, U0027, U0027, U0027] };
    key <AE10> { [U0029, U0029, U0038, U0029, U0029, U0029, U0029, U0029] };
    key <AE11> { [U0028, U0028, U0039, U0028, U0028, U0028, U0028, U0028] };
    key <AE12> { [U005C, U005C, U005C, U005C, U005C, U005C, U005C, U005C] };
    
    8 단계 모두에서이를 변경합니다.
    1234567890-= // Physical Keys
    ![]"*{}/')(\ // Changed to these characters
  5. XKB탭에도 선이 있습니다. 다른 모든 탭은 무시할 수 있습니다 (코드).
  6. sudo vim /usr/share/X11/xkb/symbols/us
  7. 레이아웃 내용을 교체하십시오. 사용하지 않을 것을 선택하십시오. 예를 들어 , 구조를 그대로두고 colemak 항목을 변경하고 키를 교체했습니다.

관심있는 라인 :

key.type[group1]="EIGHT_LEVEL";          // Enables 8 levels
modifier_map Control { <LFSH>, <RTSH> }; // Maps ctrl`s to shift keys.
key  { [Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R, Control_R] }; 
key  { [Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L, Control_L] };
include "level3(lalt_switch)" // Hold Left  Alt for Level 3
include "level5(ralt_switch)" // Hold Right Alt for Level 5


답의 맨 위 줄에 "(WIP-투표하지 마십시오.)"라고 표시되어 있습니다. 대답이 비교적 완전한 것처럼 보입니다. 아마도이 메모를 제거해야합니까?
MattKelly

1
@MattKelly Ahh 방금 업데이트를받지 못했습니다. 실제로 모의 키보드 레이아웃에 넣은 문자를 기반으로 코드를 자동 생성하는 스프레드 시트를 만들었습니다.
Akiva

유용한 스프레드 시트처럼 들립니다. 공개되어 있습니까?
MattKelly

@MattKelly 다음은 사본입니다. 많은 크래프트가 제거되고 일부 핸들 바가 추가되었지만 코드를 생성하는 것처럼 docs.google.com/spreadsheets/d/…
Akiva

이 방법을 사용하면 RALT를 다른 백 스페이스로 사용하거나 삽입 키를 백 따옴표 / 물결로 사용하도록 설정할 수 없습니다.
크레이그 cks 스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.