LINUX.ORG.RU

HID-Кнопка переключения языка

 , ,


0

1

Прикупил недавно вот такую клавиатуру A4Tech Fstyler FX60. А там оказывается есть специальная кнопка для переключения раскладки - на фото это которая совмещена с F5. Наверное впервые такое.

Так вот, в оффтопике эта кнопка работает как надо из коробки, а в Минте работает как переключатель открытых окон :. Как настроить переключение раскладки на эту клавишу?

В утке пишут только про стандартный набор комбинаций, как кастомно настраивать - неясно.

P.S. Аппаратная кнопка для переключения раскладки посылает Super+Space. Поэтому, чтобы заработало, надо назначить данную комбинацию в настройках и убедиться что её никто не перехватывает. В моём случае комбинацию Super+Space перехватывал иждет группировки окон. Решение. Надо убедиться, что

★★★★

Последнее исправление: Psilocybe (всего исправлений: 1)

Попробуй Gnome Tweaks - раздел «Клавиатура и мышь» и настрой F5 для переключения раскладок.

Чтобы задействовать кнопки перемотки и паузы (F7 и др.) нужно поставить драйвер HID:

sudo apt-get install hid-tools

После установки примени hid-query чтобы проверить, поддерживаются ли эти кнопки.

versetty777
()
Ответ на: комментарий от emorozov

вот такой ответ при повторном нажатии клавиши переключения языка

FocusOut event, serial 38, synthetic NO, window 0x8600001,
    mode NotifyNormal, detail NotifyNonlinear


FocusIn event, serial 38, synthetic NO, window 0x6e00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  2   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   


А когда первый раз

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  75  0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0 

а если просто нажать F5 для сравнения

KeyPress event, serial 38, synthetic NO, window 0x8600001,
    root 0x6b5, subw 0x0, time 1549611328, (1196,692), root:(1268,754),
    state 0x0, keycode 71 (keysym 0xffc2, F5), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x8600001,
    root 0x6b5, subw 0x0, time 1549611472, (1196,692), root:(1268,754),
    state 0x0, keycode 71 (keysym 0xffc2, F5), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Psilocybe ★★★★
() автор топика
Последнее исправление: Psilocybe (всего исправлений: 3)
Ответ на: комментарий от Psilocybe

То есть Key эвенты от неё не приходят вообще. Если бы был просто неизвестный код, было бы что-то типа keysym unknown или типа того. Найди evtest и посмотри, какие scancode и keycode она генерит.

Честно говоря, даже не знаю, откуда в иксах берётся этот KeymapNotify. У тебя вообще иксы или вяленый?

alegz ★★★★
()
Ответ на: комментарий от versetty777

Нет такго пакета. У меня Mint Cinnamon если что.

# apt install hid-tools
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
E: Невозможно найти пакет hid-tools

Psilocybe ★★★★
() автор топика
Ответ на: комментарий от alegz

Запустил evtest. Вот что выдает (повырезал обычные клавиши, а то не влазит)

Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x9da product 0x9066 version 0x111
Input device name: "A4TECH USB Device Keyboard"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 1 (KEY_ESC)
...
    Event code 25 (KEY_P)
    Event code 26 (KEY_LEFTBRACE)
    Event code 27 (KEY_RIGHTBRACE)
    Event code 28 (KEY_ENTER)
    Event code 29 (KEY_LEFTCTRL)
    Event code 69 (KEY_NUMLOCK)
...
    Event code 70 (KEY_SCROLLLOCK)
    Event code 71 (KEY_KP7)
    Event code 72 (KEY_KP8)
    Event code 73 (KEY_KP9)
    Event code 74 (KEY_KPMINUS)
    Event code 75 (KEY_KP4)
    Event code 76 (KEY_KP5)
    Event code 77 (KEY_KP6)
    Event code 78 (KEY_KPPLUS)
    Event code 79 (KEY_KP1)
    Event code 80 (KEY_KP2)
    Event code 81 (KEY_KP3)
    Event code 82 (KEY_KP0)
    Event code 83 (KEY_KPDOT)
    Event code 85 (KEY_ZENKAKUHANKAKU)
    Event code 86 (KEY_102ND)
    Event code 87 (KEY_F11)
    Event code 88 (KEY_F12)
    Event code 89 (KEY_RO)
    Event code 90 (KEY_KATAKANA)
    Event code 91 (KEY_HIRAGANA)
    Event code 92 (KEY_HENKAN)
    Event code 93 (KEY_KATAKANAHIRAGANA)
    Event code 94 (KEY_MUHENKAN)
    Event code 95 (KEY_KPJPCOMMA)
    Event code 96 (KEY_KPENTER)
    Event code 97 (KEY_RIGHTCTRL)
    Event code 98 (KEY_KPSLASH)
    Event code 99 (KEY_SYSRQ)
    Event code 100 (KEY_RIGHTALT)
    Event code 102 (KEY_HOME)
    Event code 103 (KEY_UP)
    Event code 104 (KEY_PAGEUP)
    Event code 105 (KEY_LEFT)
    Event code 106 (KEY_RIGHT)
    Event code 107 (KEY_END)
    Event code 108 (KEY_DOWN)
    Event code 109 (KEY_PAGEDOWN)
    Event code 110 (KEY_INSERT)
    Event code 111 (KEY_DELETE)
    Event code 113 (KEY_MUTE)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 116 (KEY_POWER)
    Event code 117 (KEY_KPEQUAL)
    Event code 119 (KEY_PAUSE)
    Event code 121 (KEY_KPCOMMA)
    Event code 122 (KEY_HANGUEL)
    Event code 123 (KEY_HANJA)
    Event code 124 (KEY_YEN)
    Event code 125 (KEY_LEFTMETA)
    Event code 126 (KEY_RIGHTMETA)
    Event code 127 (KEY_COMPOSE)
    Event code 128 (KEY_STOP)
    Event code 129 (KEY_AGAIN)
    Event code 130 (KEY_PROPS)
    Event code 131 (KEY_UNDO)
    Event code 132 (KEY_FRONT)
    Event code 133 (KEY_COPY)
    Event code 134 (KEY_OPEN)
    Event code 135 (KEY_PASTE)
    Event code 136 (KEY_FIND)
    Event code 137 (KEY_CUT)
    Event code 138 (KEY_HELP)
    Event code 139 (KEY_MENU)
    Event code 140 (KEY_CALC)
    Event code 142 (KEY_SLEEP)
    Event code 143 (KEY_WAKEUP)
    Event code 144 (KEY_FILE)
    Event code 148 (KEY_PROG1)
    Event code 150 (KEY_WWW)
    Event code 152 (KEY_SCREENLOCK)
    Event code 155 (KEY_MAIL)
    Event code 156 (KEY_BOOKMARKS)
    Event code 158 (KEY_BACK)
    Event code 159 (KEY_FORWARD)
    Event code 161 (KEY_EJECTCD)
    Event code 163 (KEY_NEXTSONG)
    Event code 164 (KEY_PLAYPAUSE)
    Event code 165 (KEY_PREVIOUSSONG)
    Event code 166 (KEY_STOPCD)
    Event code 167 (KEY_RECORD)
    Event code 168 (KEY_REWIND)
    Event code 169 (KEY_PHONE)
    Event code 171 (KEY_CONFIG)
    Event code 172 (KEY_HOMEPAGE)
    Event code 173 (KEY_REFRESH)
    Event code 174 (KEY_EXIT)
    Event code 177 (KEY_SCROLLUP)
    Event code 178 (KEY_SCROLLDOWN)
    Event code 181 (KEY_NEW)
...
    Event code 206 (KEY_CLOSE)
    Event code 207 (KEY_PLAY)
    Event code 208 (KEY_FASTFORWARD)
    Event code 209 (KEY_BASSBOOST)
    Event code 210 (KEY_PRINT)
    Event code 212 (KEY_CAMERA)
    Event code 216 (KEY_CHAT)
    Event code 217 (KEY_SEARCH)
    Event code 219 (KEY_FINANCE)
    Event code 224 (KEY_BRIGHTNESSDOWN)
    Event code 225 (KEY_BRIGHTNESSUP)
    Event code 227 (KEY_SWITCHVIDEOMODE)
    Event code 228 (KEY_KBDILLUMTOGGLE)
    Event code 229 (KEY_KBDILLUMDOWN)
    Event code 230 (KEY_KBDILLUMUP)
    Event code 234 (KEY_SAVE)
    Event code 235 (KEY_DOCUMENTS)
    Event code 240 (KEY_UNKNOWN)
    Event code 241 (KEY_VIDEO_NEXT)
    Event code 244 (KEY_BRIGHTNESS_ZERO)
    Event code 256 (BTN_0)
    Event code 353 (KEY_SELECT)
    Event code 354 (KEY_GOTO)
    Event code 356 (KEY_POWER2)
    Event code 358 (KEY_INFO)
    Event code 362 (KEY_PROGRAM)
    Event code 366 (KEY_PVR)
    Event code 370 (KEY_SUBTITLE)
    Event code 372 (KEY_ZOOM)
    Event code 374 (KEY_KEYBOARD)
    Event code 375 (KEY_SCREEN)
    Event code 376 (KEY_PC)
    Event code 377 (KEY_TV)
    Event code 378 (KEY_TV2)
    Event code 379 (KEY_VCR)
    Event code 380 (KEY_VCR2)
    Event code 381 (KEY_SAT)
    Event code 383 (KEY_CD)
    Event code 384 (KEY_TAPE)
    Event code 386 (KEY_TUNER)
    Event code 387 (KEY_PLAYER)
    Event code 389 (KEY_DVD)
    Event code 392 (KEY_AUDIO)
    Event code 393 (KEY_VIDEO)
    Event code 396 (KEY_MEMO)
    Event code 397 (KEY_CALENDAR)
    Event code 398 (KEY_RED)
    Event code 399 (KEY_GREEN)
    Event code 400 (KEY_YELLOW)
    Event code 401 (KEY_BLUE)
    Event code 402 (KEY_CHANNELUP)
    Event code 403 (KEY_CHANNELDOWN)
    Event code 405 (KEY_LAST)
    Event code 407 (KEY_NEXT)
    Event code 408 (KEY_RESTART)
    Event code 409 (KEY_SLOW)
    Event code 410 (KEY_SHUFFLE)
    Event code 412 (KEY_PREVIOUS)
    Event code 416 (KEY_VIDEOPHONE)
    Event code 417 (KEY_GAMES)
    Event code 418 (KEY_ZOOMIN)
    Event code 419 (KEY_ZOOMOUT)
    Event code 420 (KEY_ZOOMRESET)
    Event code 421 (KEY_WORDPROCESSOR)
    Event code 422 (KEY_EDITOR)
    Event code 423 (KEY_SPREADSHEET)
    Event code 424 (KEY_GRAPHICSEDITOR)
    Event code 425 (KEY_PRESENTATION)
    Event code 426 (KEY_DATABASE)
    Event code 427 (KEY_NEWS)
    Event code 428 (KEY_VOICEMAIL)
    Event code 429 (KEY_ADDRESSBOOK)
    Event code 430 (KEY_MESSENGER)
    Event code 431 (KEY_DISPLAYTOGGLE)
    Event code 432 (KEY_SPELLCHECK)
    Event code 433 (KEY_LOGOFF)
    Event code 438 (KEY_CONTEXT_MENU)
    Event code 439 (KEY_MEDIA_REPEAT)
    Event code 442 (KEY_IMAGES)
    Event code 576 (KEY_BUTTONCONFIG)
    Event code 577 (KEY_TASKMANAGER)
    Event code 578 (KEY_JOURNAL)
    Event code 579 (KEY_CONTROLPANEL)
    Event code 580 (KEY_APPSELECT)
    Event code 581 (KEY_SCREENSAVER)
    Event code 582 (KEY_VOICECOMMAND)
    Event code 583 (KEY_ASSISTANT)
    Event code 585 (?)
    Event code 586 (?)
    Event code 592 (KEY_BRIGHTNESS_MIN)
    Event code 593 (KEY_BRIGHTNESS_MAX)
  Event type 2 (EV_REL)
    Event code 6 (REL_HWHEEL)
    Event code 12 (REL_HWHEEL_HI_RES)
  Event type 3 (EV_ABS)
    Event code 32 (ABS_VOLUME)
      Value      0
      Min        0
      Max      572
    Event code 40 (ABS_MISC)
      Value      0
      Min        0
      Max      183
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
  Event type 17 (EV_LED)
    Event code 0 (LED_NUML) state 0
    Event code 1 (LED_CAPSL) state 0
    Event code 2 (LED_SCROLLL) state 0
    Event code 3 (LED_COMPOSE) state 0
    Event code 4 (LED_KANA) state 0
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)

