Ένα από τα σπαστικά είναι πως σήμερα τα πληκτρολόγια δεν έχουν ξεχωριστό αριθμητικό πληκτρολόγιο. Ακόμα ποιο σπαστικό είναι να δώσει το σωστό «κόμμα» όταν πατηθεί το πλήκτρο ..
Το ποιο θα πρέπει να είναι το σωστό κόμμα είναι μεγάλη ιστορία και εξαρτάται τόσο από το πρόγραμμα, όσο και από τις ρυθμίσεις εντοποιότητας του συστήματος. Θεωρητικό ζήτημα, το θέμα είναι πως στο λογισμικό φύλλο δεν παίρνει το σωστό «κόμμα», μπορώ να κάνω κάτι; Ναι, εδώ είμαστε
Δείτε μια καλύτερη λύση εδώ Ρύθμιση του πλήκτρου «κόμμα» στο αριθμητικό πληκτρολόγιο - #5 από Asfodelus και δοκιμάστε αυτό πρώτα.
Η λύση (πρωταρχικά)
Κάτω από τα καπάκια, κάτω από τα χαλιά υπάρχει πολύ βρωμιά. Και κάτω από το καπάκι του Linux/X11/Wayland θα βρούμε πολύ σκόνη στο κομμάτι της διαχείρισης του πληκτρολογίου. Τόση πολύ που απλά προσθέτουμε πράγματα και δεν αφαιρούμε και δεν καθαρίζουμε. Βλέπουμε το χάλι, αλλά ελπίζουμε να βρεθεί κάποιος άλλος να κάνει την βρομοδουλειά. Αρκετά με την γκρίνια. Αν ανοίξουμε το αρχείο των ελληνικών θα βρούμε μέσα μια γραμμή include "kpdl(comma)"
. Μια τσαπατσούλικη λύση είναι να το αλλάξουμε. Αλλά υπάρχει ήδη ένας γνωστός μηχανισμός. Μπορούμε να το αλλάξουμε στις ρυθμίσεις που είναι σε μια μοντέρνα διανομή στο αρχείο /etc/default/keyboard
. Θα το αλλάξουμε και θα το κάνουμε να γράφει
ules: evdev
model: ...
layout: us,gr
variant: ,,
options: terminate:ctrl_alt_bksp, ... ,kpdl:dot
Αλλά αν θέλεις κάτι προσωρινά; Τότε, ε πάλι τα γνωστά
setxkbmap -option *kpdl:dot
H λύση
Το πρόβλημα με την πρώτη λύση είναι πως δεν είναι ευέλικτη, το πρόβλημα με την δεύτερη λύση είναι πως δουλεύει μόνο την πρώτη φορά. Η εντολή setxkbmap
δεν καθαρίζει τους παλιούς ορισμούς. Οπότε η μόνη λύση; Λίγη Python . Βάλτε τον κώδικα που θα βρείτε παρακάτω σε ένα αρχείο /usr/local/bin/kbd-options
και κάντε το εκτελέσιμο.
Αν θέλεις το . να γράφει , δώσε
kbd-options kpdl:comma
Αν θέλεις το . να γράφει . δώσε
kbd-options kpdl:dot
Και δεν υπάρχει πλέον κανένα πρόβλημα
Ο κώδικας
#!/usr/bin/python3
# Usefull
# keypad:pointerkeys Shift + Num Lock enables PointerKeys
# kpdl:dot Legacy key with dot
# kpdl:comma Legacy key with comma
setxkbmap='/usr/bin/setxkbmap'
import subprocess
import sys
if len(sys.argv) == 1 :
subprocess.run([setxkbmap, '-query'])
sys.exit()
lines = subprocess.run([setxkbmap, '-query'], stdout=subprocess.PIPE).stdout.decode('utf-8')
xkb_options={}
for line in list(filter(None, lines.split("\n"))):
t = line.split();
xkb_options[t[0].split(":")[0]]= t[1]
option_parse=sys.argv[1].split(":")
option_list = xkb_options['options'].split(",")
new_options = list(filter(lambda x: not x.startswith(option_parse[0]),option_list))
new_options.append(sys.argv[1])
subprocess.run([setxkbmap, '-option'])
subprocess.run([setxkbmap, '-option', ','.join(new_options)])
subprocess.run([setxkbmap, '-query'])