@@ -60,6 +60,9 @@ import signal
60
60
import os
61
61
import sys
62
62
from datetime import datetime
63
+ from collections import deque
64
+ import re
65
+ import fileinput
63
66
64
67
try:
65
68
from evdev import uinput, UInput, ecodes as e
@@ -69,19 +72,50 @@ except ImportError:
69
72
import digitalio
70
73
import board
71
74
75
+ def detect_rotation():
76
+ rotation_pattern = "^dtoverlay=drm-minipitft13,rotation=([0-9]+)"
77
+ hdmi_pattern = "^display_hdmi_rotate=([0-9])"
78
+ param_rotation = None
79
+ param_hdmi = None
80
+ for line in fileinput.FileInput("/boot/config.txt"):
81
+ rotation_match = re.search(rotation_pattern, line)
82
+ hdmi_match = re.search(hdmi_pattern, line)
83
+ if rotation_match:
84
+ param_rotation = int(rotation_match.group(1))
85
+ if hdmi_match:
86
+ param_hdmi = int(hdmi_match.group(1))
87
+ if param_rotation is not None and param_hdmi is not None:
88
+ break
89
+ if param_hdmi == 3:
90
+ return 180
91
+ if param_hdmi == 2:
92
+ return 270
93
+ if param_hdmi == 1:
94
+ return 0
95
+ return param_rotation
96
+
97
+ arrow_pins = deque((
98
+ board.D23, # up
99
+ board.D24, # right
100
+ board.D27, # down
101
+ board.D22, # left
102
+ ))
103
+
104
+ arrow_pins.rotate((detect_rotation() // 90) - 1)
105
+
72
106
DEBUG = False
73
107
BOUNCE_TIME = 0.01 # Debounce time in seconds
74
108
POWEROFF_TIMEOUT = 5
75
109
76
110
KEYS= [ # EDIT KEYCODES IN THIS TABLE TO YOUR PREFERENCES:
77
111
# See /usr/include/linux/input.h for keycode names
78
112
# Keyboard Action (tuple = press together, no repeat)
79
- (board.D17, (e.KEY_K,)), # button - play/pause
80
- (board.D16, (e.KEY_LEFTCTRL, e.KEY_R)), # push stick - reload
81
- (board.D22 , (e.KEY_LEFTSHIFT, e.KEY_P)), # left - previous in playlist
82
- (board.D24 , (e.KEY_LEFTSHIFT, e.KEY_N)), # right - next in playlist
83
- (board.D23 , e.KEY_EQUAL), # up - volume up
84
- (board.D27 , e.KEY_MINUS), # down - volume down
113
+ (board.D17, (e.KEY_K,)), # button - play/pause
114
+ (board.D16, (e.KEY_LEFTCTRL, e.KEY_R)), # push stick - reload
115
+ (arrow_pins[3] , (e.KEY_LEFTSHIFT, e.KEY_P)), # left - previous in playlist
116
+ (arrow_pins[1] , (e.KEY_LEFTSHIFT, e.KEY_N)), # right - next in playlist
117
+ (arrow_pins[0] , e.KEY_EQUAL), # up - volume up
118
+ (arrow_pins[2] , e.KEY_MINUS), # down - volume down
85
119
]
86
120
87
121
key_values = set()
0 commit comments