4

Я подумываю получить 60% клавиатуру и хочу попробовать поработать с этой раскладкой, прежде чем покупать настоящую клавиатуру.

Я пытаюсь отобразить клавиши со стрелками на caps lock + ijkl и отключить реальные клавиши со стрелками. Я узнал, как переназначить его, но когда я пытаюсь отключить настоящие клавиши со стрелками, переназначенные клавиши ломаются. Вот рабочая карта:

keycode 66 = Mode_switch
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right

Чтобы отключить стрелку вверх я добавляю

keycode 111 =

И как только я это сделаю, ijkl больше не будет работать как символы, а будет действовать как стрелка, даже не нажимая модификатор (caps lock). Как отключить клавиши со стрелками, не нарушая мое предыдущее отображение?

2 ответа2

2

После прочтения и получения некоторой информации. Похоже, что проблема заключается в том, что вы должны удалить модификаторы, прежде чем действительно делать переназначение.

К ответу:

После изменения настроек мой xmodmap выглядит так:

xmodmap: до 4 ключей на модификатор (коды клавиш в скобках):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Mode_switch (0x42),  Mode_switch (0xcb)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5      

Исследование Mode_switch приводит нас к выводу, что Caps_Lock был успешно отображен:

[smalltalk@localhost ~]$ xmodmap -pke | egrep -e '(Mode_switch)'
keycode  66 = Mode_switch NoSymbol Mode_switch
keycode 203 = Mode_switch NoSymbol Mode_switch

Теперь xmodmap - выдержка из страниц руководства:

       keycode NUMBER = KEYSYMNAME ...
               The list of keysyms is assigned to the indicated keycode (which
               may be specified in decimal, hex or octal and can be determined
               by running the xev  program).   Up  to  eight  keysyms  may  be
               attached  to  a  key, however the last four are not used in any
               major X server implementation.  The first keysym is  used  when
               no  modifier  key  is pressed in conjunction with this key, the
               second with Shift, the third when the Mode_switch key  is  used
               with  this  key  and  the  fourth when both the Mode_switch and
               Shift keys are used.

Следующая конфигурация работает, но вы должны удерживать Caps_Lock при использовании i, j, k, l (точно так, как написано на страницах руководства):

Редактировать vim ~/.Xmodmap:

! make Capslock the "Mode_switch" key
clear Lock

! All Mod must be cleared
clear Mod1
clear Mod2
clear Mod3
clear Mod4
clear Mod5

! clearning current Caps_Lock assigment and assigning it new one
keycode 66 =
keycode 66 = Mode_switch

! setting all the modification keys
add Mod1 = Alt_L Alt_R Meta_L
add Mod2 = Num_Lock
add Mod3 = Mode_switch
add Mod4 = Super_L Super_R Hyper_R

! Clear must be done before configuring it
keycode 31 =
keycode 44 =
keycode 45 =
keycode 46 =

! Configuration (first column normal type, second with shift and second with Mod_switch)
keycode 31 = i I Up
keycode 44 = j J Left
keycode 45 = k K Down
keycode 46 = l L Right

! Clearing the arrow keys and some functional keys like home
keycode 111 =
keycode 113 =
keycode 114 =
keycode 116 =
keycode 112 =
keycode 117 =

Теперь к большому вопросу:

Как заставить работать клавиши i, j, k, l при включенном Caps_Lock? Вам, вероятно, придется внести изменения в xkb , что я должен обдумать.

редактировать

Да, ты можешь. Я понял это.

Примечание: это относится ко всем клавиатурам, ко всем раскладкам, поэтому хорошо подходит для тестирования. Если вы хотите сделать это через xkb правильно, вы должны создать свой собственный макет и сделать сопоставление для group1 и group2 +.

Ниже приведен хак, идеально подходящий для тестирования вашей клавиатуры (и) (не забудьте сделать резервную копию вашего файла ../basic !):

Предупреждение это относится ко всем клавиатурам, ко всем вариантам.

Редактировать файл:sudo vim /usr /share /X11 /xkb /compat /basic

# Add  Caps_Lock to virtual modifiers
    virtual_modifiers  NumLock,AltGr,Caps_Lock;

# change FROM:
    interpret Mode_switch {
        useModMapMods= level1;
        virtualModifier= AltGr;
        action= SetGroup(group=+1);
    };

# TO:
    interpret Mode_switch {
        useModMapMods= level1;
        virtualModifier= Caps_Lock;
        action= LockGroup(group=+1);
    };

# change from
    group 2 = AltGr;
TO:
    group 2 = Caps_Lock;

Примечание. Если у вас несколько макетов, это может помешать им.

0

Извините, что написал ответ, а не комментировал, но мне все еще не хватает репутации для этого. Я знаю, что это не отвечает на ваш вопрос, но может решить вашу проблему.

Вместо переназначения клавиш в ОС вы можете купить клавиатуру, которая поддерживает переназначение клавиш в себе. Особенно клавиатура, которая поддерживается микропрограммой QMK. Вы можете найти список всех совместимых клавиатур здесь.

С помощью этой прошивки вы можете сопоставить любой ключ с любым действием, включая добавление множества слоев, где каждый ключ может делать разные вещи. Представьте, что вы нажимаете клавишу fn на ноутбуке, но это полностью настраиваемо. Вы можете выбрать, какой ключ активирует, какой слой и даже как. Например, вы можете включить / выключить слой, оставить его активным, удерживая клавишу и т.д. Таким образом, вы можете установить Caps Lock Caps Lock при касании и переключаться на другой слой (где клавиши ijkl клавиши со стрелками), когда удерживаете вниз.

Единственным недостатком является то, что переназначение требует, чтобы вы редактировали массивы в коде C, хотя на самом деле это довольно просто и не требует предварительных знаний в области программирования. Документация довольно обширная и объясняет все, что вам нужно для начала.

Существует 60% вариантов клавиатуры, но большинство из них - это наборы, которые вы должны собрать самостоятельно. Если у вас нет проблем с этим, проверьте платы GH60, Satan или XD60. Вы можете найти все это на Если вы не хотите собирать его самостоятельно, вы можете проверить клавиатуру Whitefox или посмотреть, можете ли вы найти что-то в магазине KBDFans, так как они предлагают услуги по сборке для большинства своих комплектов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .