9

My new laptop (Dell Inspiron 5578) has no numeric pad. Many laptops without dedicated numpad keys have numpad accessible through Fn, but not this one. When I run xev and try to use traditional Fn combos (e.g., Fn+J for 1), it sees no event. And the numbers are not even on the labels.

AFAIU, I cannot create any shortcut with the Fn key, because Fn is not passed to the OS. But I could theoretically use Alt_L+Super_L instead. The question is how to do it properly. I'd prefer to do it on a lower level than keyboard layout in order to work well with all the VMs, even with non-Linux ones.

Environment: Qubes OS. The host part is based on Fedora.

I've tried:

  • Bind an xdotool command via Xfce key shortcut. This produces various weird results: The command (xdotool key KP_1 and variations) usually works OK, but not when invoked by shortcut. When invoked by shortcut, the problem probably is that modifier keys are pressed at the time. I've tried various modifications (--clearmodifiers, keyup for modifiers etc.), none of them works well.
  • Do the same with autokey. I got some freezes of autokey.

Non-solutions:

  • Use external numpad/keyboard: While I have a numpad (sort of) on my external keyboard, I'd like to have one even on the internal one, e.g., when travelling and it is impossible or at least uncomfortable to use the external keyboard.
  • Use number row: In Czech layout, the number row is used primarily for accented letters. The layout I use (extracs variant of CShack) does not have numbers in the “number row” at all.
  • Buy a different laptop: It was hard to find a laptop satisfying my various requirements.
  • 1
    Read up on xkb, add a custom Alt-L + Super-L level. Also run evtest to look for a Fn event, and if that doesn't work either, look at the HID descriptor and raw HID event. See dmesg to find associated hid devices. – dirkt May 22 '17 at 15:19
  • @dirkt Using XKB looks like defining a custom keylayout. Which is better than nothing, but it is not a preferred solution, as I would have to do the same for every VM (or VM tempolates) and this is not going to work under non-Linux VMs. I'll try evtest, but I am unsure if it will work with keyboard that is being used. – v6ak May 22 '17 at 15:38
  • Are you attached to Alt_L + Super_L? You could use AltGr or Shift + AltGr with xmodmap(1) – Fox May 22 '17 at 17:17
  • If your VM (which one?) doesn't pass on X events, but insists on direct keyboard passthrough, you can probably fake a keyboard by making your own /dev/input/eventX or HID source. This will require programming. But if it works with xdotool, it should work with xkb or xmodmap. And yes, assigning a single key to Mode_Switch or ISO_Level3_Shift (AltGr by default) will be easier. – dirkt May 22 '17 at 17:38
  • 1
    The problem with AltGr or AltGr+Shift is it is already used. I don't insist on Alt_L+Super_L, but it looks as the best choice: They are next to each other on the internal keyboard and there is a little chance to hide some keyboard shortcut. And they can be pressed with left hand. So, it looks like ideal combination, – v6ak May 22 '17 at 18:30
0

I think the right way to go here is to create your own keyboard layout. Indeed you will have to do so for every VM and every operating system but you only have to deploy it on your template VMs.

Making them is actually not that difficult, depending on your point of view even surprisingly easy. For linux you are on the right track. For windows just use autohotkey.

(Or just ditch your current layout and try neo2. It's optimized for German but the layout in general is excellent and you get out of the box support on linux and a pretty good autohotkey implementation on windows. I've been using it for years. The biggest downside is that the layout is so exotic you often have to customize shortcuts in programs to make them usable again, e.g. hjkl in vim is totally fucked up.)

  • I have made a custom layout, but it is still quite imperfect. It would be imperfect even if it had a Windows version. Installation to templateVMs is not an issue, but other machines are tricky. First, RDP does not honour my local keyboard layout. Second, it is some overhead for various short-lived Windows VMs (e.g., IE VMS). – v6ak Oct 18 '18 at 11:43
  • @v6ak Short lived VMs should inherit the setup of the template so that should not be an issue. – Franklin Oct 18 '18 at 12:04
  • That's true for template-based VMs, but not for VMs you have just downloaded. And also not for remote VMs that are not managed by you. I am relatively OK with standard US layout (when I don't need diacritics, it is mostly compatible with CShack), but using number row is not much natural for me. – v6ak Oct 18 '18 at 12:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.