You are not logged in.

#1 2018-01-15 16:02:21

danrot
Member
Registered: 2017-12-30
Posts: 19
Website

Apple Bluetooth keyboard is not configureable via modprobe.d directory

I have a macbook pro with ArchLinux installed. I've read the Wiki Article about Apple Keyboard, and put the following in /etc/modprobe.d/apple_keyboard.conf:

options hid_apple fnmode=2 isolayout=0 swap_opt_cmd=1

All these options apply to the internal keyboard of my macbook, but it seems like fnmode is the only one working with my external bluetooth keyboard, but the opt and cmd key are not swaped and neither the iso layout is used (most annoying is the fact the < and ^ are swaped).

I have also already tried to repair the keyboard without any success. What am I missing? What do I have to do to apply these settings also to my bluetooth apple keyboard?

Offline

#2 2018-02-08 21:53:52

danrot
Member
Registered: 2017-12-30
Posts: 19
Website

Re: Apple Bluetooth keyboard is not configureable via modprobe.d directory

I have already found out that after connecting the keyboard  executing `dmesg` shows which driver is used. The message being shown after connecting the bluetooth keyboard is the following:

[56929.073859] hid-generic 0005:004C:026C.000B: unknown main item tag 0x0
[56929.073921] input: Magic Keyboard with Numeric Keypad as /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8.3/1-8.3:1.0/bluetooth/hci0/hci0:11/0005:004C:026C.000B/input/input24
[56929.074084] hid-generic 0005:004C:026C.000B: input,hidraw2: BLUETOOTH HID v0.80 Keyboard [Magic Keyboard with Numeric Keypad] on 34:36:3b:ca:dd:71

It seems to me as if the magic keyboard is used with the `hid-generic` driver instead of `hid-apple`, that would explain why the above options don't work. Isn't there any way to tell the system to use that specific keyboard with `hid-apple` instead?

Offline

#3 2018-02-25 19:08:43

danrot
Member
Registered: 2017-12-30
Posts: 19
Website

Re: Apple Bluetooth keyboard is not configureable via modprobe.d directory

I have tried now to solve this by remapping the scancodes on my own as described in this article: https://wiki.archlinux.org/index.php/Ma … o_keycodes

First I've used evemu-describe to get information about the keyboard:

