Свопинг <esc> и <Caps Lock> способом, которая сохраняется с внешними клавиатурами

Короткий, бесполезный ответ:пресса C-c C-c.

Можно получить справку на текущем режиме (режимах), используемом путем ввода C-h m в Emacs. С определенным прочтением различных команд поддерживал и несколько щелчков мышью, я нашел это: в буфере Emacs содержание источника Python, нажатие C-c C-c (это - CtrlC CtrlC), отправляет источник на интерпретатор Python.

'Подчиненный' (ничто, чтобы сделать с качеством) интерпретатор Python работает в названном буфере *Python*. Можно нажать C-x 2 разделять окно, затем C-x o (это - буква, о) перемещаться в нижнее окно, затем с C-X b *Python*Введите, выберите *Python* буфер. После этого вернитесь к исходному окну (C-x o) и используйте C-c C-c каждый раз, когда Вы хотите запустить свою программу Python. Это - то, на что это похоже:

enter image description here

Можно, очевидно, сделать все это с мышью, если Вам не нравятся команды клавиатуры. И если Вы проходите документацию для python-mode, Вы найдете, что команды Emacs отправляют отдельные функции, классы и т.д. к интерпретатору. Попробовать M-x python-sendTabTab для списка.

8
30.08.2013, 00:42
1 ответ

Так как у Вас есть эта команда в Вашем ~/.profile, это будет только выполняться однажды, когда Вы войдете в систему. Один, не очень изящный, решение состояло бы в том, чтобы поместить команду в Ваш ~/.bashrc вместо этого, таким образом, это будет выполнено каждый раз, когда Вы открываете терминал.

Лучшее решение состояло бы в том, чтобы определить a udev правило, которое выполнится xmodmap когда Ваша клавиатура USB вставляется (я использую значения, возвращенные для моей клавиатуры USB, необходимо будет отредактировать это решение соответствовать Вашей):

  1. Получите детали своей клавиатуры USB. Выполните эту команду с включенной клавиатурой:

    $ /lib/udev/findkeyboards | grep USB
    USB keyboard: input/event6
    
  2. Записать udev правила, необходимо знать то, против чего они должны соответствовать. Можно получить это путем поиска вывода udevadm info --export-db для event6 запись, или просто анализируют его непосредственно как так:

    udevadm info --export-db | perl -ne 'BEGIN{$/="\n\n"}print if /event6/'
    

    Это возвращает несколько строк текста включая их, которые мы будем использовать:

    E: ID_MODEL_ID=0002
    [...]
    E: ID_VENDOR_ID=1c4f
    
  3. udev является сложным при использовании X программ как xmodmap, Я не мог даже заставить это работать при экспорте $DISPLAY и $XAUTHORITY. Так или иначе я не мог заставить это работать с Вашим методом, таким образом, мое решение использует keymap вместо этого. Во-первых, необходимо будет узнать коды клавиши для Esc и Caps Lock, можно сделать это путем выполнения

    sudo /lib/udev/keymap -i input/event6
    

    и затем нажимая соответствующие клавиши. В моей системе это возвращается:

    scan code: 0x70029   key code: esc
    scan code: 0x70039   key code: capslock
    
  4. Создайте новое правило контурной карты, содержащее эти строки:

    0x70029 capslock
    0x70039 esc
    

    и сохраните его как /lib/udev/keymaps/speedswap.

  5. Определите новое udev правило. Создайте названный файл /etc/udev/rules.d/95-speedswap.rules и добавьте эти строки к нему:

    ACTION=="add", 
    SUBSYSTEM=="input", 
    ATTRS{idVendor}=="1c4f", 
    ATTRS{idProduct}=="0002", 
    RUN+="keymap $name speedswap"
    

Это должно сделать, это, по крайней мере, в моей системе, включая мой внешний USB заставляет Esc действовать как Caps Lock и наоборот.

3
27.01.2020, 20:13
  • 1
    Это выглядит хорошим, и я попробую его завтра или на следующий день. Я надеялся на агностический клавиатурой способ сделать это, но это - больше, 'это была бы аккуратная' вещь, чем подлинная потребность. –  evilsoup 30.08.2013, 23:32
  • 2
    @evilsoup, который необходимо смочь сделать более общее правило, попробовать udevadm info --export-db с несколькими клавиатурами и видят шляпу, которую они имеют общего. Возможно, ID_MODEL=USB_Keykoard или ID_USB_DRIVER=usbhid но это могло бы также инициировать правило с неправильным устройством.Вам решать. –  terdon♦ 31.08.2013, 03:19

Теги

Похожие вопросы