CTRL+A, CTRL+E를 시스템 전체에서 Home, End 기능으로 매핑하는 방법은 무엇입니까?

CTRL+A, CTRL+E를 시스템 전체에서 Home, End 기능으로 매핑하는 방법은 무엇입니까?

CTRL+A 및 CTRL+E를 작동하도록 매핑하는 방법이 있습니까?시스템 전체줄의 시작으로 이동하고 그에 따라 줄의 끝으로 이동합니까?

즉, 이러한 단축키가 터미널(예: OSX)뿐만 아니라 모든 앱에서 원활하게 작동하기를 바랍니다.

내 기본 시스템은 Unity 데스크톱이 포함된 Ubuntu이지만 데스크톱에 구애받지 않거나 최소한 Gnome, XFCE 및 LXDE에서 지원되는 범용 솔루션을 갖는 것이 좋을 것입니다.

답변1

xmodmap대답을 제공하는 것처럼 보일 수도 있지만 그렇지 않습니다.키코드조작하는 것은 키보드의 기존 키가 아니라수정됨열쇠. A는 controlA수정된 키입니다.

xmodmap매뉴얼 페이지에 나열된 대로 기존 키코드 또는 (그 이름) 키심만 재할당할 수 있습니다.

keycode 숫자=키심 이름...
keycode any=키심 이름...
keysym 키심 이름=키심 이름...

xmodmap알고 있는 키코드를 보려면 다음을 실행하세요.

xmodmap -pk

이는 다음과 같은 내용을 보여줍니다(명확성을 위해 단축됨).

There are 4 KeySyms per KeyCode; KeyCodes range from 8 to 255.

    KeyCode Keysym (Keysym) ...
    Value   Value   (Name)  ...

      8     0x0061 (a)      0x0041 (A)      0x00e5 (aring)  0x00c5 (Aring)  
      9     0x0073 (s)      0x0053 (S)      0x00df (ssharp) 0x00cd (Iacute) 
     10     0x0064 (d)      0x0044 (D)      0x08ef (partialderivative)      0x00ce (Icircumflex)    
     11     0x0066 (f)      0x0046 (F)      0x08f6 (function)       0x00cf (Idiaeresis)     
     12     0x0068 (h)      0x0048 (H)      0x01ff (abovedot)       0x00d3 (Oacute) 
     13     0x0067 (g)      0x0047 (G)      0x00a9 (copyright)      0x01bd (doubleacute)    
     14     0x007a (z)      0x005a (Z)      0x07d9 (Greek_OMEGA)    0x00b8 (cedilla)
     ...

xev실제로 무슨 일이 일어나는지 보여줍니다.

KeyPress event, serial 34, synthetic NO, window 0xc00001,
    root 0x111, subw 0xc00002, time 2209364614, (27,43), root:(47,86),
    state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (01) "^A"
    XmbLookupString gives 1 bytes: (01) "^A"
    XFilterEvent returns: False

KeyRelease event, serial 34, synthetic NO, window 0xc00001,
    root 0x111, subw 0xc00002, time 2209364773, (27,43), root:(47,86),
    state 0x4, keycode 8 (keysym 0x61, a), same_screen YES,
    XLookupString gives 1 bytes: (01) "^A"
    XFilterEvent returns: False

제어 수정자는 0x4상태에 있습니다. XLookupString(주요 이벤트를 결합하기 위한 여러 관련 함수 중 하나) 는키심^A"a"를 (control/A) 로 변환합니다 .

컨트롤 키에 키심이 없기 때문에 xmodmapOP 문제로 인해 키코드를 재할당하는 것이 불가능합니다.

에게해결하다controlOP의 문제는 운영 체제에 및에 대한 별도의 이벤트 전달을 (본질적으로) 거부하도록 지시하는 방법이 있어야 A하지만 Linux와 X는 그런 식으로 작동하지 않습니다. 범위를 특정 애플리케이션(xterm) 또는 애플리케이션 세트(Gtk 기반 프로그램)로 제한하면 이를 별도로 처리할 수 있습니다. 그러나 시스템 전체에 적용되는 솔루션은 실행 가능해 보이지 않습니다.

관련 정보