daniel@macbook ~ $ sudo evemu-describe                                                                                                                        
[sudo] password for daniel:                                                                                                                                   
Available devices:                                                                                                                                            
/dev/input/event0:      Lid Switch                                                                                                                            
/dev/input/event1:      Power Button                                                                                                                          
/dev/input/event2:      Sleep Button                                                                                                                          
/dev/input/event3:      Power Button                                                                                                                          
/dev/input/event4:      PC Speaker                                                                                                                            
/dev/input/event5:      HDA Intel PCH Mic                                                                                                                     
/dev/input/event6:      HDA Intel PCH Headphone                                                                                                               
/dev/input/event7:      HDA Intel PCH SPDIF                                                                                                                   
/dev/input/event8:      bcm5974                                                                                                                               
/dev/input/event9:      Apple Inc. Apple Internal Keyboard / Trackpad                                                                                         
/dev/input/event10:     HDA Intel HDMI HDMI/DP,pcm=3                                                                                                          
/dev/input/event11:     Video Bus                                                                                                                             
/dev/input/event12:     HDA Intel HDMI HDMI/DP,pcm=7                                                                                                          
/dev/input/event13:     HDA Intel HDMI HDMI/DP,pcm=8                                                                                                          
/dev/input/event14:     HDA Intel HDMI HDMI/DP,pcm=9                                                                                                          
/dev/input/event15:     HDA Intel HDMI HDMI/DP,pcm=10                                                                                                         
/dev/input/event16:     Magic Keyboard with Numeric Keypad                                                                                                    
Select the device event number [0-16]: 16                                                                                                                     
# EVEMU 1.3                                                                                                                                                   
# Kernel: 4.15.3-2-ARCH                                                                                                                                       
# DMI: dmi:bvnAppleInc.:bvrMBP112.88Z.0142.B00.1708080655:bd08/08/2017:svnAppleInc.:pnMacBookPro11,2:pvr1.0:rvnAppleInc.:rnMac-3CBD00234E554E41:rvrMacBookPro1
1,2:cvnAppleInc.:ct10:cvrMac-3CBD00234E554E41:                                                                                                                
# Input device name: "Magic Keyboard with Numeric Keypad"                                                                                                     
# Input device ID: bus 0x05 vendor 0x4c product 0x26c version 0x80                                                                                            
# Supported events:                                                                                                                                           
#   Event type 0 (EV_SYN)                                                                                                                                     
#     Event code 0 (SYN_REPORT)                                                                                                                               
#     Event code 1 (SYN_CONFIG)                                                                                                                               
#     Event code 2 (SYN_MT_REPORT)                                                                                                                            
#     Event code 3 (SYN_DROPPED)                                                                                                                              
#     Event code 4 ((null))                                                                                                                                   
#     Event code 5 ((null))                                                                                                                                   
#     Event code 6 ((null))                                                                                                                                   
#     Event code 7 ((null))                                                                                                                                   
#     Event code 8 ((null))                                                                                                                                   
#     Event code 9 ((null))                                                                                                                                   
#     Event code 10 ((null))                                                                                                                                  
#     Event code 11 ((null))                                                                                                                                  
#     Event code 12 ((null))                                                                                                                                  
#     Event code 13 ((null))                                                                                                                                  
#     Event code 14 ((null))
#     Event code 15 (SYN_MAX)                                                                                                                        [176/221]
#   Event type 1 (EV_KEY)
#     Event code 1 (KEY_ESC)
#     Event code 2 (KEY_1)
#     Event code 3 (KEY_2)
#     Event code 4 (KEY_3)
#     Event code 5 (KEY_4)
#     Event code 6 (KEY_5)
#     Event code 7 (KEY_6)
#     Event code 8 (KEY_7)
#     Event code 9 (KEY_8)
#     Event code 10 (KEY_9)
#     Event code 11 (KEY_0)
#     Event code 12 (KEY_MINUS)
#     Event code 13 (KEY_EQUAL)
#     Event code 14 (KEY_BACKSPACE)
#     Event code 15 (KEY_TAB)
#     Event code 16 (KEY_Q)
#     Event code 17 (KEY_W)
#     Event code 18 (KEY_E)
#     Event code 19 (KEY_R)
#     Event code 20 (KEY_T)
#     Event code 21 (KEY_Y)
#     Event code 22 (KEY_U)
#     Event code 23 (KEY_I)
#     Event code 24 (KEY_O)
#     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 30 (KEY_A)
#     Event code 31 (KEY_S)
#     Event code 32 (KEY_D)
#     Event code 33 (KEY_F)
#     Event code 34 (KEY_G)
#     Event code 35 (KEY_H)
#     Event code 36 (KEY_J)
#     Event code 37 (KEY_K)
#     Event code 38 (KEY_L)
#     Event code 39 (KEY_SEMICOLON)
#     Event code 40 (KEY_APOSTROPHE)
#     Event code 41 (KEY_GRAVE)
#     Event code 42 (KEY_LEFTSHIFT)
#     Event code 43 (KEY_BACKSLASH)
#     Event code 44 (KEY_Z)                                                                                                                          [131/221]
#     Event code 45 (KEY_X)
#     Event code 46 (KEY_C)
#     Event code 47 (KEY_V)
#     Event code 48 (KEY_B)
#     Event code 49 (KEY_N)
#     Event code 50 (KEY_M)
#     Event code 51 (KEY_COMMA)
#     Event code 52 (KEY_DOT)
#     Event code 53 (KEY_SLASH)
#     Event code 54 (KEY_RIGHTSHIFT)
#     Event code 55 (KEY_KPASTERISK)
#     Event code 56 (KEY_LEFTALT)
#     Event code 57 (KEY_SPACE)
#     Event code 58 (KEY_CAPSLOCK)
#     Event code 59 (KEY_F1)
#     Event code 60 (KEY_F2)
#     Event code 61 (KEY_F3)
#     Event code 62 (KEY_F4)
#     Event code 63 (KEY_F5)
#     Event code 64 (KEY_F6)
#     Event code 65 (KEY_F7)
#     Event code 66 (KEY_F8)
#     Event code 67 (KEY_F9)
#     Event code 68 (KEY_F10)
#     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)                                                                                                                    [86/221]
#     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_HANGEUL)
#     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 140 (KEY_CALC)                                                                                                                       [41/221]
#     Event code 142 (KEY_SLEEP)
#     Event code 150 (KEY_WWW)
#     Event code 152 (KEY_COFFEE)
#     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 173 (KEY_REFRESH)
#     Event code 176 (KEY_EDIT)
#     Event code 177 (KEY_SCROLLUP)
#     Event code 178 (KEY_SCROLLDOWN)
#     Event code 179 (KEY_KPLEFTPAREN)
#     Event code 180 (KEY_KPRIGHTPAREN)
#     Event code 183 (KEY_F13)
#     Event code 184 (KEY_F14)
#     Event code 185 (KEY_F15)
#     Event code 186 (KEY_F16)
#     Event code 187 (KEY_F17)
#     Event code 188 (KEY_F18)
#     Event code 189 (KEY_F19)
#     Event code 190 (KEY_F20)
#     Event code 191 (KEY_F21)
#     Event code 192 (KEY_F22)
#     Event code 193 (KEY_F23)
#     Event code 194 (KEY_F24)
#     Event code 224 (KEY_BRIGHTNESSDOWN)
#     Event code 240 (KEY_UNKNOWN)
#     Event code 256 (BTN_0)
#     Event code 257 (BTN_1)
#     Event code 258 (BTN_2)
#   Event type 3 (EV_ABS)
#     Event code 40 (ABS_MISC)
#       Value        7
#       Min          0
#       Max        255
#       Fuzz         0
#       Flat         0
#       Resolution   0
#   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
#   Event type 20 (EV_REP)
#     Event code 0 (REP_DELAY)
#     Event code 1 (REP_MAX)
# Properties:
N: Magic Keyboard with Numeric Keypad
I: 0005 004c 026c 0080
P: 00 00 00 00 00 00 00 00
B: 00 0b 00 00 00 00 00 00 00
B: 01 fe ff ff ff ff ff ff ff
B: 01 ff ff ef ff df ff be fe
B: 01 ff 57 40 c1 7a 20 9f ff
B: 01 07 00 00 00 01 00 01 00
B: 01 07 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 01 00 00 00 00 00 00 00 00
B: 02 00 00 00 00 00 00 00 00
B: 03 00 00 00 00 00 01 00 00
B: 04 10 00 00 00 00 00 00 00
B: 05 00 00 00 00 00 00 00 00
B: 11 1f 00 00 00 00 00 00 00
B: 12 00 00 00 00 00 00 00 00
B: 14 03 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
B: 15 00 00 00 00 00 00 00 00
A: 28 0 255 0 0 0