Psilocybe ★★★★
() автор топика
Ответ на: комментарий от Psilocybe

Ну так нажимал? Keycode приходит? Или вообще никакой реакции? Если так, тогда сложнее, тут на уровне модулей ядра уже ковыряться надо…

Ещё, кстати — она видится как одно input/event устройство? Потому что, скажем, моя Microsoft Natural 4000 как два — одно с обычными клавишами, второе — с дополнительными. Если так, то выбирай в evtest именно то, которое выдаёт что-то при нажатии этой клавиши, если такое вообще есть.

alegz ★★★★
()
Ответ на: комментарий от alegz

Попутешествовал по настройкам Cinnamon и выяснил, что комбинацию перехватывает апплет группировки окон, переопределил там клавишу. Сама клавиатура превращает переключение языка в комбинацию Super_L+Space

Вот что возвращает xev

KeyPress event, serial 38, synthetic NO, window 0x5800001,
    root 0x6b5, subw 0x0, time 1750261, (454,850), root:(578,939),
    state 0x40, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XmbLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x5800001,
    root 0x6b5, subw 0x0, time 1750381, (454,850), root:(578,939),
    state 0x40, keycode 65 (keysym 0x20, space), same_screen YES,
    XLookupString gives 1 bytes: (20) " "
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x5800001,
    root 0x6b5, subw 0x0, time 1751397, (454,850), root:(578,939),
    state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

Осталось это как-то повесить на переключение раскладки.

Psilocybe ★★★★
() автор топика
Ответ на: комментарий от papin-aziat

У тебя какая клавиатура, такая для девятипальцевого набора, с гигантским пробелом шириной в пяток нормальных клавиш? Печатать нормально как печатал, девятью оставшимися пальцами.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Я уж какого-то откровения ожидал, но гора родила мышь.

Удерживая «stateless-модификатор раскладки» нажатым, можно напечатать одно-два слова, но использовать такой подход как единственный способ набора — это извращение.

debugger ★★★★★
()
Ответ на: комментарий от debugger

Смотря где он у тебя и сколько клавиш приходится на каждый большой палец на твоей клавиатуре.

Ну и опять же, кто пишет на русском более пары предложений за раз?

t184256 ★★★★★
()
Ответ на: комментарий от Psilocybe

Super+Space это новое кросс-платформенное клавиатурное сочетание, поддерживается в Windows, macOS, Ubuntu, Fedora, Android из коробки. Видимо в том DE которым вы пользуетесь об этом ещё не знают.

EXL ★★★★★
()