How can I swap the Fn key for a Microsoft All-in-One Media keyboard?

5,852

Solution 1

Just press Fn-Capslock. And everything will be just fine.

Solution 2

The fn key is set by default. I mean if you want that fn key shouldn't be required for common functionalities of " F1, F2, F3,......." keys, follow these steps:

  1. Go to BIOS settings

  2. Navigate to the System Configuration option

  3. Then navigate to the Action Keys Mode option, and then press the "enter" key to display the Enable / Disable menu

  4. Disable that option

Share:
5,852

Related videos on Youtube

A.K.
Author by

A.K.

Updated on September 18, 2022

Comments

  • A.K.
    A.K. over 1 year

    I have a Microsoft Keyboard N9Z model. I am using it on Ubuntu 14.04.

    The problem is, F1, F2, F... keys are by default act as media player keys. Fn key is required to be pressed to get regular function key behavior. For example to get help you need to press Fn + F1 together.

    There is a way to reverse Fn key behavior for Apple devices explained here, basically it suggest to issue following command:

    $ echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode
    

    However there is no hid_apple folder (of course) in my system and I cannot create a fnmode file under /sys/module/hid_apple/parameters/ folder.

    Update:

    Output of lsusb

    $ sudo lsusb -v -d 045e:
    [sudo] password for destan: 
    
    Bus 001 Device 003: ID 045e:0800 Microsoft Corp. 
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x045e Microsoft Corp.
      idProduct          0x0800 
      bcdDevice            9.34
      iManufacturer           1 Microsoft
      iProduct                2 Microsoft® Nano Transceiver v2.0
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           84
        bNumInterfaces          3
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.11
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      57
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0008  1x 8 bytes
            bInterval               4
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      2 Mouse
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.11
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength     223
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               1
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      0 No Subclass
          bInterfaceProtocol      0 None
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.11
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength     319
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0020  1x 32 bytes
            bInterval               1
    Device Status:     0x0000
      (Bus Powered)
    

    Is there a way to do this for any other keyboard?

    • j0h
      j0h about 9 years
    • Lekensteyn
      Lekensteyn about 9 years
      The "non-apple computer keyboards" vary greatly in their features, so it is not really helpful. USB HID keyboards may have an additional method to switch the key state (which can be exposed by the driver as you demonstrate with hid_apple). Can you add the output of the sudo lsusb -v -d 045e: command to your question (it will display properties for Microsoft devices, limit the output to your keyboard if you have multiple entries).
    • A.K.
      A.K. about 9 years
      @Lekensteyn I've added the output. I have only one Microsoft device which is the keyboard.
  • Brandin
    Brandin about 8 years
    I think the OP is looking for the way to do this in software (i.e. to enable this mode without physically pressing any key, i.e. to enable this mode without having to remember to press Fn - Capslock (which no one in their right mind would have guessed))
  • A.K.
    A.K. over 6 years
    no, this only works for built-in keyboards, not for external keyboards. BIOS settings can have no effect on this case because the external keyboard itself determines the keycode that it sends.