터미널에서 작성 키를 정의하는 방법 (데스크톱 환경 없음)?


17

compose내 시스템 에서 키 를 정의하고 싶습니다 (Debian Sid "Wheezy"). Xorg가 없으며 데스크톱 환경을 원하지 않습니다. 터미널에서만.

Alt-Gr키 에 설정하고 싶습니다 (오른쪽 Alt). 잠시 동안 시도했지만 설정 방법을 알 수 없습니다.

조사하고 몇 가지 방향을 찾았습니다.

  • $ showkey키의 키 코드를 알려줍니다 Alt-Gr(# 100).

  • $ dumpkeys그리고 $ dumpkeys --compose-only에 의해 지정된 형식으로 출력 "키보드의 드라이버의 현재 내용", keymaps받는 사람에 따라, man페이지

  • $ loadkeys 키보드 번역 표를로드

그렇게 어렵지는 않지만 확실하게 처리하는 방법을 그리워합니다 ...


흠, 저는 100 %를 따르지 않습니다. Alt-Gr을 쳤을 때 어떻게 하시겠습니까?
Emanuel Berg

Compose Key 가되고 싶습니다 . 실제로 Compose Key를 어딘가에 정의하고 싶습니다. Alt-Gr에 익숙해지기 때문에 거기에서 정의하고 싶습니다. GUI설정하는 것은 매우 쉽지만 X 시스템이 설치되어 있지 않기 때문에 순수한 콘솔 모드에서 정의 할 수 있어야합니다 (옵션이 아닙니다). 난 그냥 어떻게 알아낼 수 없습니다.
cedbeu

답변:


10

최신 데비안 및 우분투 시스템에서는 키보드 설정이 /etc/default/keyboardX와 콘솔간에 설정되어 공유됩니다. 그냥 뛰어

sudo dpkg-reconfigure keyboard-configuration

Compose key: Right Alt (AltGr)적절한 화면 에서 선택하십시오 .

또한 넣을 수 XKBOPTIONS=compose:ralt/etc/default/keyboard및 실행

sudo dpkg-reconfigure console-setup

이전 시스템은 기본적으로 콘솔에 Compose 키가 있습니다. 에서는 us레이아웃, 가압 모두 Alt 함께 키와 같은 역할을하는 단계 Compose. 1

예를 들면 : Alt+ AltGr, ", A=>을

당신이 선호하는 AltGr경우에만 Compose변경해야합니다

alt keycode 100 = Compose

활성 키보드 맵에서

keycode 100 = Compose

가장 쉬운 방법은에서 위의 내용을 변경하는 것입니다 /lib/kbd/keymaps/i386/include/linux-with-alt-and-altgr.inc.

더 좋은 방법은 /lib/kbd/keymaps/i386/include/altgr-is-compose.inc위의 행으로 불리는 새로운 파일을 생성하고 , 그것을 포함하는 새로운 키맵을 생성 한 다음,이를 기본 키맵으로 설정하는 것입니다.

  1. PrtScnCompose기본적으로 작동 합니다.

이 기능이 작동하지 않습니다. dpkg-reconfigure마법사는 참으로 작성 키에 대한 요청하지만, 그것은 "유니 코드 모드"에서 작업을하지 않는 말한다 (?). 또한 해당 모드에 있지 않으면 Control + period는 작성 키로 작동합니다. 그러나 나는 그것을 작동 시키지도 않습니다.
Emanuel Berg

경고 메시지는을 의미한다고 생각합니다 unicode_start. 내가 말한 setupcon대로 dpkg-reconfigure달리면 여전히 작동합니다 .
Mikel

setupconX 터미널 ( urxvt) 에서 실행할 때 "콘솔에 있지 않고 콘솔은 구성되지 않은 상태로 남아 있습니다."라고 표시됩니다. 또한 showkey"콘솔에 파일 디스크립터를 가져올 수 없습니다"라고 불평합니다. 에서 tty, 모두 그 작동하지만 showkey말한다 (첫 번째 것) 그것이 작동하지 않는 이유는 참으로 그래서 아마도, "KB 모드가 유니 코드이었다". 그러나 Control + 기간은에서 작동합니다 tty. 이제 이해가 되네요.
Emanuel Berg

귀하의 질문에 없다고 X했습니까? setupconLinux 가상 콘솔 (예 : Ctrl + Alt + F1) 에서 실행해야합니다 .
Mikel

1
console-setup기본적으로 매우 많은 작성 순서를 지원하지 않는 것 같습니다 . 당신 dumpkeys --compose-only은 어떤 것을 볼 수 있습니다. console-setupinit 스크립트 를 수정하여 실행 규칙을 추가 할 수 있어야합니다 loadkeys.
Mikel

2

콘솔의 "compose"는 두 문자를 입력 할 수 있지만 세 번째 문자는 출력 할 수 있습니다.

문제는 작성 정의 가 두 입력 (즉, 입력 된 키와 입력 된 기호의 경우에만 작성을 정의 할 수 없음)과 출력 모두에 대해 bytes를 사용 한다는 것입니다.

멀티 바이트 (적어도 1 ~ 4 바이트) 인 UTF-8에서 작동하려면 콘솔 입력 처리 방식에 큰 변화가 필요하며 현재 더 복잡한 것으로 사용되는 간단한 char 배열을 대체해야합니다. 그렇게 할 계획이없는 것 같습니다 (커널 개발자들 사이의 합의는 콘솔이 콘솔로 유지되어야한다는 것입니다. 콘솔은 간단하고 마지막 ressort에만 사용됩니다. 실제로 유니 코드가 필요한 경우 bidi, shaping 등도 필요합니다.) 그래픽 터미널을 실행하는 것이 좋습니다 (X11에서는 전체 화면 xterm이지만 다른 가능성이 있습니다).

따라서 실제로 콘솔에서 멀티 바이트 문자로 작동하지 않으며 작동하지 않습니다. 그러나 작성 정의를 일반 ASCII로 제한하면 여전히 작동합니다.

또한 출력이 iso-8859-1 (최대 0x00ff의 유니 코드 값에 해당) 인 경우에도 작동한다는 것을 알았습니다. 이를 위해 시작 스크립트에 줄을 넣을 수 있습니다.

    로드 키 / somepath / somefile

그리고 파일에 원하는 작성 정의를 넣으십시오 (ISO-8859-1 인코딩으로 파일을 저장하고 출력으로 0x7f보다 큰 문자를 사용하십시오). 그런 파일의 구문은 다음과 같이 매우 간단합니다.

    'somechar' 'somotherchar'를 'desiredoutput'으로 작성

예 :

    'a'를 'å'로 작성
    'a' 'e'를 'æ'로 작성

아포스트로피는 탈출해야합니다.

죽은 분음 부호의 효과도 해당 파일에 정의됩니다. dead_acute + a의 경우 다음과 같은 줄을 정의합니다.

    '\' 'a'를 'á'로 작성

dead_grave는 백틱 (`)을 사용하고 dead_diaeresis는 큰 따옴표 ( ")를 사용하고 dead_circumflex는 circumflex (^)를 사용하고 dead_tilde는 틸드 (~)를 사용합니다.


고마워요. 만으로 변경해야 compose 'a' 'a' to 'å'했습니다 compose 'o' 'a' to U+00E5. 그렇지 않으면 loadkeys구문 오류에 대해 불평했습니다.
엠마누엘 버그

'å'를 사용할 때 파일을 ISO-8859-1 (utf-8 아님)로 작성 했습니까?
Pablo Saratxaga

모르겠어요 어떻게 확인합니까?
에마누엘 버그

파일이 utf-8에 있는지 테스트하려면 : iconv -f utf-8 -t utf-8 filename 오류가 없으면 utf-8에 있습니다
Pablo Saratxaga

파일을 고양이처럼 보이지만 오류가 없습니다. echo $? 적어도 없으며 출력은 없습니다 stderr. 또한 fileUTF-8이므로 알려주는 것이 좋습니다.
Emanuel Berg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.