Based on this I added the following line to the new file /etc/udev/hwdb.d/magickeyboard.hwdb

evdev:input:b0005v004cp026Ce0080-*
 KEYBOARD_KEY_29=102nd
 KEYBOARD_KEY_56=grave

Afterwards I tried to execute the following commands, and as I understand the wiki the keyboard layout should be updated then:

daniel@macbook ~ $ sudo systemd-hwdb update
daniel@macbook ~ $ sudo udevadm trigger

But the keys are still not swapped. Any idea what's going wrong here?

Offline

#4 2019-10-23 20:06:47

pavelruban
Member
Registered: 2019-10-23
Posts: 1

Re: Apple Bluetooth keyboard is not configureable via modprobe.d directory

bump,

I was able to make my fn button work, but hid_generic is used when you connect your keyboard through bluetooth, it's ok when it's connected via usb,

I found patch that was made for another distribuive, can we have some solution for this, the reason is that media keys doesn't send any scancodes, so I can't map scancode to key code & key syms.

link to patch: https://bugzilla.kernel.org/show_bug.cgi?id=99881#c41
initial discussion: https://unix.stackexchange.com/question … board-2015

Offline

#5 2019-10-23 22:33:28

2ManyDogs
Forum Fellow
Registered: 2012-01-15
Posts: 4,645

Re: Apple Bluetooth keyboard is not configureable via modprobe.d directory

pavelruban wrote:

bump,

Please do not necrobump.

Closing.

Offline

Board footer

Powered by FluxBB