# the value returned from EXTRA M? button_flag_byte = 127 # bit masks mask_at = 0x03 # 00000011 mask_home = 0x0C # 00001100 mask_js = 0x30 # 00110000 mask_zero = 0xC0 # 11000000 # get the button states from button_flag_byte btn_at = button_flag_byte & mask_at btn_home = (button_flag_byte & mask_home) >> 2 btn_js = (button_flag_byte & mask_js) >> 4 btn_zero = (button_flag_byte & mask_zero) >> 6 # show the results in decimal and binary print(f"{button_flag_byte = } (binary {button_flag_byte :08b})") print(f"{btn_at = } (binary {btn_at:02b})") print(f"{btn_home = } (binary {btn_home:02b})") print(f"{btn_js = } (binary {btn_js:02b})") print(f"{btn_zero = } (binary {btn_zero:02b})") # console output: # button_flag_byte = 127 (binary 01111111) # btn_at = 3 (binary 11) # btn_home = 3 (binary 11) # btn_js = 3 (binary 11) # btn_zero = 1 (binary 01)