From d33cc0e5fee2eabcca4476539a1a9b6cea7eec77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 16 May 2021 18:00:27 +0200 Subject: [PATCH] Set underline on the first hardware keycode issue10306 review338161002 --- tryton/common/underline.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tryton/common/underline.py b/tryton/common/underline.py index e62218cbb5..076962d9c3 100644 --- a/tryton/common/underline.py +++ b/tryton/common/underline.py @@ -1,7 +1,22 @@ # This file is part of Tryton. The COPYRIGHT file at the top level of # this repository contains the full copyright notices and license terms. +from gi.repository import Gdk + + +def find_hardware_keycode(string): + keymap = Gdk.Keymap.get_for_display(Gdk.Display.get_default()) + for i, c in enumerate(string): + found, keys = keymap.get_entries_for_keyval( + Gdk.unicode_to_keyval(ord(c))) + if found: + return i + return -1 def set_underline(label): "Set underscore for mnemonic accelerator" - return '_' + label.replace('_', '__') + label = label.replace('_', '__') + position = find_hardware_keycode(label) + if position >= 0: + label = label[:position] + '_' + label[position:] + return label